news 2026/9/4 12:40:02

基于LO-RANSAC算法拟合圆柱

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于LO-RANSAC算法拟合圆柱

目录

    • 1、算法概述
    • 2、RANSAC算法拟合圆柱
    • 3、LM最小二乘法优化圆柱
    • 4、参考文献

1、算法概述

在对地面、建筑物、低矮地物的滤除后,点云数据中只剩下了杆状地物和少量的非杆状地物。通过对杆状地物的观察,杆状地物如路灯、道路指示牌、监控杆、交通信号杆等通常具有近似圆柱体状或长方体状的几何特征,因此提出了一种LO-RANSAC算法对点云数据进行圆柱拟合,利用拟合出的圆柱体的几何参数为后续杆状地物提取工作做准备。同时在点云数据圆柱拟合后,数据中存在的异常值可以被去除,一定程度上提升了数据的鲁棒性。
对于LO-RANSAC算法,因为RANSAC算法拟合的圆柱模型依赖随机选取的样本点,容易受到采样误差的影响,为了进一步优化拟合结果,在基于RANSAC算法拟合出的圆柱模型基础上,引入LM最小二乘法,优化拟合出的圆柱模型参数,以达到对模型局部优化的效果,提高拟合模型质量。由于该算法本质是对RANSAC拟合出的圆柱进行局部优化,所以将提出的算法命名为LO-RANSAC算法

2、RANSAC算法拟合圆柱

RANSAC算法是一种迭代算法,用于从包含噪声和异常值的数据集中估计数学模型的参数。它通过随机抽样和一致性测试,逐步筛选出最佳模型。RANSAC算法拟合模型的核心思想是先从原始数据集中随机选取最小样本集(圆柱拟合最少需要三个点),使用所选的样本集对模型进行拟合,求出模型的初始参数。接着给定一个合适的阈值,计算所有数据点到求出的拟合模型的误差,确定数据集中所有符合模型要求的数据点(内点),其余为外点。多次重复上述步骤,选择拥有最多内点的模型作为最终估计。

基于RANSAC算法拟合圆柱的过程如下:

假设原始点云数据为P i P_iPi,其中{ P i = ( x i , y i , z i ) ∣ i = 1 , 2 , 3 , ⋯ , n } \{P_i=(x_i,y_i,z_i) \mid i=1,2,3,\cdots,n\}{Pi=(xi,yi,zi)i=1,2,3,,n},随机选择三个点P 1 、 P 2 、 P 3 P_1、P_2、P_3P1P2P3用于估计圆柱的轴向量和半径:

  • 以前两个点P 1 、 P 2 P_1、P_2P1P2构建轴向量V = ( V x , V y , V z ) V=(V_x,V_y,V_z)V=(Vx,Vy,Vz)
    V = P 2 − P 1 ∥ P 2 − P 1 ∥ V=\frac{P_2-P_1}{\|P_2-P_1\|}V=P2P1P2P1
  • 用第三个点P 3 P_3P3计算该点到轴线的垂直距离d 3 d_3d3,即为拟合圆柱的初始半径R RR
    R = d 3 = ∥ ( P 3 − P 1 ) × V ∣ ∥ V ∥ R=d_3=\frac{\|(P_3-P_1)\times V|}{\|V\|}R=d3=V(P3P1)×V

内点/外点判定:对于点云中每个点P i P_iPi,投影到中轴线上得投影点proj ⁡ ( P i ) \operatorname{proj}(P_i)proj(Pi),点P i P_iPi到投影点的距离为d proj d_{\text{proj}}dproj,残差:
residual ⁡ ( P i ) = ∥ P i − P proj ∥ − R \operatorname{residual}(P_i)=\|P_i-P_{\text{proj}}\|-Rresidual(Pi)=PiPprojR

设定距离阈值ε = 2 cm \varepsilon=2\text{cm}ε=2cm,若residual ⁡ ( P i ) < ε \operatorname{residual}(P_i)<\varepsilonresidual(Pi)<ε则为内点,否则为外点。迭代次数设为1000次,选择内点数量最多的圆柱模型为最终拟合结果。

💡 RANSAC拟合除噪声外,理想情况点云应与圆柱吻合,但实际拟合结果中仍有部分点云未与圆柱吻合,故引入LM最小二乘法进一步优化。

