http://www.pointclouds.org/documentation/tutorials/cluster_extraction.php#cluster-extraction
基于欧式距离的分割和基于区域生长的分割本质上都是用区分邻里关系远近来完成的。由于点云数据提供了更高维度的数据,故有很多信息可以提取获得。欧几里得算法使用邻居之间距离作为判定标准,而区域生长算法则利用了法线,曲率,颜色等信息来判断点云是否应该聚成一类。
(1)欧几里德算法
具体的实现方法大致是:
- 找到空间中某点p10,有kdTree找到离他最近的n个点,判断这n个点到p的距离。将距离小于阈值r的点p12,p13,p14....放在类Q里
- 在 Q\p10 里找到一点p12,重复1
- 在 Q\p10,p12 找到一点,重复1,找到p22,p23,p24....全部放进Q里
- 当 Q 再也不能有新点加入了,则完成搜索了
因为点云总是连成片的,很少有什么东西会浮在空中来区分。但是如果结合此算法可以应用很多东东。比如
- 半径滤波删除离群点
- 采样一致找到桌面或者除去滤波