🟠 区域增长点云分割

功能描述

区域增长算法是一种基于表面法线方向的分割方法,基本流程是:选择从一个或者多个起始点(称为种子点)开始,迭代地检查其邻近点,如果邻近点的法向与当前区域的法向足够相似(即表面足够平滑),就将其合并到当前区域中。这个过程不断重复,直到区域无法再向外“增长”为止。

使用场景

  • 表面分割:非常适合将由不同平面或平滑曲面组成的场景进行分割。

  • 零件特征识别:用于分离零件上的不同平面、曲面、凹槽等几何特征。

  • 基于边界的物体分离:当一个物体放置在另一个物体的表面上时(如桌上的杯子),只要它们接触的边界处存在明显的角度变化(法向突变),该算法就能有效地将它们分离开。

输入输出

输入项

点云:输入的待分割的点云,必须包含法向信息。

输出项

分割点云:返回分割后的点云簇列表,列表中的每个元素都是一个被识别出的、内部平滑的区域。

参数说明

邻近点数

参数说明

在为每个点判断其局部区域特性时,设置需要查找距离它最近的K个邻居点的数量。

调参说明

  • 增大此值:更大范围的邻域,使得算法对噪声的鲁棒性更强,但可能会平滑掉一些微小的细节特征。

  • 减小此值:使得算法对局部细节和法向的突变更敏感,但可能更容易受到噪声法向的干扰。

参数范围

[0,1000],默认值:5

法向差异阈值

参数说明

设置区域增长的核心平滑度标准。只有当一个邻近点的法向量与当前区域基准点的法向量之间的夹角小于此阈值时,该邻近点才可能被合并到区域中。

调参说明

  • 较小值(例如5°-15°):分割条件更严格,只有法向非常一致的点才会被分到一类。这会导致在有轻微弯曲或棱角的地方就断开,产生更多、更小的分割区域。

  • 较大值(例如30°-45°):分割条件更宽松,允许区域“越过”一些不太尖锐的棱角,倾向于生成更少、更大的分割区域。

参数范围

[0,180],默认值:10,单位:°

差异阈值

参数说明

差异阈值用于辅助判断平面平滑度,将基准点和某个邻近点连成一条线,看这条线在基准点法线方向上的“投影”长度,该长度表示邻近点偏离基准点所在平面的程度。如果这个距离很小,说明邻近点几乎就在基准点的平面上,表面很平滑;如果这个距离很大,说明邻近点偏离了基准点的平面,表面有弯曲或突起。

调参说明

  • 较小值:要求点云表面非常平坦,稍微有些弯曲就会被断开。

  • 较大值:允许区域在有一定曲率的表面上继续增长。

在处理纯平面时,可以将此值设得较小;在处理曲面时,则需要根据曲率适当增大此值。

参数范围

[0,100000],默认值:10

聚类最少点数

参数说明

后处理筛选条件,聚类完成后,点数少于此值的簇都将会被过滤。

调参说明

适用于过滤掉那些由少量点组成的、无意义的小噪声簇,适当提高此值来确保输出的是有意义的聚类结果。

参数范围

[1,4000000],默认值:100

聚类最多点数

参数说明

后处理筛选条件,聚类完成后,点数多于此值的簇都将会被过滤。

调参说明

适用于需要排除某个非常大的背景或支撑面的场景。例如,如果想忽略掉桌面,只分析桌面上的小物体,可以设置一个上限来过滤掉代表桌面的那个最大的点云簇。

参数范围

[1,4000000],默认值:4000000

启用排序

参数说明

是否对最终输出的所有点云簇(汇集了所有输入点云的分割结果)按点云数量从大到小进行全局排序。

调参说明

开启(True):输出的点云簇列表将严格按照点数从多到少排列。

关闭(False):输出的点云簇顺序可能不固定。

保留全部结果

参数说明

控制对于输入的每一块点云,是输出其全部分割结果,还是只保留部分。

调参说明

开启(True):默认选项,保留所有找到的、且满足点数限制的簇。

关闭(False):将只保留由“保留结果数量”参数指定的前N个最大的簇。

保留结果数量

参数说明

设置输出的点云数量。

调参说明

对输入的每块点云,将分割结果按点云数量从大到小进行排序,保留前几个点云,例如设置为1表示只保留最大的结果,设置为2表示保留前2个结果,设置为3表示保留前3个结果,以此类推。

参数范围

[1,1000],默认值:1

使能节点

参数说明

控制该算子是否执行运算。

调参说明

  • 开启(默认):正常运行该算子功能。

  • 关闭:算子不执行任何操作,直接将输入的数据输出。