3D匹配算法简述

一.什么是3D匹配

形状、大小一致的源点云与目标点云之间的刚体变换。

源点云通过平移与旋转操作变换到目标点云位置使之重合。

源点云与目标点云坐标系之间的变换。

典型的应用流程为:

3D相机数据采集----点云生成----点云处理----目标点云提取----3D模板匹配----位姿估计

3D模板匹配的流程为:3D粗匹配----3D精匹配

二.粗匹配的原理(PPF算法)

基于点对特征的匹配过程:

对源点云所有点对特征进行记录

遍历目标点云点对,并在记录中查找特征一致的点对。

通过对应点对求取源点云到目标点云的转换关系。

1. PPF的定义:

(1)两点间的距离:|d|

(2)点1的法线与向量d的夹角

(3)点2的法线与向量d的夹角

(4)点1的法线与点2的法线的夹角

2.off-line准备:

(1)计算模型点云中任意两点的PPF

(2)以其为哈希表的key并在对应的位置存入点对信息

创建的哈希表如下:

PPFPairs
F(m1, m2)(m1, m2),(m3, m4),(m7, m9),(m7, m10),(m1, m6)......
F(m2, m3)(m2, m3),(m3, m5),(m4, m8),(m6, m8),(m7, m8)......
F(m1, m4)(m1, m4)
............
............

 3.PPF的步骤

(1)取得点云后,在点云中选择一个参考点

(2)将场景中的点分为参考点(reference point)和其他的点(refered point),在参考点中选择一点,并与其他的点种的每一个点组成的点对且计算PPF

如选择一个参考点Sr1,计算每个点对的PPF,即为计算F(Sr1, Si1),F(Sr1, Si2),F(Sr1, Si3)......

(3)用计算的PPF来查哈希表,并将对应的模型点云中的点对抽出

查表的例子:

(4)通过抽出的点对计算位姿(局部坐标系)

将场景的点Sr和模型的点mr转移到世界坐标系原点,将此两点的法线并齐,计算旋转角α

计算位姿的例子:

依次计算每个点对的位姿,得到旋转角α,

 (5)对(位姿,对应的模型点)进行投票

(6)输出最高票的(位姿,对应的模型点)

(7)改变参考点并重复步骤2--6

在完成此步骤后,对于每一个参考点有一个组合F=(参考点,对应的模型的点,位姿,票数)

(8)进行聚类并输出位姿

对F中的位姿进行聚类,计算每个cluster的分数并输出最高票数对应的位姿,分数是每个cluster中所有参考点的票数总和

三.精匹配的原理

精匹配常用的方法有

1.Iterative Closest Point(ICP)

迭代最近点:由于未知点集间对应关系,即认为距离最近的两个点为对应点,所以称为迭代最近点。

求解方法:构建为最小二乘问题,求解使两个点集误差平方和最小的变换(R,T)

方法一:点到点匹配,基于svd分解的解析解 

方法二:点到面匹配,基于非线性优化的迭代解

优点:思路简单,实现容易

缺点:对噪声和异常点比较敏感,鲁棒性较差

2.Coherent Point DriftCPD

将点云匹配问题,构建为基于高斯混合模型的极大似然估计,并通过期望最大算法(EM算法)求解。

以每一个模型点的坐标为中心,构建一个高斯核,组成高斯混合模型。每一个场景点,置身于高斯核中,与每一个模型点构成的高斯核有一个对应关系,比如最近点的对应概率可能是0.8,次近点可能是0.19,其它点的对应关系非常小0.01。那对应概率最大的模型点高斯核,即为该场景点的对应点,归一化后的概率值即为点对权重

通过高斯混合概率分布表达模型点和场景点的对应关系(对应点+权重),而不是ICP硬性假设最近点100%就是对应点。

EM算法建模、求解过程

优化目标:估计一组参数,使场景点云在根据模型云构造的高斯混合模型中后验概率最大,即使模型点和场景点间距均方误差最小。

已知参数:高斯核的位置(均值)

未知参数:高斯核的方差是什么?模型点与场景点之间的对应关系?已知对应关系后,模型点到场景点之间的位姿变换?

EM迭代过程:

第一步,初始化:

根据粗匹配初始位姿,将高斯核初始位置(均值)构建在每个模型点上,根据粗匹配的位姿偏差人工设置一个默认值(比如3毫米)。

第二步,Expection-Step(求解对应关系)

计算场景点在每个模型高斯核中概率值,取概率最大的高斯核模型点为对应点,归一化后的概率值为点对权重。

第三步,Maximization-Step(求解位姿变换):

已知模型点与场景点的对应关系(对应点+权重),构建为最小二乘问题,求解使两个点集误差平方和最小的变换(R,T)

交替进行,获取最佳对应关系和匹配位姿。

优点:鲁棒性优于ICP

缺点:时间复杂度Omnd),点数稍多,速度极慢,无法在真实应用场景推广应用

3.FilterReg

基本思想:

将点云匹配问题,构建为基于高斯混合模型的极大似然估计,并通过期望最大算法(EM算法)求解。

不同于CPD,为了避免每次迭代后都要重建场景latticeFilterReg将高斯混合模型构建在场景点上。

CPD取得是概率最大的一个点作为对应点。

FilterReg是周围一定范围内所有点的权重均值。

如何获取模型点对应的场景点Expectation step)

通过permutohedral lattice将场景点云构建为高维高斯过滤模型,模型点投影到lattice数据结构中,对模型点3倍标准偏差范围内的场景点做高斯过滤,过滤后的目标点即为模型点的对应点。

如何计算点对权重?

FilterReg中点对权重表达的物理意义:

模型点找到的场景点非outlier point的概率,可以称为点对有效性概率。

计算方式:

weight sum = 模型点在lattice中收集的权重和

点对有效性概率 = weight sum / (weight sum + constant)

从计算公式理解,模型点投影的lattice中,点数越多,距离lattice中心越近,那么权重和越大,点对有效性越高。

4.EM算法收敛性

EM算法为什么能收敛呢?

EM算法收敛性的简易理解角度:坐标上升法(coordinate ascent)。

       图中的直线式迭代优化的路径,可以看到每一步都会向最优值前进一步,而且前进路线是平行于坐标轴的,因为每一步只优化一个变量。

       这犹如在x-y坐标系中找一个曲面的极值,然而曲面函数不能直接求导,因此梯度下降方法就不适用了。但固定一个变量后,另外一个可以通过求导得到,因此可以使用坐标上升法,一次固定一个变量,对另外的求极值,最后逐步逼近极值。

对应到EM上:

E步:固定模型初始位姿,优化点对对应关系;

M步:固定点对对应关系,优化模型位姿; 交替进行将极值推向最大。 

5.点集配准收敛条件

条件一,模型初始位姿临近目标极值,即粗匹配的初始位姿偏差不能过大。

例:曲轴工件,粗匹配给出了反向位姿

条件二,模型点云和场景点云在形状上提供足够的约束

约束刚体位姿需要六个维度,任意一个维度上缺失足够的约束,都无法输出唯一的全局最优解。

例:轴对称物体,下图工件沿X轴对称,所以Y轴和Z轴的方向是在X轴的垂直平面上是随机状态,没有提供足够约束,即在Y轴和Z轴未提供足够的约束。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【今日EDA行业分析】2025年3月8日

今日行业分析:半导体行业技术博弈与国产 EDA 的突破与挑战 一、引言 在半导体行业的复杂生态系统中,EDA(电子设计自动化)技术处于核心地位,是连接芯片设计、制造与应用的关键纽带。当下,全球半导体领域正经…

NAT NAPT

NAT NAT(Network Address Translation,网络地址转换) 主要用于在不同网络(如私有网络和公共互联网)之间进行 IP 地址转换,解决IP 地址短缺问题,并提供一定的安全性。 IPv4 地址是 32 位&#xf…

固定表头、首列 —— uniapp、vue 项目

项目实地&#xff1a;也可以在 【微信小程序】搜索体验&#xff1a;xny.handbook 另一个体验项目&#xff1a;官网 一、效果展示 二、代码展示 &#xff08;1&#xff09;html 部分 <view class"table"><view class"tr"><view class&quo…

微服务——网关、网关登录校验、OpenFeign传递共享信息、Nacos共享配置以及热更新、动态路由

之前学习了Nacos&#xff0c;用于发现并注册、管理项目里所有的微服务&#xff0c;而OpenFeign简化微服务之间的通信&#xff0c;而为了使得前端可以使用微服务项目里的每一个微服务的接口&#xff0c;就应该将所有微服务的接口管理起来方便前端调用&#xff0c;所以有了网关。…

[免费]微信小程序(图书馆)自习室座位预约管理系统(SpringBoot后端+Vue管理端)(高级版)【论文+源码+SQL脚本】

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的微信小程序(图书馆)自习室座位预约管理系统(SpringBoot后端Vue管理端)(高级版)&#xff0c;分享下哈。 项目视频演示 【免费】微信小程序(图书馆)自习室座位预约管理系统(SpringBoot后端Vue管理端)(高级版…

Android15请求动态申请存储权限完整示例

效果: 1.修改AndroidManifest.xml增加如下内容: <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><uses-perm

深度学习系列79:Text2sql调研

参考 https://github.com/topics/text-to-sql 这里是一些资源&#xff1a;https://github.com/eosphoros-ai/Awesome-Text2SQL/blob/main/README.zh.md 这里是综述文章&#xff1a;https://zhuanlan.zhihu.com/p/647249972 1. 数据集 Spider: 一个跨域的复杂text2sql数据集&a…

Deepseek应用技巧-chatbox搭建前端问答

目标&#xff1a;书接上回&#xff0c;由于本地私有化部署了deepseek的大模型&#xff0c;那怎么能够投入生产呢&#xff0c;那就必须有一个前端的应用界面&#xff0c;好在已经有很多的前人已经帮我们把前段应用给搭建好了&#xff0c;我们使用就可以啦&#xff0c;今天我们就…

