ICP点云配准初探

ICP点云配准初探

  • 1 简介
  • 2 常用的点云配准算法
  • 3 ICP(Iterative Closest Point,最近点迭代法)
    • 3.1 ICP要解决的问题
    • 3.2 ICP的核心思想
    • 3.3 算法流程
    • 3.4 总结
  • 4 ICP优缺点

1 简介

在逆向工程,计算机视觉,文物数字化等领域中,由于点云的不完整,旋转错位,平移错位等,使得要得到的完整的点云就需要对局部点云进行配准;

为了得到被测物体的完整数据模型,需要确定一个合适的坐标系,将从各个视角得到的点集合并到统一的坐标系下形成一个完整的点云,
然后就可以方便进行可视化的操作,这就是点云数据的配准。

点云配准的应用还有很多。
比如:
形状还原
运动估计
外观分析
纹理映射
追踪
等等
在这里插入图片描述

那么点云配准的本质是什么呢?

本质就是把不同的坐标系中测得到的数据点云进行坐标系的变换,以得到整体的数据模型,
问题的关键是如何让得到坐标变换的参数R(旋转矩阵)和T(平移向量),使得两视角下测得的三维数据经坐标变换后的距离最小。

目前配准算法按照过程可以分为全局配准和局部配准

PCL中有单独的配准模块,实现了配准相关的基础数据结构,和经典的配准算法如ICP。

即:给定两个来自不同坐标系的三维数据点集,找到两个点集空间的变换关系,使得两个点集能统一到同一坐标系统中,即配准过程
求得旋转和平移矩阵。

P2 = R*P1 + T    [R t]

点云配准的概念也可以类比于二维图像中的配准,只不过二维图像配准获取得到的是x,y,alpha,beta等放射变化参数

三维点云配准可以模拟三维点云的移动和对齐,也就是会获得一个旋转矩阵和一个平移向量,
通常表达为一个4×3的矩阵,其中3×3是旋转矩阵,1x3是平移向量。
严格说来是6个参数,因为旋转矩阵也可以通过罗格里德斯变换转变成1*3的旋转向量。

2 常用的点云配准算法

下面介绍下几种常用的点云配准算法。

  1. 正态分布变换方法: NDT 正态分布变换进行配准(normal Distributions Transform)
  2. 著名的迭代最近点 Iterative Closest Point (ICP) 点云配准

这里主要讲述ICP点云配准算法 。

3 ICP(Iterative Closest Point,最近点迭代法)

3.1 ICP要解决的问题

ICP要解决的问题就是将两片点云进行对齐,通过刚性配准的方法,即旋转和平移。

现在有两片点云,我们分别叫做model shapescene shape,我们一般把model shapescene shape上配准。

具体的,对于model shape来讲:

  • 给定一个model shape,可以有多种表示形式,例如:
    – 点集、线段集、 隐式曲线、参数曲线、mesh、隐式曲面、参数化曲面(如下图所示)
    在这里插入图片描述

对于scene shape来讲:

• 给定一个scene shape,其表示为点集,scene shape(下图绿线)可能对应于model shape(下图黄线)
在这里插入图片描述

• 需要估计最佳旋转和平移,将scene shape与model shape对齐或配准
在这里插入图片描述

3.2 ICP的核心思想

ICP算法本质上是基于最小二乘法的最优配准方法。

该算法重复进行选择对应关系点对,计算最优刚体变换这一过程,直到满足正确配准的收敛精度要求。

算法的输入:参考点云(model shape)和目标点云(即scene shape),停止迭代的标准。
算法的输出:旋转和平移矩阵,即转换矩阵。

那么问题来了,

我们怎么去找到对应的关系点对?

我们找到怎么去判断是否达到正确配准的收敛精度要求?

这里我简单的说一下,后面还会细讲

对于“我们怎么去找到对应的关系点对?”,

方法有很多,比如穷举法,这种就比较耗时;所以为了提升效率,我们会做一个粗对齐,比如先特征检测,基于特征做一个粗对齐,再去找最近邻的点去精对齐。这里大概的罗列了下:

使用点匹配时,使用点的XYZ的坐标作为特征值,针对有序点云和无序点云数据的不同的处理策略:
1. 穷举配准(brute force matching);
2. kd树最近邻查询(FLANN);
3. 在有序点云数据的图像空间中查找;
4. 在无序点云数据的索引空间中查找.

特征描述符匹配:
1. 穷举配准(brute force matching);
2. kd树最近邻查询(FLANN)。

为了得到更高的收敛精度,我们需要保证我们的点尽可能多的比例是有效点,这里注意的是,有噪点很正常,但是噪点的比例不要太高 ,太高会影响到我们的收敛精度,噪点越多,错误对应关系的比例就越多。

由于噪声的影响,通常并不是所有估计的对应关系都是正确的,
由于错误的对应关系对于最终的刚体变换矩阵的估算会产生负面的影响,
所以必须去除它们,可以采用随机采样一致性估计,或者其他方法剔除错误的对应关系,
最终只使用一定比例的对应关系,这样既能提高变换矩阵的估计同时也可以提高配准点的速度。

