从3组对应点中求得最佳的旋转和平移变换

 问题陈述:已知:上图中颜色相同的点为两个点云之间的对应点,现在要利用3组对应点,来求解点云配准的最佳旋转、平移矩阵。这个变换叫做刚性变换或者欧式变换。

也就是要求解R,t:

B=R*A+t;

其中R,t是应用于数据集A的变换,以使其与数据集B对齐,尽可能最佳。

找到最佳刚性变换矩阵可以分解为以下步骤:

  1. 找到两个点集的重心;
  2. 将两个点集的重心都带到原点,然后找到最佳旋转矩阵R;
  3. 找到平移矩阵t

一、找到点云的重心

P = \ left [\ begin {array} {c} x \\ y \\ z \ end {array} \ right]

centroid_A = \ frac {1} {N} \ displaystyle \ sum \ limits_ {i = 1} ^ N P_A ^ i

centroid_B = \ frac {1} {N} \ displaystyle \ sum \ limits_ {i = 1} ^ N P_B ^ i

平移到原点是为了去除平移的影响,只考虑旋转。 

 

二、求解R

之后就是使用奇异值分解去求解,旋转矩阵R。 

H = \ displaystyle \ sum \ limits_ {i = 1} ^ Nï¼P_A ^ i  -  centroid_Aï¼ï¼P_B ^ i  -  centroid_Bï¼^ T

[Uï¼Sï¼V] = SVDï¼Hï¼

R = VU ^ T.

其中,H是协方差矩阵。

 三、求解t

平移矩阵

t = -R \ times centroid_A + centroid_B

 完成!

注意:只要存在至少3个点,所提出的解决方案就可以用于任何大小的数据集。当有超过3个点时,获得最小二乘解,使得以下误差最小化:

err = \ displaystyle \ sum \ limits_ {i = 1} ^ N \ left | \ left | RP_A ^ i + t -P_B ^ i \ right | \ right | ^ 2

 在这里,操作符|| || 是两个向量之间的欧几里德距离,即标量值。err只是两个数据集中各点之间的平方距离误差。

 

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值