三维点云处理-模型拟合

news2024/11/24 11:50:13

  以直线拟合为例,模型拟合常用的方法有Least Square(最小二乘)、Hough Transform(霍夫变换)、Random Sample Consensus(RANSAC)等。那么该如何区分和使用这几种方法呢?

  1. 情况1:已知 inlier 点,即已知哪些点可以用来拟合模型;(最小二乘)
  2. 情况2:如果数据中存在少量outliers?(①Robust 最小二乘,对loss fuction进行修改;②Hough变换; ③RANSAC;)
  3. 情况3:如果数据中存在大量outliers或者待拟合的模型不止一种?(①Hough变换;②RANSAC)
    image.png

1. 最小二乘

目标:给定一堆数据点 { p 1 , p 2 , . . . , p n } \{p_1,p_2,...,p_n \} {p1,p2,...,pn},如何找到一个和这些数据点最匹配的直线方程?
模型 a x + b y + c = 0 ax+by+c=0 ax+by+c=0
损失函数
E = ∑ i = 1 n ( a x i + b y i + c ) 2 E=\sum_{i=1}^n (ax_i+by_i+c)^2 E=i=1n(axi+byi+c)2
  其中: a x i + b y i + c ax_i+by_i+c axi+byi+c表示点 ( x i , y i ) (x_i,y_i) (xi,yi)到拟合直线的距离。
求解损失函数
image.png

1.1 最小二乘的几种形式:

  1. Ax=0
    image.png
    解为 A的最小特征值的特征向量(前提是A是一个列满秩矩阵,即 n ≥ m);

  2. Ax=b
    image.png
    解为 x ^ = ( A T A ) − 1 A T b \hat{x} = (A^T A)^{-1} A^Tb x^=(ATA)1ATb(前提是A是一个列满秩矩阵,即 n ≥ m);

  3. Ax=b, s.t., Cx = 0
    解法可以使用 拉格朗日乘值法。

1.2 Robust最小二乘

  由于最小二乘对噪声比较敏感:
image.png
  因此提出了Robust最小二乘:
image.png
  因为当待拟合数据中存在噪声点时, ( a x i + b y i + c ) (ax_i + by_i + c) (axi+byi+c)平方的值会比较大,因此采用 |s| 或取对数的方式来减小误差值,像Cauchy, Huber这样的鲁棒损失函数减少了异常值的影响。但此时这样的损失函数形式会导致问题不再是线性的,就无法直接使用最小二乘求解。

解决方法
  将Robust损失函数和线性LSQ耦合,满足最小二乘形式即可:
image.png
优化方法
  Gradient descent(梯度下降法)、Gauss-Newton(高斯牛顿法)、Levenberg-Marquardt(LM)

总结
  最小二乘法简单、速度快,但是对噪声比较敏感,无法拟合多个模型;

2. Hough变换

  核心思想:原始空间的点可以转化为参数空间的线,或者参数空间的线可以转化成原始空间的点。
image.pngimage.png
  当原始空间的函数相对复杂,无法直接获取参数k空间的交点时,可以使用 投票(most votes)的方式。如下图所示,以参数分辨率为最小单元建立网格,假设:
  在a方向:对于a=0.1,计算b=0.21,此时向下取整后标记(0.1, 0.2)对应的网格;同样的,对于a=0.2,计算b=0.26,标记(0.2, 0.2)对应的网格;
  在b方向:同样以最小分辨率标记对应网格。

  最终遍历所有网格点,存在两个标记点的网格点就是参数空间下的交点。(参数的准确性与网格的分辨率有关)
image.png
  需要注意的是,直线方程 y = a x + b y=ax+b y=ax+b是不均匀的,无法表示垂直线(a为无穷大的情况),因此考虑采用模型参数化的方法:
x c o s ( θ ) + y s i n ( θ ) = r x cos(\theta) + y sin(\theta) = r xcos(θ)+ysin(θ)=r
  其中, θ , r \theta, r θ,r表示模型参数。
  同样的采用投票(most votes)的方式,分别固定 r 和 𝜃。如果需要更高的精度,可以提高分辨率 r ,如果需要更快的速度,可以提高𝜃。
  小技巧:在搜索最高投票参数之前,可以在参数空间做一个高斯模糊,减少噪声的影响。

2.1 如果有3个参数呢?

