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

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)=n1i=1nqipi^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

  • 1
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值