3.3 算法流程

ICP计算流程如下:
在这里插入图片描述
总结为

  1. 对原始点云数据进行采样(关键点 —— NARF、SIFT、FAST、均匀采样 UniformSampling,特征描述符 —— descriptions,NARF、 FPFH、BRIEF 、SIFT、ORB )
  2. 确定初始对应点集(匹配 matching )
  3. 去除错误对应点对(随机采样一致性估计 RANSAC )
  4. 坐标变换的求解
  5. 计算误差,反复迭代,直到误差小于阈值。

如果正确的对应关系点对是已知的,那我们就很快的找到变换关系(即旋转和平移),如下图所示
在这里插入图片描述
如何找到对应关系点对呢?
用户输入? 特征检测?

或者是换一种思路,
假设最近邻点是对应点,如下图

在这里插入图片描述

如果起始位置“足够接近”则会很容易收敛,如下图
在这里插入图片描述
那么如何找到最近邻点呢?

我们遍历scene shape的每一个点,用欧式距离找到在model shape最近的一个点,具体的,如下图所示

在这里插入图片描述
在这里插入图片描述

找到对应关系点对后,用四元数的方法,当然也不止这种方法,去计算点对之间的变换关系。

具体的

  1. 先计算两片点云的质心
  2. 再将两片点云的坐标分别减去质心坐标,对每一个点进行归一化
  3. 计算对称矩阵,并得到特征值和对应的特征向量
  4. 再计算变换矩阵

这里就大概知道怎么计算的就行啦,重要的是这些可以去辅助理解ICP核心思想,

至于如何计算,其实有很多API可以去调用的。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3.4 总结

以上讲了这么多,现在到了归纳总结时间

我们输入的是两片点云的坐标

输出的是变换关系、误差和施加变换后的点
在这里插入图片描述

ICP算法具体怎么做

  1. 初始化
    在这里插入图片描述

  2. 找到一一对应点
    在这里插入图片描述

  3. 寻找变换关系

  4. 施加变换
    在这里插入图片描述
    • 零均值点集
    • 四元数计算
    • 旋转矩阵计算
    • 平移偏移计算
    • 残余误差计算

  5. 计算误差

4 ICP优缺点

优点:

1)不需要对点云集进行分割和特征提取。

2)在初值较好的情况下,可以得到很好的算法收敛性。

缺点:

1)在搜索对应点的过程中,计算量较大,计算速度较慢。

2)对配准点云的初始位置有一定要求,不合理的初始位置会导致算法陷入局部最优。

3)ICP 算法在寻找对应点时,会将任何两个点云之间的欧氏距离最近的点作为对应点,这种假设会产生一定数量的错误对应点。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

香港BTC、ETH现货ETF同时通过,对行业意义几何?