( x − a ) 2 + ( y − b ) 2 = r 2 (x-a)^2 + (y-b)^2 = r^2 (xa)2+(yb)2=r2
步骤1:首先固定 r,设定最小的分辨率;
步骤2:均匀地对 𝜃 进行采样 { θ 1 , θ 2 , . . . , θ k } \{\theta_1,\theta_2,...,\theta_k \} {θ1,θ2,...,θk}
步骤3:用 𝜃 表示参数 a、b
image.png
步骤4:搜索投票为3的网格区域
image.png
总结-优点
  对噪声不敏感、所要求的数据点形状可以是不完整的、可以扩展到多种模型;
总结-缺点
  无法对多个参数进行拟合(一般只用在二维和三维空间,即模型参数在2-3个的情况下)。

3. RANSAC

  RANSAC模型拟合的效果与数据中inlier点的比例有关,且对模型参数的个数无明确要求。
基本思路:以求解模型所需的最小数据子集为标准进行采样。

  1. 随机选取一个样本(通常为求解模型参数所需的最小子集,如直线模型需要两个样本点)
    p 0 = ( x 0 , y 0 ) ,   p 1 = ( x 1 , y 1 ) p_0=(x_0,y_0), \space p1=(x_1,y_1) p0=(x0,y0), p1=(x1,y1)
  2. 计算模型参数:
    在这里插入图片描述
  3. 计算Consensus,即每个点 p i = ( x i , y i ) p_i =(x_i,y_i) pi=(xi,yi)的误差函数:

image.png

  1. 计算与当前模型相拟合的数据点,即“模型的支持者”: d i < τ ( i n l i e r ) d_i < \tau(inlier) di<τ(inlier)
  2. 重复迭代步骤1-4 N次,选择inlier最多的模型。

image.png

3.1 RANSAC参数选择

  RANSAC模型拟合过程中有两个参数需要确认:距离阈值 τ 和迭代次数 N。

  1. 距离阈值(τ)的选取

  一般通过实验测试得到 d,当然也可以通过卡方分布(Chi-square distribution χ 2 \chi^2 χ2)计算得到理论值(但该方法不实用,因为实际问题中通常无法提前知道数据分布信息)。

卡方分布:k 个独立的标准高斯分布的和。
  假设每个数据点到模型的距离符合高斯分布 d ∼ N ( 0 , σ 2 ) d \sim N(0,\sigma^2) dN(0,σ2)。假设希望95%的置信度来认为一个点是inlier点,那么 τ 的取值受卡方分布参数 k的 自由度的影响:
image.png

  1. 迭代次数(N)的选取

  选择一个N,使得N次迭代后,至少有一个模型没有outliers的概率 p,比如目标概率p=0.9/0.99 (取决于希望模型迭代 更快速or更准确)。
  如何确定N?

  • e:outlier ratio(所有数据点中outlier部分的比例)
  • s:模型解算所需的最少数据点数(如直线拟合需要最少2个点)
  • N:迭代次数
  • p:执行N次迭代后,至少有一个模型没有outlier的概率,即至少拿到一个好的sample的概率;

image.png
N = l o g ( 1 − p ) l o g ( 1 − ( 1 − e ) s ) N=\frac{log(1-p)}{log(1-(1-e)^s)} N=log(1(1e)s)log(1p)
  其中,比较关键的信息是数据点的outlier ratio — e。

3.2 应用技巧

  1. 提前终止迭代:(如当前拟合模型的inlier ratio已经达到了预期的效果)
    image.png
    即满足 T n t o t a l ≥ 1 − e \frac{T}{n_{total}} \ge 1-e ntotalT1e时就可以提前终止了。

  2. RANSAC + LSQ:使用RANSAC粗拟合获取inlier,再对inlier使用LSQ对模型进行优化。

image.png
总结-优点
  简单、通用性强,通常在实践中效果较好,在inlier ratio较低时也可以取得较好的效果;
总结-缺点
  需要进行多次实验来选取 τ,当inlier ratio很低时,迭代次数较多。

4. 实践练习

  基于Kitti数据集激光雷达点云数据,利用RANSAC方法拟合地面,筛选地面点和非地面点,并对非地面点进行聚类及可视化。

  1. 原始点云
    image.png

  2. 感兴趣区域点云提取
    image.png

  3. 地面点云提取
    image.png

  4. 障碍物点云聚类
    image.png

