平面拟合
- 1、算法简介
- 2、参考文献
- 3、实现效果
- 4、相关代码
1、算法简介
RANSAC 是在给定模型和距离阈值 T T T的情况下,通过寻找最小代价 C C C来确定内点数据并拟合模型。如式(1)所示的代价函数,当点到模型的距离 e e e小于阈值 T T T时,该点被判定为内点且权重为0;否则为外点。由于所有内点的权重为0,所以RANSAC选取的最优模型是内点最多且权重和最小的模型。如果用于区分异常值的阈值 T T T过大,则会造成RANSAC 拟合误差增大。
ρ ( e , T ) = { 1 , T ≤ e 0 , T > e (1) \rho(e,T)= \begin{cases} 1,\quad T\leq e\\ 0, \quad T>e \end{cases} \tag{1} ρ(e,T)={1,T≤e0,T>e(1)
MSAC 是RANSAC 的一种改进方法,目的是降低算法对于距离阈值 T T T选取的依赖。修改后的代价函数如式(1)所示,当点到模型的距离 e e e 小于阈值 T T T时,该点被判定为内点且权重为 e e e ;否则为外点且权重为 T T T 。
ρ ( e , T ) = { T , T ≤ e e , T > e (2) \rho(e,T)= \begin{cases} T,\quad T\leq e\\ e, \quad T>e \end{cases} \tag{2} ρ(e,T)={T,T≤ee,T>e(2)
由于使用更加精确的距离表达代价函数,因此,MSAC 不仅可以得到更好的模型,还可以降低阈值的敏感度以及提高收敛速度。利用MSAC 进行局部基准面拟合的具体步骤如下:
- 从数据集中不重复地随机选择用于平面模型拟合的最小数据集 Q Q Q。
- 利用最小二乘法和数据集 Q Q Q拟合平面模型 S S S ,得到模型参数。
- 计算所有点到平面模型 S S S的距离,在允许误差阈值范围内的点标记为“内点”,并计算该平面模型的代价 C i C_i Ci 。
- 比较当前模型的代价 C i C_i Ci 与之前最好模型的代价 C b C_b Cb的大小,记录较小者作为新的最好模型的代价,并记录对应的“内点”和模型参数。
- 重复步骤①-④,直到迭代结束,并得到“内点”数据。
- 利用“内点”数据,通过最小二乘法拟合平面模型,得到最佳的平面模型参数。
2、参考文献
[1] 马新江;岳东杰;沈月千;刘如飞;王旻烨;俞家勇;张春阳. 基于车载激光点云的路面坑槽检测方法 [J/OL]. 中国激光, 1-25[2023-11-25] http://kns.cnki.net/kcms/detail/31.1339.TN.20230817.1814.022.html.
3、实现效果
1、标准模拟数据
2、模拟数据的平面参数
3、添加高斯噪声点
4、高斯噪声点添加结果
5、MSAC拟合结果
平面模型系数coeff(a,b,c,d): 0.00987843 -0.714149 0.699925 17.943
偏差有点大???神奇!!!
4、相关代码
- matlab 点云最小二乘拟合平面(PCA法)
- matlab 点云最小二乘拟合平面(PCA法详细过程版)
- matlab 最小二乘拟合平面并与XOY平面对齐
- Open3D 最小二乘拟合平面(PCA法 python详细过程版)
- Open3D 进阶(12)PCA拟合平面