🟠 RANSAC拟合
功能描述
该算子使用RANSAC算法对输入的点云数据进行几何模型拟合,能够拟合如平面、直线、球体和3D圆环等基本几何形状。
RANSAC是一种迭代算法,可以在输入数据中识别“局内点”(即符合模型的点)和“局外点”(即噪声或不符合模型的点),估算出准确的模型拟合参数。
使用场景
-
几何对象检测:需要在复杂的3D场景中检测和定位特定几何形状的物体(例如,桌面、管道、球形物体、圆形孔洞)时。
-
点云分割:根据点云是否符合某种几何模型,将其分割成不同的部分。例如,从场景中提取出所有平坦表面。
-
噪声过滤:通过识别主要的几何结构,可以将不符合该结构的噪声点识别为局外点并进行分离。
-
参数估计:从点云数据中提取特定几何形状的精确参数,例如平面的方程、球体的中心和半径等。
输入输出
输入项 |
点云:输入的待进行拟合的点云数据,可以是一个点云或点云列表。 |
输出项 |
拟合内部点云:拟合模型的点云(局内点)。 拟合外部点云:不属于拟合模型的点云(局外点)。 方程参数:拟合所得形状的方程参数列表。
结果方向:拟合结果的主要方向向量列表。
|
参数说明
|
该算子有两个版本:
两者核心功能和参数完全相同,仅处理的点云数据类型不同。 |
拟合最少点数
参数说明 |
每次迭代候选模型至少需要包含的点云点数才被认为是有效的。 |
调参说明 |
|
参数范围 |
[1,10000000],默认值:100 |
拟合最多点数
参数说明 |
每次迭代候选模型所能包含的最大点云点数。 |
调参说明 |
此参数通常用于防止一个非常大的、符合模型的结构(例如一个巨大的平面背景)消耗掉所有点,使得无法检测到其上的其他较小结构。如果主要目标是检测场景中最大的那个符合模型的结构,可以将此值设得非常大。 |
参数范围 |
[1,4000000],默认值:4000000 |
重复次数
参数说明 |
指的是对输入的每块点云数据,重复执行RANSAC拟合过程的次数。每次重复都有可能找到一个新的、不同的模型实例。一般而言,这个值跟输出结果的组数是对应的,若设为k,则一般会输出k组数据,除非拟合多次后还是拟合不到k个结果,则输出会小于k。 |
调参说明 |
注意:增加此值会显著增加计算时间。 |
参数范围 |
[0,5000],默认值:1 |
最大迭代次数
参数说明 |
在单次RANSAC拟合过程(由“重复次数”控制的一次尝试)中,算法进行随机采样和模型验证的最大迭代轮数。 |
调参说明 |
|
参数范围 |
[0,100000],默认值:100 |
损失函数阈值
参数说明 |
定义了一个距离阈值。如果一个点到当前候选模型的距离小于或等于此阈值,则该点被视为此模型的“局内点”。 |
调参说明 |
建议根据点云的密度、噪声水平以及对模型精度的要求来仔细调整此参数。可以从一个适中的值开始,观察拟合结果,然后逐步调整。 |
参数范围 |
[0,1000000],默认值:8 |
拟合模型
参数说明 |
选择希望从点云中拟合的几何模型类型。 |
调参说明 |
根据需求在点云中检测的物体形状进行选择。例如,如果要检测桌面,选择“平面”;如果要检测管道(的一部分),可尝试“直线”(轴向)或后续的“RANSAC拟合(带法向)”中的“圆”。 |
参数范围 |
可选:平面、直线、球体、3D圆环 |
模型方向
参数说明 |
设置模型的期望主方向。 此参数仅在选择“平面”、“直线”、“3D圆环”模型时生效。对于“平面”模型,此为平面法向量;对于“直线”模型,此为直线方向;对于“3D圆环”模型,此为圆环所在平面的法向量。 |
调参说明 |
提供一个大致的参考方向。例如,如果需求是检测一个大致竖直的平面,可以将此参数设置为[0,0,1]或[0,0,-1](假设Z轴向上)。算法会在此参考方向和允许的“轴向浮动范围”(angleEps)内搜索最佳匹配。如果方向完全未知,此参数的约束作用会减弱,可以增大“轴向浮动范围”。 |
参数范围 |
[0,0,1] |
轴向浮动范围
参数说明 |
设置拟合出的模型主方向与“模型方向”参数所指定方向之间允许的最大角度偏差。 仅在选择“平面”、“直线”、“3D圆环”模型时生效。 |
调参说明 |
|
参数范围 |
[0,300],默认值:30,单位:° |