障碍物聚类-Peek 2024-05-07 19-00

参考链接

  1. 自动驾驶激光雷达物体检测技术
  2. 点云学习第四周(模型拟合)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1649289.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

工控人机交互界面编辑软件附描述(电脑软件分享)

HMI 概述&#xff1a;本文为分享型文档 本文摘要 昆仑通泰触摸屏软件分享。   给触摸屏下载程序时使用。   本人用过案例西门子s7-1200/200smart ST30与触摸屏型号“TPC1061Ti”通讯。 文章目录 本文摘要1.MCGS组态环境嵌入式版&#xff0c;大部分人用过此款&#xff0c;容…

一个物业管理服务项目的思考——智慧停车场无人值守呼叫系统到电梯五方对讲再到呼叫中心

目录 起源智慧停车场无人值守呼叫系统然后电梯五方对讲系统又然后物业呼叫中心集控E控中心怎么做 起源 小区里新装了智慧停车场系统&#xff0c;马上展现出了科技化、现代化的新形象。一个显著的好处是&#xff1a;停车场的出入口&#xff0c;再也看不到司机和保安争吵的场景了…

【GDPU】数据结构实验十 哈夫曼编码

【实验内容】 1、假设用于通信的电文仅由8个字母 {a, b, c, d, e, f, g, h} 构成&#xff0c;它们在电文中出现的概率分别为{ 0.07, 0.19, 0.02, 0.06, 0.32, 0.03, 0.21, 0.10 }&#xff0c;试为这8个字母设计哈夫曼编码。 提示:包含两个过程:&#xff08;1&#xff09;构建…

突破传统 重新定义:3D医学影像PACS系统源码(包含RIS放射信息)实现三维重建与还原

突破传统&#xff0c;重新定义PACS/RIS服务,洞察用户需求&#xff0c;关注应用场景&#xff0c;新一代PACS/RIS系统&#xff0c;系统顶层设计采用集中分布式架构&#xff0c;满足医院影像全流程业务运行,同时各模块均可独立部署&#xff0c;满足医院未来影像信息化扩展新需求、…

运动控制“MC_MoveVelocity“功能块详细应用介绍

1、运动控制单位u/s介绍 运动控制单位[u/s]介绍-CSDN博客文章浏览阅读91次。运动控制很多手册上会写这样的单位,这里的u是英文单词unit的缩写,也就是单位的意思,所以这里的单位不是微米/秒,也不是毫米/秒,这里是一个泛指,当我们的单位选择脉冲时,它就是脉冲/秒,也就是…

java--GUI

目录 GUI&#xff08;Graphical User Interface&#xff09; swing 窗口(JFrame) 面板(JPanel) 流水布局(FlowLayout) 边界布局(BorderLayout) ​编辑 网格布局(GridLayout) 按钮(JButton) 标签组件&#xff0c;用来设置文字(JLabel) 单行文本框组件(JTextField) 多…

高实时、高可靠的微内核操作系统——鸿道Intewell

近年来&#xff0c;我国不断推进工业转型升级&#xff0c;力求实现从传统工业大国向现代工业强国的跨越。想要在新一轮科技革命中“超车”&#xff0c;需要从多个维度进行深度布局和全面发力。 ——科技创新是核心驱动力 积极推动工业结构的优化和升级&#xff0c;通过发展新…

全新拼团模式 你一定没见过 白拿产品还有收益!

在七星拼团模式中&#xff0c;奖励制度是其核心吸引力之一。今天&#xff0c;我们将深入探讨这一模式的三种奖励&#xff1a;直推奖、滑落奖和出局奖&#xff0c;以及它们背后的互助机制。 奖励规则概述 首先&#xff0c;让我们了解一下奖励的具体规则。假设商品售价为499元&a…

【MM32F3270 Micropython】pwm输出

文章目录 前言一、PWM脉宽调制技术介绍二、machine.PWM 类2.1 machine.PWM 类的构造对象2.2 PWM 对象初始化2.3 关闭PWM设备2.4 设置pwm的周期2.5 设置占空比 三、pwm示例代码总结 前言 MicroPython是一种精简的Python 3编程语言实现&#xff0c;旨在在微控制器和嵌入式系统上…

突破AI迷雾:英特尔携手星环科技打造向量数据库革新方案,直降大模型幻觉

