当前位置: 首页 > news >正文

基于M估计样本一致性算法的点云平面拟合

平面拟合

    • 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,Te0,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,Tee,T>e(2)

  由于使用更加精确的距离表达代价函数,因此,MSAC 不仅可以得到更好的模型,还可以降低阈值的敏感度以及提高收敛速度。利用MSAC 进行局部基准面拟合的具体步骤如下:

  1. 从数据集中不重复地随机选择用于平面模型拟合的最小数据集 Q Q Q
  2. 利用最小二乘法和数据集 Q Q Q拟合平面模型 S S S ,得到模型参数。
  3. 计算所有点到平面模型 S S S的距离,在允许误差阈值范围内的点标记为“内点”,并计算该平面模型的代价 C i C_i Ci
  4. 比较当前模型的代价 C i C_i Ci 与之前最好模型的代价 C b C_b Cb的大小,记录较小者作为新的最好模型的代价,并记录对应的“内点”和模型参数。
  5. 重复步骤①-④,直到迭代结束,并得到“内点”数据。
  6. 利用“内点”数据,通过最小二乘法拟合平面模型,得到最佳的平面模型参数。

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拟合平面
http://www.lryc.cn/news/246409.html

相关文章:

  • 【VRTK】【VR开发】【Unity】8-可交互对象
  • Huggingface 超详细介绍
  • pycharm 怎么切换Anaconda简单粗暴
  • 笔记二十二、使用路由state进行传递参数
  • 2023 OI 总结
  • ESP32-Web-Server编程-HTML 基础
  • 【docker】docker安装与优化
  • https到底把什么加密了?
  • python爬虫防乱码方案
  • Java 语言的入门级教程有哪些?
  • STM32算法
  • 论文阅读 (106):Decoupling maxlogit for out-of-distribution detection (2023 CVPR)
  • 毅速丨3D打印随形水路为何受到模具制造追捧
  • 【LeetCode:1670. 设计前中后队列 | 数据结构设计】
  • OpenCV将两张图片拼接成一张图片
  • 4G5G智能执法记录仪在保险公司车辆保险远程定损中的应用
  • 二十七、RestClient查询文档
  • 百度云Ubuntu22.04
  • 解除word文档限制,快速轻松,seo优化。
  • 【音频】Glitch相关
  • 【开源】基于Vue+SpringBoot的大学生相亲网站
  • 5种主流API网关技术选型,yyds!
  • 请求pdf文件流并进行预览
  • 【Unity程序技巧】加入缓存池存储地图资源,节省资源,避免多次CG
  • 虹科Pico汽车示波器 | 汽车免拆检修 | 2016款东风悦达起亚K5车发动机怠速抖动严重、加速无力
  • 4.Spring源码解析-loadBeanDefinitions(XmlBeanDefinitionReader)
  • PHP 针对人大金仓KingbaseES自动生成数据字典
  • java选择排序和冒泡排序
  • linux反弹shell
  • Go字符串类型