Bootstrap:图标库的安装及其使用

一、安装 使用npm包管理器安装。 npm i bootstrap-icons 二、使用图标 首先先引入bootstrap-icons.css库&#xff0c;然后从官方网站选择想要的图标然后复制使用代码。 示例代码&#xff1a;使用vue引入对应css文件后&#xff0c;使用库图标。 <script setup>import &qu…

Linux网络之数据链路层协议

目录 数据链路层 MAC地址与IP地址 数据帧 ARP协议 NAT技术 代理服务器 正向代理 反向代理 上期我们学习了网络层中的相关协议&#xff0c;为IP协议。IP协议通过报头中的目的IP地址告知了数据最终要传送的目的主机的IP地址&#xff0c;从而指引了数据在网络中的一步…

TCP7680端口是什么服务

WAF上看到有好多tcp7680端口的访问信息 于是上网搜索了一下&#xff0c;确认TCP7680端口是Windows系统更新“传递优化”功能的服务端口&#xff0c;个人理解应该是Windows利用这个TCP7680端口&#xff0c;直接从内网已经具备更新包的主机上共享下载该升级包&#xff0c;无需从微…

“量子心灵AI“的监控仪表盘 - javascript网页设计案例

【前端实战】基于Three.js和Chart.js打造未来科技风AI监控仪表盘 本文通过AI辅助开发&#xff0c;详细记录了一个高级前端项目的完整实现过程。文章包含核心代码片段、技术要点及遇到的问题与解决方案。适合有一定前端基础的开发者学习参考。 1. 项目概述 本文详细介绍了一个名…

vtkDepthSortPolyData 根据相机视图方向对多边形数据进行排序

1. 作用 在 3D 渲染中&#xff0c;透明对象的渲染顺序非常重要。如果透明对象的渲染顺序不正确&#xff0c;可能会导致错误的视觉效果&#xff08;例如&#xff0c;远处的透明对象遮挡了近处的透明对象&#xff09;。vtkDepthSortPolyData 通过对多边形数据进行深度排序&#…

第十五章:go package 包的管理

import f "fmt"   // 注意 这里 f 是包的别名 init初始化函数 在每一个Go源文件中&#xff0c;都可以定义任意个如下格式的特殊函数&#xff1a; func init(){// ... } package&#xff1a;声明包的关键字 packagename&#xff1a;包名&#xff0c;可以不与文…

【从零开始学习计算机科学】计算机组成原理(七)存储器与存储器系统

【从零开始学习计算机科学】计算机组成原理(七)存储器与存储器系统 存储器存储器相关概念存储器分类存储器系统存储器性能指标存储器层次概述程序访问的局部性原理SRAM存储器存储器的读写周期DRAM存储器DRAM控制器高性能的主存储器存储器扩展只读存储器ROM光擦可编程只读存储…

开源!速度100Kb/s的有线和无线双模ESP32S3芯片的DAP-Link调试器

开源&#xff01;速度100Kb/s的有线和无线双模ESP32S3芯片的DAP-Link调试器 目录 开源&#xff01;速度100Kb/s的有线和无线双模ESP32S3芯片的DAP-Link调试器本项目未经授权&#xff0c;禁止商用&#xff01;本项目未经授权&#xff0c;禁止商用&#xff01;本项目未经授权&…

20250212:linux系统DNS解析卡顿5秒的bug

问题: 1:人脸离线识别记录可以正常上传云端 2:人脸在线识别请求却一直超时 3:客户使用在线网络 思路:

爱普生温补晶振 TG5032CFN高精度稳定时钟的典范

在科技日新月异的当下&#xff0c;众多领域对时钟信号的稳定性与精准度提出了极为严苛的要求。爱普生温补晶振TG5032CFN是一款高稳定性温度补偿晶体振荡器&#xff08;TCXO&#xff09;。该器件通过内置温度补偿电路&#xff0c;有效抑制环境温度变化对频率稳定性的影响&#x…

【病毒分析】熊猫烧香病毒分析及其查杀修复

目录 前言 一、样本概况 1.1 样本信息 1.2 测试环境及工具 1.3 分析目标 二、具体行为分析 2.1 主要行为 2.1.1 恶意程序对用户造成的危害 2.2 恶意代码分析 2.2.1 加固后的恶意代码树结构图(是否有加固) 2.2.2 恶意程序的代码分析片段 三、解决方案(或总结) 3.1 …

JavaWeb后端基础(7)AOP

AOP是Spring框架的核心之一&#xff0c;那什么是AOP&#xff1f;AOP&#xff1a;Aspect Oriented Programming&#xff08;面向切面编程、面向方面编程&#xff09;&#xff0c;其实说白了&#xff0c;面向切面编程就是面向特定方法编程。AOP是一种思想&#xff0c;而在Spring框…