octree与kd-tree对比

  • 问题1:哪个速度更快
  • 问题2;octree可以在建立完成之后再增长规模吗

1. Comparison of nearest-neighbor-search strategies and implementations for efficient shape registration

最近邻搜索nn问题有很多中方法,nns问题最差的时间复杂是O(nm);平均复杂度是O(nlogm);在点云领域常用的是kd-tree octree;其他的方法有R-tree、range-tree、vp-tree

原则上,八叉树应该允许NNS的极其有效的实现。 由于它们对搜索空间的规则划分和较高的分支因子,因此坐标查询非常快[25]。 但是,大多数NN库都基于k-d树。

octree复杂性是由于以下事实:在NNS期间,必须访问查询点附近的节点。 因此,必须找到有效的遍历顺序,因为遍历的顺序访问的节点数不超过必需的数量,并且易于计算。 有效遍历的关键是访问子节点的顺序,最好通过最接近子节点的优先标准来减少需要访问的节点数,即遍历的顺序由到查询点的距离确定。 对于二叉树k-d树,这是微不足道的,但是对于八叉树来说,则涉及更多.

对于任意一个有8个子节点的节点来说,有96个顺序去访问子节点。
八叉树中的NNS必须对3个分割平面进行邻近度计算,对距离进行排序,并为每个经过的节点选择合适的遍历顺序。 与此相比,k-d树中的遍历顺序可通过一次邻近度检查立即确定,从而避免了不必要访问节点时的不必要计算。

对比图octree更慢

Octree即为八叉树,它的特性为树中的任一节点的子节点恰好只会有八个或零个。经常应用于3D场景管理,它可以迅速搜索物体在3D场景中的位置,或侦测到与其他物体是否有碰撞以及判断是否在可视范围内。

博客https://www.cnblogs.com/ZuDame/p/11193179.html介绍如下,可知,无法累加改变尺寸,因为无法获得最大尺寸

“算法原理简介”
八叉树是一种用于描述三维空间的树状数据结构。八叉树的每个节点表示一个正方体的体积元素,每个节点有八个子节点,将八个子节点所表示的体积元素加在一起就等于父节点的体积。
“算法流程”
(1). 设定最大递归深度
(2). 找出场景的最大尺寸,并以此尺寸建立第一个立方体
(3). 依序将单位元元素丢入能被包含且没有子节点的立方体
(4). 若没有达到最大递归深度,就进行细分八等份,再将该立方体所装的单位元元素全部分担给八个子立方体
(5). 若发现子立方体所分配到的单位元元素数量不为零且跟父立方体是一样的,则该子立方体停止细分,因为跟据空间分割理论,细分的空间所得到的分配必定较少,若是一样数目,则再怎么切数目还是一样,会造成无穷切割的情形。
(6). 重复3,直到达到最大递归深度。

2.octree.addPointToCloud(testpoint,cloud);



