点云区域生长分割
- 一、代码示例
- 二、运行结果
🙋 前言
区域生长分割(RegionGrowing):是一种改进的ICP(Iterative Closest Point)算法,用于处理3D点云配准问题,特别是在存在噪声、外点(不匹配点)或数据分布不均等复杂情况下。
基本思想:首先依据点的曲率值对点进行排序,之所以排序是因为区域生长算法是从曲率最小的点开始生长的,这个点就是初始种子点,初始种子点所在的区域即为最平滑的区域,一般场景中平面区域较大,这样从最平滑的区域开始生长可减少分割区域的总数,提高效率。
算法流程:
- 设置一空的种子点序列和空的聚类数组,选好初始种子点后,将其加入到种子点序列中,并搜索邻域点。
- 对每一个邻域点,比较邻域点的法线与当前种子点的法线之间的夹角,小于平滑阈值的邻域点加入到当前区域。
- 然后检查每一个邻域点的曲率值,小于曲率阈值的邻域点加入到种子点序列中。
- 在进行种子点邻域判断后,删除当前种子点,利用新加入的种子点继续生长。
- 重复进行以上生长过程,直到种子点序列被清空。一个区域生长完成,将其加入聚类数组。
- 最后,利用曲率值从小到大排序,顺序选择输入点集的点作为种子点加入到种子点序列中,重复以上生长的步骤,就通过区域生长实现了点云分割。