🟠 基于密度聚类分割

功能描述

该算子利用DBSCAN算法对输入的点云进行聚类分割。

DBSCAN的核心思想是:一个点属于一个簇,如果它周围的邻域内有足够多的点(满足密度条件)。算子会从任意一个点开始,寻找其邻域内满足密度条件的点并不断扩张,形成一个簇,直到无法再扩张为止。通过这种方式,它可以将空间中足够密集的区域划分为不同的簇,并能有效识别出稀疏的噪声点。

使用场景

  • 对象分割:当场景中有多个相互分离的物体时,此算子可以根据其各自的点云密度将每个物体分割成独立的簇。

  • 噪声去除:DBSCAN算法能自然地识别出处于低密度区域的孤立点,非常适合用于去除点云中的稀疏背景噪声或测量噪声。

  • 实例分离:对于堆叠或散乱放置的多个相同或不同物体,只要它们之间存在微小的间隙,就可以尝试使用此算子将它们分离成单个实例。

输入输出

输入项

点云:输入的待进行聚类分割的点云或点云列表。

输出项

分割点云:返回分割后的点云簇列表,列表中的每个元素都是一个被识别出的点云簇。

参数说明

该算子有两个版本:

  • 基于密度聚类分割:处理不带法向信息的点云。

  • 基于密度聚类分割(带法向):处理带有法向信息的点云。

两者核心功能和参数完全相同,仅处理的点云数据类型不同。

搜索半径

参数说明

定义了每个点寻找邻居点时所使用的球形区域的半径。

调参说明

  • 增大此值:更远的邻域半径,会认为更远的点也是邻居。

  • 减小此值:要求点之间必须非常紧密才能被看作邻居,可能导致一个完整的物体被分割成多个小簇。

参数范围

[0,200],默认值:5

密度条件

参数说明

定义了在一个点的“搜索半径”内,至少需要包含多少个邻近点,该点才被视为一个“核心点”(即稠密区域内部的点)。

调参说明

  • 增大此值:要求一个区域的点必须非常密集才能形成簇,使得聚类条件更严格,可能会有更多的点被当作噪声而丢弃。

  • 减小此值:放宽了密度要求,使得较为稀疏的区域也能形成簇。 此参数需要与“搜索半径”结合调整,以达到最佳的分割效果。

参数范围

[0,100000],默认值:5

聚类最少点数

参数说明

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

调参说明

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

参数范围

[1,4000000],默认值:100

聚类最多点数

参数说明

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

调参说明

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

参数范围

[1,4000000],默认值:4000000

启用排序

参数说明

选择是否对最终输出的所有点云簇按点云数量从大到小进行排序。

调参说明

  • 开启(默认):输出的点云簇列表将按照点数从多到少排列。

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

保留全部结果

参数说明

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

调参说明

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

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

保留结果数量

参数说明

设置输出的点云数量。

调参说明

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

参数范围

[1,1000],默认值:1

使能节点

参数说明

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

调参说明

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

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