3D点集之间计算转移矩阵,旋转R,转移T,新增缩放s (总结全面)

1.问题描述:

给点两个d维空间中的点集合
在这里插入图片描述 在这里插入图片描述
常用的转换关系可能包括以下几种:
(1)等距变换。需要求R和T。等距变换前后长度,面积,线之前的角度不变。常见于坐标转换、物体移动,姿态变化等。自由度6(3+3)
在这里插入图片描述
(2)相似变换。需要求R和T及缩放系数s。 常用于非刚体移动,或不同目标匹配对齐,目标缩放等。自由度7(6+1)
在这里插入图片描述
(3)仿射变换(正交投影)。平移变换T 和非均匀变换(A)的复合,A是可逆矩阵,不要求是正交矩阵。仿射变换对图像旋转+平移+缩放+切变(shear,也叫倾斜变换),相比前两种,变换图像的形状发生了改变,但是原图中平行线仍然保持平行。自由度12(9+3)
在这里插入图片描述
(4)射影变换(透视变换)
射影变换的不变量:重合关系、长度的交比,自由度:15(右下角v=1)
射影变换是对图像的旋转+平移+缩放+切边+射影。平行线变换后可能不再平行,而是交于一点。如平视图转换为鸟瞰图。
在这里插入图片描述
关于二维空间(图像)的变化可参考:基础知识:二维常见变换

2.1 等距变换求解

其求解数学表达式如下:
在这里插入图片描述
wi 表示每个点对之前的权重。
对于该问题共有6个自由度,至少需要两组点对,对矩阵求最小二乘解,该方法我们暂不讨论。
主流的做法是使用去中心化点集协方差矩阵SVD求解,步骤如下:
(1)构建上述问题模型:
在这里插入图片描述
在这里插入图片描述
(2)去中心化及协方差矩阵SVD分解求
计算中心值:
在这里插入图片描述
点集去中心化,去除转移矩阵的影响:
在这里插入图片描述
计算协方差矩阵:
在这里插入图片描述
SVD分解,求旋转矩阵
在这里插入图片描述
(3)计算转移矩阵
在这里插入图片描述

具体推导过程可参见:

利用SVD求得两个对应点集合的旋转矩阵R和转移矩阵t的数学推导
Least-Squares Rigid Motion Using SVD

python 代码参考 计算两个对应点集之间的旋转矩阵R和转移矩阵T
如下:

from numpy import *
from math import sqrt

def estimate_quilong_transform_3D(A, B):
    assert len(A) == len(B)
    N = A.shape[0];
    mu_A = mean(A, axis
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值