ICP算法详细推导过程--SVD方法(包含SVD的分解过程)

文字简述ICP(迭代最近点算法):

输入两组点云X(目标点云)与P(源点云),使点云P经过刚性变换(旋转R、平移t)与点云X重合,即使得X=R.P+t;并经过不断迭代使得均方差E(R,t)达到最小。
在这里插入图片描述
ICP的配准一般可分为两种:(1)已知初始点云之间的位置关系(2)未知初始点云之间的位置关系。
两者之间的区别在于,后者需要确定初始位姿即确定两组点云之间的匹配关系,且点云数量不等。实际情况也更倾向于后者,故在此先给出未知初始点云位置关系的ICP求解算法。
1.未知两组点云位置关系
1.1 计算两组点云之间的最近距离,确定两组点云的初始位姿,形成匹配点云:对于P中的一个点pi,选择X中与其欧式距离最近的点作为匹配点,使用KD-tree进行加速搜寻,直至P中的每个点都有在X中与之匹配的点。(实际情况中,匹配结果会存在一定的误差,应选择合适的算法进行剔除,此处不展开)
此时,两组点云的位置关系已确定。
1.2 基于两组点云之间的初始位置关系,求解出旋转矩阵R与平移t,详细步骤如下:
1.2.1 去掉两组点云的质心
对于给定的两组点云集合X,P:
在这里插入图片描述
求两组点云的质心:
在这里插入图片描述
则,两组点云中以质心为坐标原点的点的坐标为:
在这里插入图片描述
1.2.2 求解使得均方差E(R,t)最小时的R,t:
在这里插入图片描述
又:
在这里插入图片描述
所以:
在这里插入图片描述
E(R,t)要为最小,则
在这里插入图片描述
,即
在这里插入图片描述

则最优旋转矩阵为:
在这里插入图片描述
所以要使R取得最优,则:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.3 设定迭代误差限e,若E(R,t)>e,则将经本次计算所得的R,t旋转后的点云P’设为初值,重新进行迭代计算,直到E(R,t)小于设定的迭代阈值e为止。
2.未知两组点云位置关系
将确定点云之间的关系即1中的1.1部分去掉即可

参考资料
https://zhuanlan.zhihu.com/p/63964953
https://blog.csdn.net/u014709760/article/details/99241393

  • 7
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
普通ICPSVD-ICP是两种常用的点云配准算法,它们之间的区别主要在于优化刚体变换矩阵的方式和计算效率。 普通ICP算法是一种迭代算法,通过最小化两个点云之间的误差来优化刚体变换矩阵。它的基本思想是通过寻找最小二乘拟合得到的刚体变换矩阵,将一个点云变换到另一个点云的坐标系下,然后计算两个点云之间的误差,并不断迭代优化刚体变换矩阵,直到达到收敛条件。普通ICP算法简单直观,易于实现,但对于噪声和部分遮挡情况下的点云配准效果可能较差。 SVD-ICP算法在普通ICP算法的基础上引入了奇异值分解(Singular Value Decomposition)的步骤。它通过对点云之间的误差进行奇异值分解,得到旋转矩阵和平移向量的最优解。相比于普通ICP算法SVD-ICP算法在计算刚体变换矩阵时更稳定,能够更好地处理噪声和部分遮挡的情况。SVD-ICP算法的优势在于它对数据的拟合能力更强,更适用于复杂点云数据的配准。然而,由于引入了奇异值分解的计算步骤,SVD-ICP算法相对于普通ICP算法来说计算量较大,速度较慢。 综上所述,普通ICP算法简单直观,计算速度快,但对噪声和遮挡敏感;而SVD-ICP算法通过引入奇异值分解提高了稳定性和配准效果,但计算速度较慢。具体选择哪种算法取决于应用场景和对配准效果和计算效率的要求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值