ch05——kd-tree
点云数据处理中最核心的问题就是建立离散点的拓扑关系,实现基于邻域关系的快速查找。kd-tree与八叉树在3D点云数据组织中应用较为广泛。
1.kd-tree原理介绍参考链接——https://cloud.tencent.com/developer/news/212042
2.模块类介绍
基于FLANN进行快速最近邻检索,最近邻检索在匹配、特征描述子计算、邻域特征提取中是非常基础的核心操作。kd-tree模块利用三个类与两个函数实现了对点云的高效管理和检索,依赖于pcl_common模块。具体模块类详见官网介绍。
3.代码
#include <pcl/point_cloud.h>
#include <pcl/kdtree/kdtree_flann.h>//返回多于0个k近邻,则执行
#include <iostream>
using namespace std;
using namespace pcl;
#include <vector>
#include <ctime>
int main() {
srand((unsigned int) time(null));//初始化随机种子
PointCloud<PointXYZ>::Ptr cloud(new PointCloud<PointXYZ>);
//随机点云生成
cloud->width = 1000;//点云数量
cloud->height = 1;//点云为无序点云
cloud->points.resize(cloud->width*cloud->height);
for (size_t i