欢迎来到天天文库
浏览记录
ID:49989956
大小:1.35 MB
页数:64页
时间:2020-03-06
《《点云库PCL学习教程》第6章 八叉树.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第6章八叉树建立空间索引在点云数据处理中已被广泛应用,常见空间索引一般是自顶向下逐级划分空间的各种空间索引结构,比较有代表性的包括BSP树、KD树、KDB树、R树、R+树、CELL树、四叉树和八叉树等索引结构,而在这些结构中KD树和八叉树在3D点云数据组织中应用较为广泛。PCL对八叉树的数据结构建立和索引方法进行了实现,以方便在此基础上的其他点云处理操作。本章首先对常用的点云空间索引方法octree概念进行介绍,然后对PCL的octree相关模块及类进行简单说明,最后通过应用实例来展示如何对PCL中octree模块进行灵活运用。本章各小节
2、目录6.1octree概述及相关算法简介6.2PCL中octree模块及类介绍6.3应用实例解析6.1octree概述及相关算法简介八叉树结构是由Hunter博士于1978年首次提出的一种数据模型。八叉树结构通过对三维空间的几何实体进行体元剖分,每个体元具有相同的时间和空间复杂度,通过循环递归的划分方法对大小为2n×2n×2n的三维空间的几何对象进行剖分,从而构成一个具有根节点的方向图。在八叉树结构中如果被划分的体元具有相同的属性,则该体元构成一个叶节点;否则继续对该体元剖分成8个子立方体,依次递归剖分,对于2n×2n×2n大小的空间对象
3、,最多剖分n次,如图6-1所示。6.2PCL中octree模块及类介绍PCL中octree库提供了octree数据结构,利用FLANN进行快速邻域检索。邻域检索在匹配、特征描述子计算、领域特征提取中是非常基础的核心操作。octree模块利用十几个类实现了利用octree数据结构对点云的高效管理和检索,以及相应的一些空间处理算法,例如压缩、空间变化检测,其依赖于pcl_common模块。octree模块中类说明目前PCL中octree模块中目前共有16个类,以后有可能增加。1.classpcl::octree::Octree2BufBase
4、类Octree2BufBase实现了同时存储管理两个八叉树于内存中,如此,可以非常高效地实现八叉树的建立管理等操作,并且该类实现对临近树节点结构的变化探测,对应到空间点云,其就可以对空间曲面的动态变化进行探测,在进行空间动态变化探测中非常有用,例如目前基于kinect设备的体感交互应用。类Octree2BufBase关键成员函数:voidsetMaxVoxelIndex(unsignedintmaxVoxelIndex_arg)设置在各个维度上最大的体素个数。voidsetTreeDepth(unsignedin
5、tdepth_arg)设置八叉树的深度,需要在初始化八叉树时设置。voidadd(unsignedintidxX_arg,unsignedidxY_arg,unsignedintidxZ_arg,constDataT&data_arg)在idxX、idxY、idxZ对应的叶子节点上填充DataT的数据,其中idxX、idxY、idxZ为在三个维度上的整型索引值。boolexistLeaf(unsignedintidxX_arg,unsignedintidxY_arg,unsignedintidxZ_arg)const判断在idxX、idx
6、Y、idxZ对应的叶子节点是否存在,如果存在返回true,否则返回false。unsignedintgetLeafCount()const返回在该八叉树中的叶子数目。unsignedintgetBranchCount()const返回在该八叉树中的分支数目。voiddeleteTree(boolfreeMemory_arg=false)删除八叉树的结构及其叶子节点。voiddeletePreviousBuffer()删除另一个缓冲区中对应八叉树的结构及其叶子节点。voiddeleteCurrentBuffer()删除当前缓冲区中对应八叉树
7、的结构和其叶子节点。voidswitchBuffers()交换缓冲区,并重设八叉树结构。voidserializeTree(std::vector&binaryTreeOut_arg,booldoXOREncoding_arg=false)串行化输出八叉树结构到binaryTreeOut_arg向量,doXOREncoding_arg设置输出时是否将当前缓冲区与后台缓冲区中数据进行异或操作后再输出,异或操作是两个八叉树结构之间差异数据的输出。voidserializeTree(std::vector&binaryT
8、reeOut_arg,std::vector&dataVector_arg,booldoXOREncoding_arg=false)串行化重载函数,其中参数dataVector_
此文档下载收益归作者所有