参考资料:PCL Walkthrough 【译】PCL官网教程翻译(2)
一、邻域分析
点云数据处理中最为核心的问题就是建立离散点间的拓扑关系,实现基于邻域关系的快速查找。邻域分析的核心核心思想是空间分割。
1.1 邻域分析三种方法
1. 二叉树Binary Search Tree(BST)
二叉树是一种基于结点的数据结构。左子节点小于父节点,右子节点大于父节点,利用此性质可以实现快速查找。
2. Kd-tree
Kd树 (k维树)是一种空间分区数据结构,它在树结构中存储一组k维点,从而支持快速的距离搜索和最近邻搜索。最近邻搜索是处理点云数据时的核心操作,可用于查找点组或特征描述符之间的对应关系,或定义点周围的局部邻域。
3.八叉树Octree
八叉树库提供了一种从点云数据创建具有继承关系的数据结构的有效方法。这使得对点云数据集进行空间分区、下采样和搜索操作变的更加容易。每个八叉树节点有8个子节点或者没有子节点。根节点描述一个封装所有点的立方体包围框。在每棵树的层次上,这个空间被因子2细分,从而提高了体素分辨率。
八叉树实现了高效的近邻搜索,如“体素的邻域搜索”、“K近邻搜索”和“固定半径的邻域搜索”。它根据数据集自动调整它的尺寸。一组叶节点类提供了额外的功能,比如空间“占用率”和“每个体素的点密度”检查。用于序列化和反序列化的函数能够有效地将八叉树结构编码为二进制格式。此外,在需要高速创建八叉树的场景中,内存池的存在减少了内存分配和释放的耗时操作。