去年爆火的大模型&#xff0c;正在从百模大战走向千行百业落地应用。不过行业数据规模有限&#xff0c;企业数据隐私安全的要求等等因素&#xff0c;都让行业大模型的准确率面临挑战。近期发布的《CSDN AI 开发者生态报告》数据显示&#xff0c;“缺乏数据/数据质量问题”在大模…

RS2103XH 功能和参数介绍及规格书

RS2103XH 是一款单刀双掷&#xff08;SPDT&#xff09;模拟开关芯片&#xff0c;主要用于各种模拟信号的切换和控制。下面是一些其主要的功能和参数介绍&#xff1a; 主要功能特点&#xff1a; 模拟信号切换&#xff1a;能够连接和断开模拟信号路径&#xff0c;提供灵活的信号路…

set_input_delay的理解

1&#xff0c;set_input_delay约束理解 input_delay是指输入的数据到达FPGA的pad引脚时相对于时钟边沿的延迟有多大&#xff0c;单位是ns&#xff0c;数值可以是正&#xff0c;也可以是负。通过set_input_delay约束告诉编译器输入时钟和输入数据的相位关系。如下图所示假设时钟…

uniapp的app端软件更新弹框

1&#xff1a;使用html PLUS实现&#xff1a;地址HTML5 API Reference (html5plus.org)&#xff0c;效果图 2&#xff1a;在app.vue的onLaunch生命周期中&#xff0c;代码如下&#xff1a; onLaunch: function() {let a 0let view new plus.nativeObj.View(maskView, {backg…

PyRun_SimpleString(“import cv2“); 报错解决

#include <Python.h> #include <iostream>using namespace std;int main() {Py_Initialize();if (!Py_IsInitialized()){printf("初始化失败&#xff01;");return 0;}PyRun_SimpleString("import sys");PyRun_SimpleString("sys.path.ap…

【大模型】LLaMA-1 模型介绍

文章目录 一、背景介绍二、模型介绍2.1 模型结构2.2 模型超参数2.3 SwiGLU 三、代码分析3.1 模型结构代码3.2 FairScale库介绍 四、LLaMA家族模型4.1 Alpaca4.2 Vicuna4.3 Koala(考拉)4.4 Baize (白泽)4.5 Luotuo (骆驼&#xff0c;Chinese)4.6 其他 参考资料 LLaMA&#xff08…

本地运行AI大模型简单示例

一、引言 大模型LLM英文全称是Large Language Model&#xff0c;是指包含超大规模参数&#xff08;通常在十亿个以上&#xff09;的神经网络模型。2022年11月底&#xff0c;人工智能对话聊天机器人ChatGPT一经推出&#xff0c;人们利用ChatGPT这样的大模型帮助解决很多事情&am…

如何将 ONLYOFFICE 协作空间服务器版更新至 2.5

最近我们发布了 ONLYOFFICE 协作空间 2.5 云端版。好消息&#xff0c;该文档协作平台的自托管版本也已推出。现在&#xff0c;您可以轻松更新协作空间的实例&#xff0c;在本地尝试所有新功能。阅读本文了解更多信息。 ONLYOFFICE 协作空间 2.5 新功能 更新到 ONLYOFFICE 协作…

Type-C转音频(USB2.0数据传输)+PD充电芯片乐得瑞LDR6500/LDR6023

LDR6500 USB-C DRP 接口 USB PD 通信芯片概述 Type-C转音频(USB2.0数据传输)PD充电芯片乐得瑞LDR6500LDR6500是乐得瑞科技针对USB Type-C标准中的Bridge设备而开发的USB-C DRP&#xff08;Dual Role Port&#xff0c;双角色端口&#xff09;接口USB PD&#xff08;Power Deliv…

彻底解决python的pip install xxx报错(文末附所有依赖文件)

今天安装pip install django又报错了&#xff1a; C:\Users\Administrator>pip install django WARNING: Ignoring invalid distribution -ip (d:\soft\python\python38\lib\site-pac kages) Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple Collecting djan…

redis持久化存储

Redis的持久化机制 Redis是一个基于内存的数据库&#xff0c;它的数据是存放在内存中&#xff0c;内存有个问题就是关闭服务或者断电会丢失。Redis的数据也支持写到硬盘中&#xff0c;这个过程就叫做持久化。 Redis提供如下两种持久化方式 RDB&#xff08;Redis DataBase&am…