今天稍微花了点时间看了下相关算法,做个简单的笔记。
欧几里德算法具体的实现方法大致是:
1 找到空间中某点p10,有kdTree找到离他最近的n个点,判断这n个点到p的距离。将距离小于阈值r的点p12,p13,p14....放在类Q里
2 在 Q(p10) 里找到一点p12,重复1
3 在 Q(p10,p12) 找到一点,重复1,找到p22,p23,p24....全部放进Q里
4 当 Q 再也不能有新点加入了,则完成搜索了;
看 PCL的代码,过程很简单,也能看出这个过程,聚类代码如下:
pcl::extractEuclideanClusters (const PointCloud<PointT> &cloud,
const typename search::Search<PointT>::Ptr &tree,
float tolerance, std::vector<PointIndices> &clusters,
unsigned int min_pts_per_cluster,
unsigne