3、LM最小二乘法优化圆柱

在RANSAC拟合出的圆柱模型基础上,使用LM最小二乘法优化圆柱参数:轴上点坐标C、轴向量V、半径R。LM方法结合了梯度下降和高斯-牛顿法,通过阻尼因子λ \lambdaλ调整优化策略——λ \lambdaλ大时接近梯度下降(稳定),λ \lambdaλ小时接近高斯-牛顿(收敛快)。

优化过程

令参数集合P = ( x c , y c , z c , v x , v y , v z , R ) P=(x_c,y_c,z_c,v_x,v_y,v_z,R)P=(xc,yc,zc,vx,vy,vz,R),定义残差函数:
r i ( P ) = ∥ P i − P proj ∥ − R r_i(P)=\|P_i-P_{\text{proj}}\|-Rri(P)=PiPprojR

目标:使残差平方和min ⁡ P K ∑ i = 1 n r i 2 ( P K ) \min\limits_{P_K}\sum\limits_{i=1}^n r_i^2(P_K)PKmini=1nri2(PK)最小。

参数更新公式:
P k + 1 = P k − ( J T J + λ I ) − 1 J T r P_{k+1}=P_k-(J^TJ+\lambda I)^{-1}J^TrPk+1=Pk(JTJ+λI)1JTr

其中J = ∂ r i ∂ P J=\frac{\partial r_i}{\partial P}J=Pri为雅可比矩阵,r rr为残差向量。通过动态调整λ \lambdaλ使参数更新量Δ P \Delta PΔP最小,当Δ E < 0.1 cm \Delta E<0.1\text{cm}ΔE<0.1cmΔ E \Delta EΔE为新旧残差平方和之差)时停止迭代。

4、参考文献

基于车载LIDAR技术的城市区域杆状地物提取和分类_董健龙

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/3 13:04:23

农业AI实战:基于YOLOv8的茶叶与杂草目标检测数据集解析与模型训练

简介&#xff1a;本资源是面向农业AI应用开发者的茶叶与杂草目标检测专用数据集&#xff0c;聚焦茶园场景下的作物识别与杂草定位问题&#xff0c;适用于YOLO系列模型训练及实例分割任务开发。压缩包共656个文件&#xff0c;含327张真实农田采集的JPG图像、327份对应YOLO格式标…

作者头像 李华
网站建设 2026/9/3 13:06:25

yeyeeyeyyeyeyeyeyeyeyeyeyeye

课堂笔记Shell 脚本最朴素的形态就是把多个命令串联在一起执行。在命令行 中&#xff0c;我们可以用分号将多个命令放在同一行&#xff0c;shell 会按顺序依次执行它们。这种方式虽然简单&#xff0c;但已经体现了脚本的核心思想——将一系列操作自动化。比如 date; who 会先显…

作者头像 李华
网站建设 2026/9/4 21:41:16

开源大模型安全弱点剖析:从评估到部署的实战指南

一次内部测试&#xff0c;让我对开源大模型的安全态度彻底改变。两个月前&#xff0c;我们团队从社区下载了一个并称“能力领先、安全对齐良好”的开放权重模型&#xff0c;准备用它搭建内部知识库问答系统。前两周一切正常&#xff0c;模型回答准确、语气礼貌、响应速度也在可…

作者头像 李华
网站建设 2026/9/3 15:56:19

基于YOLOv8的食品图像分割实战:从数据标注到模型部署全解析

简介&#xff1a;本资源是一个基于YOLOv8实现的食品图像分割与识别系统&#xff0c;面向人工智能初学者、计算机视觉开发者及食品智能分析应用场景的研究者&#xff0c;解决食品图像中多类别目标的精准定位、像素级分割与语义识别问题&#xff0c;适用于饮食辅助、营养评估、智…

作者头像 李华
网站建设 2026/9/4 16:53:34

第324篇 嵌入式Linux系统开发

上篇聊了EtherCAT工业以太网。这篇聊嵌入式Linux——当MCU的性能不够用&#xff0c;需要跑复杂的算法&#xff08;视觉、SLAM、运动规划&#xff09;时&#xff0c;就得用嵌入式Linux。面试中嵌入式Linux的题目覆盖面很广&#xff1a;内核裁剪、设备树、驱动框架、根文件系统&a…

作者头像 李华