一文了解激光点云的组织形式_第1页
一文了解激光点云的组织形式_第2页
一文了解激光点云的组织形式_第3页
一文了解激光点云的组织形式_第4页
一文了解激光点云的组织形式_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、文章导读三维点云数据用于表征目标表面的海量点集合,但是各个离散点之间 并没有拓扑关系,一般通过建立点云的空间索引来实现基于邻域关系 的快速查找。在三维点云数据中用的较为广泛的两种结构分别是 Kdtree 和 Octreeo目录什么是Kdtree什么是Octree对比总结什么是Kdtree?Kdtree的原理Kdtree是一种划分k维数据空间的数据结构,在一个K维数据集合上 构建一棵Kdtree代表了对该K维数据集合构成的K维空间的一个划 分,即树中的每个结点就对应了一个K维的超矩形区域。主要用于多 维空间关键数据的搜索。Kdtree的创建Kdtree的创建就是按照某种顺序将无序化的点云进行有序

2、化排列,方 便进行快捷高效的检索。算法流程如下:(1)在K维数据集合中选择具有最大方差的维度,然后在该维度上 选择中值m为中心对该数据集合进行划分,得到两个子集合;同时 创建一个树结点node,用于存储;(2)对两个子集合重复(1)步骤的过程,直至所有子集合都不能再 划分为止;如果某个子集合不能再划分时,则将该子集合中的数据保 存到叶子结点。根据上述算法步骤,以二维数据创建Kdtree为例,输入数据列表为(2,3),(5,4),(9,6),(4,7),(8,1),(7,2);划分的二维分割图如下:二乙W研习社首先统计X和Y方向上的方差,选取方差较大的X维度作为初始分割 轴,对X轴上的数值2,5

3、,9,4,8,7取中值X=7作为分割线,生 成左子树(2,3),(5,4),(4,7),生成右子树(9,6),(8,1),更新分割轴Y,分别在左右子树中找到中位数(5,4)和(9,6),依次迭代如下图:3. Kdtre的 搜索Kdtree的搜索方法有以下两种:范围搜索:给定搜索点和搜索距离的阈值,从数据集中找出所有与搜 索点距离小于阈值的数据;最近邻搜索:给定查询点和正整数K,从数据集中找到距离查询点最 近的K个数据,当K=1时,就是最近邻搜索。以最近邻搜索算法为例,其流程如下:将查询数据Q从根结点开始,按照Q与各个结点的比较结果向 下访问Kdtree,直至达到叶子结点。其中Q与结点的比较指的

4、是将Q对应于结点中的k维度上的值与中 值m进行比较,若Q(k) m,则访问左子树,否则访问右子树。达到 叶子结点时,计算Q与叶子结点上保存的数据之间的距离,记录下 最小距离对应的数据点,记为当前最近邻点和最小距离Distance。进行回溯操作,该操作是为了找到离Q更近的最近邻点。即 判断未被访问过的分支里是否还有离Q更近的点,它们之间的距离 小于 Distance。如果Q与其父结点下的未被访问过的分支之间的距离小于Distance, 则认为该分支中存在离P更近的数据,进入该结点,进行(1)步骤 一样的查找过程,如果找到更近的数据点,则更新为当前的最近邻点, 并更新Distance。如果Q与其父

5、结点下的未被访问过的分支之间的距离大于Distance, 则说明该分支内不存在与Q更近的点。回溯的判断过程是从下往上进行的,直到回溯到根结点时已经不存在 与P更近的分支为止。4. Kdtree的注意事项a对子空间进行划分时,怎样确定在哪个维度上划分?轮流划分法:如果这次选择在第i维上进行数据划分,那下一次就在 第j(j却维上进行划分,例如:j = (i mod k) + 1。但是这样忽略了不同属性数据之间的分散程度,有的属性值比较分 散,有的属性值比较集中。当数据的分布在某一个维度较为集中,出 现下图的现象,第一次划分将数据分为左右两个子集合,安装轮流的 交替原则,第二次划分的轴并不能很好的分

6、割数据:方差统计法:统计样本在每个维度上的数据方差,选出对应方差最大值的那个维度。因为方差大说明在该坐标轴上的数据点较为分散。但是理论上空间均匀分布的点,在一个方向上分割之后,通过计算方差下一次分割就不会出现在这个方向上了,不过特殊情况如下:方差优化法:初始维度的划分依据数据方差范围最大的那一维作为分割维度,之后也是选中这个维度的中间节点作为轴点,然后进行分割, 分割出来的结果如下图所示:b在某个维度上划分时,怎样确保树尽量平衡?中位数法:找到该维度上数据的中位数,然后将数据点与中位数进行 比较,得到两个子集合的个数基本相同。c怎样判断未被访问的分支里有离搜索数据更近的点?从几何空间上,通过判

7、断以搜索数据为中心和以记录的当前距离为半径的超球面与树分支代表的超矩形之间是否相交。如下图所示:星号为搜索数据,绿色的点为疑似最近点,以搜索点和疑似最近点构 成的圆与所在分割区域的矩形有交集,则需要回溯根节点中未被访问 的分支。什么是OctreeOctree的原理Octree是一种用于描述三维空间的树状数据结构。八叉树的每个节点 表示一个正方体的体积元素,每个节点有八个子节点,将八个子节点 所表示的体积元素加在一起就等于父节点的体积。能够很好的压缩点 云节省存储空间。通过对三维空间的几何实体进行体元剖分,每个体元具有相同的时间 和空间复杂度,通过循环递归的划分方法对大小为(2n*2n*2n)的

8、三维 空间的几何对象进行剖分,从而构成一个具有根节点的方向图。在八 叉树结构中如果被划分的体元具有相同的属性,则该体元构成一个叶 节点;否则继续对该体元剖分成8个子立方体,依次递剖分,对于 (2n*2n*2n)大小的空间对象,最多剖分n次,如下图所示:Octree的创建设定最大递归深度找出场景的最大尺寸,并以此尺寸建立第一个立方体(3)依序将单位元元素丢入能被包含且没有子节点的立方体(4)若没有达到最大递归深度,就进行细分八等份,再将该立方体 所装的单位元元素全部分担给八个子立方体(5)若发现子立方体所分配到的单位元元素数量不为零且跟父立方 体是一样的,则该子立方体停止细分,因为根据空间分割理

9、论,细分 的空间所得到的分配必定较少,若是一样数目,则再怎么切数目还是 一样,会造成无穷切割的情形。(5)重复3,直到达到最大递归深度。Octree的叶子节点代表了分辨率最高的情况。例如分辨率设成0.01m, 那么每个叶子就是一个1cm见方的小方块。如下图所示:当分辨率较高时,方块很小;分辨率较低时,方块很大。以斯坦福课程中的兔子模型为例:对比总结由于三维点云的数据量较大,使用Kdtree和Octree进行检索可以较 少时间消耗,确保点云的关联点寻找和配准处于实时的状态。Kdtree在邻域查找上比较有优势,但在大数据量的情况下,若划分粒 度较小时,建树的开销也较大,但比八叉树灵活些。在小数据量的情 况下,其搜索效率比较高,但在数据量增大的情况下,其效率会有一 定的下降,一般是线性上升的规律。Octree算法实现简单,但大数据量点云数据下,其使用比较困难的是 最小粒度(叶节点)的确定,粒度较大时,有的节点数据量可能仍比 较大,后续查询效率仍比较低,反之,粒度较小,八叉树的深度增加, 需要的内存空间也比较大(每个非叶子节

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论