1. 定义

ICP(Iterative Closest Point,迭代最近点)算法是一种迭代计算方法,主要用于计算机视觉中深度图像的精确拼合,通过不断迭代最小化源数据与目标数据对应点来实现精确地拼合。已经有很多变种,主要热点是怎样高效、鲁棒的获得较好地拼合效果。

2. 问题引入

ICP算法常被用于点云匹配(刚性配准)。给定两组点云(源点云 P P P与目标点云 Q Q Q):

{ P = { p 1 , p 2 , . . . , p n } Q = { q 1 , q 2 , . . . , q n } \begin{cases} P=\{p_1,p_2,...,p_n\} Q=\{q_1,q_2,...,q_n\} \end{cases} {P={p1​,p2​,...,pn​}Q={q1​,q2​,...,qn​}​

点云配准的过程即为寻找一个空间的最优转换矩阵 T n o r m T_{norm} Tnorm​(由旋转 R R R和平移 t t t组成),使得点集P和Q之间的距离最小。

可通过最小化下式来求 T n o r m T_{norm} Tnorm​:

E ( R , t ) = 1 n ∑ i = 1 n ∥ q i − p i ^ ∥ 2 E(R,t)=\frac{1}{n}\sum_{i=1}^{n} \| q_i-\hat{p_i} \|^2 E(R,t)=n1​i=1∑n​∥qi​−pi​^​∥2

3. 算法步骤

具体步骤为:

步骤 内容 说明
计算Q中的每一个点在P点集中的对应近点 可利用kd-tree算法来提高查找效率
求得使上述对应点对平均距离最小的刚体变换,求得平移参数和旋转参数 SVD等,见下一节
对P使用上一步求得的平移和旋转参数,得到新的变换点集 /
如果新的变换点集与参考点集满足两点集的平均距离小于某一给定阈值,则停止迭代计算,否则新的变换点集作为新的P继续迭代,直到达到目标函数的要求 /

4. SVD求解R、t

(1)将点集P、Q中的点均减去自身的质心
两组点集的质心分别为:

两组点集去掉质心后的坐标为:

(2)求去中心后两点集的协方差矩阵:

(3)计算旋转矩阵R
对公式(3.4-5)中的W进行SVD分解,有:

当W满秩的时候,有唯一解:

(4)计算平移矢量t
通过上述公式,可以求得平移矢量为:

参考

[1] https://zhuanlan.zhihu.com/p/63964953
[2] https://zhuanlan.zhihu.com/p/35893884
[3] https://blog.csdn.net/hongbin_xu/article/details/80537100
[4] https://www.cnblogs.com/haoyul/p/7979289.html

迭代最近点(Iterative Closest Point, ICP)算法相关推荐

  1. 迭代最近点(Iterative Closest Point, ICP)算法及matlab实现

    前言 通常,使用RGB-D相机或是其他方法获取到物体的三维点云后,由于采集设备不同.拍摄视角不同等等因素的影响,即使是同一个物体所得到的点云也会有较大的差异,主要是旋转或者平移的变化.对于一组图像数据 ...

  2. 迭代近邻算法Iterative Closest Point, ICP

    参考的文章链接: https://zhuanlan.zhihu.com/p/35893884 https://blog.csdn.net/u014709760/article/details/9924 ...

  3. ICP(迭代最近点)算法推导详解

    概述 ICP用来求解3D-3D的位姿估计问题.假设有一组配对好的3D点,例如对两幅RGB-D图像进行匹配,或者是EPnP方法中已知参考的在相机坐标系中的坐标和在世界坐标系的坐标(参考我PnP的博文): ...

  4. VTK修炼之道58:图形基本操作进阶_点云配准技术(迭代最近点ICP算法)

    1.Iterative Closest Points算法 点云数据配准最经典的方法是迭代最近点算法(Iterative Closest Points,ICP).ICP算法是一个迭代的过程,每次迭代中对 ...

  5. 干货 | 三维点云配准:ICP 算法原理及推导

    编者荐语 点云配准可以分为粗配准(Coarse Registration)和精配准(Fine Registration)两步.粗配准指的是在两幅点云之间的变换完全未知的情况下进行较为粗糙的配准,目的主 ...

  6. 论文翻译—ICP算法论文(节选1~4章)

    标题:A Method for Registration of 3-D Shapes 作者: J. Besl, Neil D. McKay 目录: Ⅰ Introduction Ⅱ Literatur ...

  7. PCL学习笔记二:Registration (ICP算法)

    ICP in PCL Registration 点云配准是什么,维基百科上这样介绍: Point cloud registration, is the process of finding a spa ...

  8. 点云匹配和ICP算法概述

    [原文:http://www.cnblogs.com/yhlx125/p/4955337.html] Iterative Closest Point (ICP) [1][2][3] is an alg ...

  9. 吉林大学计算机科学与技术学院王欣,应用改进迭代最近点方法的点云数据配准...

    摘要: An improved Iterative Closest Point (ICP) method based on the boundary feature points of the poi ...

最新文章

  1. Interface实现多态简例
  2. Python 一行代码搞定炫酷可视化,你需要了解一下 Cufflinks
  3. 怎样利用好单片机上的存储器资源来实现OD的存储与访问
  4. python soup findall 第几个元素_python – 如何在BeautifulSoup中获取所有父标签的列表?...
  5. python处理excel案例_python操作excel例子
  6. dism++封装系统使用教程_客栈管理系统“订单来了”客房订单盒子使用教程
  7. 软考倒计时7天:题目书中的易混点
  8. Java 读取txt文件,读取结果保存到数据库
  9. C#学习笔记——类的继承
  10. python输入长和宽计算面_python案例1
  11. seaborn无法下载数据的问题
  12. [Unity2D]实现人物动画帧的导入以及左右移动
  13. 朴素贝叶斯和情感分类
  14. 易语言php验证码识别,易语言自动打码验证码服务端带案例
  15. vscode 程序员鼓励师_把软萌程序猿鼓励师装进VScode?最强交互彩虹屁,GitHub2.5k星标...
  16. 教你一起来做一下SpringBoot蓝天幼儿园管理系统
  17. 表白代码制作(附源码)
  18. 解决Win10桌面图标/开始菜单磁贴图标变成白色的问题
  19. text-shadow阴影文本
  20. Linux函数调用劫持的方法总结(带图)

热门文章

  1. 汽车控制器测试工装-ETest
  2. 深入理解Andorid 卷I 第五章
  3. 史上最强ASR非特定人声语音识别模块,完爆LD3320
  4. C语言常用语句之-分支语句
  5. 华为数字化转型之道 结语 数字化转型的8个成功要素
  6. 接入微信universal link微信校验不通过
  7. activemq保证消息顺序原理
  8. 什么才是状态机?什么又是状态?
  9. 决策树ID3简单实现
  10. lp_solve 线性规划求解包的使用