香港比美国更快一步通过以太坊现货 ETF。 2024 年 4 月 15 日,香港嘉实国际资产管理有限公司(Harvest Global Investments)今天宣布,得到香港证监会的原则上批准,将推出两大数字资产(比特币及以太坊&#…

​可视化大屏C位图:园区鸟瞰

将园区鸟瞰图作为可视化大屏设计的焦点图有以下几个好处: 提供全局视图:园区鸟瞰图可以展示整个园区的布局和结构,提供全局视图。这对于大型园区或复杂的场所来说尤为重要,用户可以一目了然地了解整个园区的规模、分布和关联关系…

go设计模式之工厂方法模式

工厂方法模式 什么是工厂方法模式 工厂方法模式是一种创建型设计模式,它定义了一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化推迟到其子类。 这个接口就是工厂接口,子类就是具体工厂类,而需要创…

频率分析和离散傅里叶变换——DSP学习笔记四

背景知识 四种基本的傅里叶变换 基本思想:将信号表示为不同频率 正弦分量的线性组合 正弦信号和复指数时间信号的有用特性 相同频率但不同相位的正弦信号的任何线性组合,都是有着相同频率但不同相位,且幅度可能受改变的正弦信号。 复指数时…

EXCEL表格中的数字,为什么每次打开会自动变成日期?

一、典型现象 在工作中,有时会发现公司里的报表,经过多人多次的重复的使用和修改后,会出现这种情况: 1.在表格里按照需要输入数字,保存工作簿。 2.然而,再次打开工作簿,里面的数字变成日期&a…

Linux多线程(二) 线程同步 信号量互斥锁读写锁条件变量

多个进程同时访问某些资源时,必须考虑同步问题,以确保任一时刻只有一个进程可以拥有对资源的独占式访问。通常,程序对关键资源的访问代码只是很短的一段,我们称这段代码为关键代码段或者临界区,对进程同步,…

火绒安全概述

页面简介: 火绒安全是一款集多种安全功能于一体的国产软件,旨在为用户提供全面的计算机保护。本页面将详细介绍火绒安全的核心功能和使用方式。 页面内容概览: 杀毒防护 实时监控:详细介绍火绒安全如何实时检测系统中的文件和程序…

【强训笔记】day5

NO.1 思路&#xff1a;找到数量最小的字符&#xff0c;就可以知道you的数量&#xff0c;用o的数量减去you的数量再减去1就是oo的数量。 代码实现&#xff1a; #include<iostream>using namespace std;int main() {int q;cin >> q;int a, b, c;while (q--){cin &g…

Java web应用性能分析之【sysbench基准测试】

Java web应用性能分析之【CPU飙高分析之MySQL】-CSDN博客 Java web应用性能分析之【Linux服务器性能监控分析概叙】-CSDN博客 Java web应用性能分析概叙-CSDN博客 Java web应用性能分析之【基准测试】-CSDN博客 上面基本科普了一下基准测试&#xff0c;这里我们将从sysbench…

雷电模拟器,安卓手机模拟器电脑端去广告精简优化版 v9.0.70 (240427)

软件介绍 在众多安卓模拟器中&#xff0c;雷电模拟器作为电脑端手游的首选平台&#xff0c;由上海畅指网络科技有限公司研发并免费提供给用户。此模拟器搭载了先进的内核技术&#xff08;基于版本&#xff09;&#xff0c;确保了软件运行的高速性和稳定性。雷电模拟器还引入了…

【yolov8yolov5驾驶员抽烟-打电话-喝水-吃东西检测】

YOLO算法DMS驾驶员抽烟-打电话-喝水-吃东西检测数据集 YOLOv8和YOLOv5是深度学习中用于目标检测的先进算法&#xff0c;它们在实时性和准确性方面表现出色&#xff0c;适用于各种视频监控和图像处理应用&#xff0c;包括驾驶员行为监测。这些算法通过单次前向传播即可预测图像…

javaScript基础2

javaScript 一.运算符二.流程控制1.顺序流程控制2.分支流程控制&#xff08;1&#xff09;if/if..else/if多分支&#xff08;2&#xff09;.三元表达式&#xff08;4&#xff09;.switch和if else区别 3.循环流程控制(1).for循环/双重for循环(2).一些例子(3).while循环/do..whi…

SpringBoot 接口防抖(防重复提交)的一些实现方案

啥是防抖 所谓防抖&#xff0c;一是防用户手抖&#xff0c;二是防网络抖动。 在Web系统中&#xff0c;表单提交是一个非常常见的功能&#xff0c;如果不加控制&#xff0c;容易因为用户的误操作或网络延迟导致同一请求被发送多次&#xff0c;进而生成重复的数据记录。 要针对…

【C++ | 复合类型】结构体、共用体、枚举、引用

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; ⏰发布时间⏰&#xff1a; 本文未经允许…

深入理解冯诺依曼体系结构

文章目录 冯诺依曼体系结构概念冯诺依曼体系结构的优势冯诺依曼体系结构的现实体现 冯诺依曼体系结构概念 冯诺依曼体系结构也称普林斯顿结构&#xff0c;是现代计算机发展的基础。它的主要特点是“程序存储&#xff0c;共享数据&#xff0c;顺序执行”&#xff0c;即程序指令和…

芋道微服务功能介绍(限免)

&#x1f339;作者主页&#xff1a;青花锁 &#x1f339;简介&#xff1a;Java领域优质创作者&#x1f3c6;、Java微服务架构公号作者&#x1f604; &#x1f339;简历模板、学习资料、面试题库、技术互助 &#x1f339;文末获取联系方式 &#x1f4dd; 系列文章目录 第一章 芋…

Datart 扩装下载功能之PDF和图片下载

Datart 扩装下载功能之PDF和图片下载 首先下载依赖 yum install mesa-libOSMesa-devel gnu-free-sans-fonts wqy-zenhei-fonts -y 然后下载安装chrome yum install https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm 查看chrome版本号 google…

vscode使用EditorConfig进行项目配置

安装 EditorConfig for VS Code 插件&#xff0c;该插件会自动读取项目的 .editorconfig 文件&#xff0c;对项目进行配置。 该文件支持属性&#xff1a; indent_style&#xff1a;缩进风格&#xff0c;可配置项&#xff1a;tab&#xff0c;spaceindent_size&#xff1a;缩进…

前端学习<四>JavaScript——54-原型链

常见概念 构造函数 构造函数-扩展 原型规则和示例 原型链 instanceof 构造函数 任何一个函数都可以被 new&#xff0c;new 了之后&#xff0c;就成了构造方法。 如下&#xff1a; function Foo(name, age) {this.name name;this.age age;//retrun this; //默认有这…

数据聚类:Mean-Shift和EM算法

目录 1. 高斯混合分布2. Mean-Shift算法3. EM算法4. 数据聚类5. 源码地址 1. 高斯混合分布 在高斯混合分布中&#xff0c;我们假设数据是由多个高斯分布组合而成的。每个高斯分布被称为一个“成分”&#xff08;component&#xff09;&#xff0c;这些成分通过加权和的方式来构…