octree与kd-tree对比相关推荐

  1. [学习笔记] 乱世之神杀疯了 —— K-D tree

    文章目录 K-D tree 建树 合并 插入 删除 查询(估价函数) 旋转坐标系 题目练习 [SDOI2012]最近最远点对 [Violet]天使玩偶/SJY摆棋子 [CQOI2016]K远点对 [国 ...

  2. k-d tree算法原理及实现

    k-d tree即k-dimensional tree,常用来作空间划分及近邻搜索,是二叉空间划分树的一个特例.通常,对于维度为k,数据点数为N的数据集,k-d tree适用于N≫2k的情形. 1)k ...

  3. PCL点云库调库学习系列——k-d tree与八叉树

    k-d tree与八叉树 1 k-d tree与八叉树 本文并不涉及具体原理的解释,文章着重在k-d树与八叉树在近邻搜索方面的API的使用 1.1 k-d tree k-d tree算法及原理: ht ...

  4. kd tree最近邻搜索算法深度解析

    李航统计学习方法(第二版)(六):k近邻算法实现(kd tree方法)中,对kd树进行了介绍,包括,kd树的简介.kd树的建立以及kd树的搜索.在看到李航老师书中对kd树搜索算法的描述后,其中对于递归 ...

  5. PCL :K-d tree 2 结构理解

    K-d tree 基础思路:(先看之前的KNN思想,更容易理解) 导语:kd 树是一种二叉树数据结构,可以用来进行高效的 kNN 计算.kd 树算法偏于复杂,本篇将先介绍以二叉树的形式来记录和索引空间 ...

  6. PCL:k-d tree 1 讲解

    1.简介 kd-tree简称k维树,是一种空间划分的数据结构.常被用于高维空间中的搜索,比如范围搜索和最近邻搜索.kd-tree是二进制空间划分树的一种特殊情况.(在激光雷达SLAM中,一般使用的是三 ...

  7. k-d tree算法的研究

    By RaySaint 2011/10/12 动机 先前写了一篇文章<SIFT算法研究>讲了讲SIFT特征具体是如何检测和描述的,其中也提到了SIFT常见的一个用途就是物体识别,物体识别的 ...

  8. k-d tree树 近邻算法

    k-d树(k-dimensional树的简称),是一种分割k维数据空间的数据结构.主要应用于多维空间关键数据的搜索(如:范围搜索和最近邻搜索). 应用背景 SIFT算法中做特征点匹配的时候就会利用到k ...

  9. K-d tree 算法

    转载的原文链接:http://www.cnblogs.com/eyeszjwang/articles/2429382.html 已经写得非常好了,非常清晰.只是在原文的基础上增加了一点解释,方便大家理 ...

  10. kd tree python 搜索

    海量数据最近邻查找可以用kd tree 目前理解,kd tree需要的数据维度相同,否则会出问题 kd tree实现:https://github.com/stefankoegl/kdtree 下面是 ...

最新文章

  1. asp.net 2.0中一次性更新所有GRIDVIEW的记录
  2. 关于解决GPS定位设备:GPS静态漂移的方法
  3. JavaScript实现链表reverseTraversal反向遍历算法(附完整源码)
  4. 【bug记录】getDeviceId: The user 10002 does not meet the requirements to access device identifiers.
  5. 【电脑使用经验】怎么查看无线网络中电脑的IP地址?
  6. jQuery之合成事件
  7. django 创建mysql失败_创建表时出现Django MySQL错误
  8. OpenCV图像分割-watershed
  9. [剑指offer]面试题第[1]题[JAVA][二维数组中的查找][数组][二分]
  10. sql安装弹出sqlcmd_讨论使用SQLCMD和SQL Server代理进行备份和还原自动化
  11. 【NLP】综述 | 跨语言自然语言处理笔记
  12. 手把手教你开发chrome扩展
  13. 恶搞代码——vbs进程
  14. 电脑五笔,电脑键盘五笔指法练习表
  15. socket php建立聊天室,PHP搭建socket聊天室
  16. 陈一为担任BCF理事
  17. 计算机上桌面不见了怎么找回,电脑桌面上的文件消失了怎么办,如何找回
  18. 数据库开发技术的课程记录
  19. meta标签下http-equiv 属性详解
  20. 企业财务管理中的数据分析应用

热门文章

  1. word样式管理:如何对样式进行修改删除
  2. 用c语言做一个五子棋程序,C语言制作简单五子棋游戏
  3. 游戏 - PS4 海绵宝宝: 争霸比基尼海滩重注版
  4. 用docx把文字写入word并且插入图片、表格
  5. PowerMill 2018三五轴编程+后处理制作视频教程
  6. python2.7.18绿色安装包制作
  7. 主流的企业级报表工具,国内报表工具排名前列
  8. android设置背景色为全透明和半透明
  9. linux系统文件信息系统满,在Deepin系统中提示系统盘已经满了(/home文件大)的解决方案...
  10. 苹果账户登录_开心,安卓手机支持和iPhone内APP账户互通