经典文献阅读之--i-Octree(用于最近邻搜索的快速、轻量级和动态的八叉树)

0. 简介

在众多机器人应用中,通过最近邻搜索建立新采集点与历史累积数据(即地图)之间的对应关系至关重要。然而,静态树数据结构不足以实时处理大型且动态增长的地图。为了解决这个问题,我们在文中《i-Octree: A Fast, Lightweight, and Dynamic Octree for Proximity Search》提出了i-Octree,一个动态八叉树数据结构,它既支持快速最近邻搜索,也支持实时动态更新,如点插入、删除和树上下采样。i-Octree基于叶节点的八叉树构建,并具有两个关键特性:一种局部空间连续的存储策略,允许快速访问点同时最小化内存使用;以及局部树上更新,与现有的静态或动态树结构相比,显著减少了计算时间。实验表明,i-Octree通过平均在真实世界开放数据集上实现19%的运行时间减少,超越了当今最先进的方法。相关代码已经在Github上开源了


1. 主要贡献

  1. 在本文中,我们提出了一种称为i-Octree的动态八叉树结构,它能够用新点增量更新八叉树,并实现快速的最近邻搜索(NNS)。
  2. 此外,我们的i-Octree在时间和内存效率上均表现出色,适应各种类型的点,并允许进行树上下采样和按盒删除。
  3. 我们在随机数据和真实世界开放数据集上进行验证实验,以评估i-Octree的有效性。在随机数据实验中,与最新提出的增量k-d树(即ikd-Tree[9])相比,我们的i-Octree在运行时间上展现了显著改进。具体来说,它在构建树的运行时间上减少了64%,在点插入上减少了66%,在KNN搜索上减少了30%,在半径邻居搜索上减少了56%。此外,当应用于基于LiDAR的SLAM的真实世界数据时,i-Octree展示了显著的时间性能提升。它的速度是原始方法的两倍多,同时通常保持更高的精度水平。

2. i-Octree的设计与实现

i-Octree以序列化点云作为输入,目标有两个:动态维护一个全局地图并在该地图上执行快速的最近邻搜索(即,KNN搜索和半径邻居搜索)。图1展示了i-Octree的典型应用场景。范围传感器持续感知周围环境,并定期生成序列化的3D范围数据。利用范围数据的初始扫描来构建i-Octree并定义全局坐标框架。随后,i-Octree便能通过KNN搜索或半径邻居搜索,建立新到达数据与历史数据之间的对应关系。基于这些对应关系,可以估算新数据的姿态,并将带有姿态的3D点添加到i-Octree中。为了防止i-Octree中的地图大小无限制地增长,只保持以当前位置为中心的大型本地区域(即,与轴对齐的盒子)内的地图点。接下来,我们首先描述i-Octree的数据结构和构造方法,然后重点讨论动态更新和最近邻搜索。

在这里插入图片描述

图1. 在测距中使用i-Octree的示例。i-Octree和测距技术协同工作,以估算从范围传感器获得的3D数据的姿态。i-Octree提供了一个稳健且高效的数据结构,用于存储和查询3D数据,而测距技术则使得数据点的姿态估算成为可能。

3. 数据结构和构建

…详情请参照古月居

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/589159.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HarmonyOS NEXT应用开发之MVVM模式

应用通过状态去渲染更新UI是程序设计中相对复杂,但又十分重要的,往往决定了应用程序的性能。程序的状态数据通常包含了数组、对象,或者是嵌套对象组合而成。在这些情况下,ArkUI采取MVVM Model View ViewModel模式,其…

使用deepspeed小记

1. 减少显存占用的历程忠告 医学图像经常很大,所以训练模型有时候会有难度,但是现在找到了很多减少显存的方法。 不知道为什么,使用transformers的trainer库确确实实会减少显存的占用,即使没有使用deepspeed,占用的显…

nginx与tomcat的区别?

关于nginx和tomcat的概念 网上有很多关于nginx和tomcat是什么东西的定义,我总结了一下: tomcat是Web服务器、HTTP服务器、应用服务器、Servlet容器、web容器。 Nginx是Web服务器、HTTP服务器、正向/反向代理服务器,。 这里有两个概念是交叉的&#xff…

网络编程套接字应用分享【Linux C/C++ 】【UDP应用 | TCP应用 | TCP线程池小项目】

目录 前提知识 1. 理解源ip,目的ip和Macip 2. 端口号 3. 初识TCP,UDP协议 4. 网络字节序 5. socket 编程 sockaddr类型 一,基于udp协议编程 1. socket——创建套接字 2. bind——将套接字强绑定 3. recvfrom——接受数据 4. s…

深入探索:主流低代码开发平台的应用场景及开发流程

前言: 2014年,全球权威资讯机构 Forrester 首次在报告中引入了低代码的概念,放眼彼时的中国市场,低代码这一名词还鲜为人知。 直到近几年,随着国家积极推动数字经济,大力扶持企业数字化发展《加强数字化发…

34.Python从入门到精通—Python3 正则表达式检索和替换

34.从入门到精通:Python3 正则表达式检索和替换 repl 参数是一个函数 正则表达式对象 正则表达式修饰符 - 可选标志 正则表达式模式* 正则表达式实例 检索和替换repl 参数是一个函数正则表达式对象正则表达式修饰符 - 可选标志正则表达式模式*正则表达式实例 检索和…

Java中的可变字符串

Java中的可变字符串 一、什么是可变字符串二、可变字符串的使用场景以及使用步骤1.新建一个可变字符串2.可变字符串的一系列方法 一、什么是可变字符串 可变字符串是Java.lang包下的 在我们学习到JDBC的时候需要将原有的sql语句根据不同的差异添加一段新的关键字或者单词&…

Python 代码混淆工具概述

在保护Python代码安全方面,有多种混淆工具可供选择,包括 Cython, Nuitka, Pyminifier 和 IPA guard。本文将介绍这些工具的特点和适用情况,以及在实际应用中的注意事项。 📝 摘要 本文探讨了几种常见的 Python 代码混淆工具&am…

九州金榜家庭教育:关注孩子心理健康,增强亲子沟通

家庭教育现在越来越受重视,尤其孩子心理健康,当下社会,孩子心理健康问题频出,很多地方不时传出孩子轻生的新闻,这就是在教育过程中,沟通出现了严重问题,随着心理变化产生,孩子这时候…

MySQL进阶-----SQL提示与覆盖索引

目录 前言 一、SQL提示 1.数据准备 2. SQL的自我选择 3.SQL提示 二、覆盖索引 前言 MySQL进阶篇的索引部分基本上要结束了,这里就剩下SQL提示、覆盖索引、前缀索引以及单例联合索引的内容。那本期的话我们就先讲解SQL提示和覆盖索引先,剩下的内容就…

Scala中如何使用Jsoup库处理HTML文档?

在当今互联网时代,数据是互联网应用程序的核心。对于开发者来说,获取并处理数据是日常工作中的重要一环。本文将介绍如何利用Scala中强大的Jsoup库进行网络请求和HTML解析,从而实现爬取京东网站的数据,让我们一起来探索吧&#xf…

SWM341系列应用(上位机应用)

SWM341系列之上位机应用 1、分级图像和PNG、JPG的应用 现象:客户使用SWM34SVET6HMI_0.4.1版本上位机进行UI界面布局,反馈在模拟运行时(PC端)流畅,在Demo平台(设备端)运行卡顿。 分析及解决&…