多视图几何总结——等距变换、相似变换、仿射变换和射影变换
多视图几何再2.4节中介绍好几种变换,有时候容易绕懵,这里花点时间简单总结下
首先只管感受下这几种变换
其中图a是相似变换,其效果是圆仍然是圆,正方形仍然是正方形;图b是仿射变换,其效果是圆变成椭圆,垂线不再垂直;图c是射影变换,其效果是平行线变成汇聚线,下面分别从数学层面介绍这几种变换。
等距变换
等距变换也就是我们在机器人中所学的刚体变换,其分块形式为
其中
R
R
R为旋转矩阵(为正交阵),
t
t
t为平移矢量,在平面等距变换中矩阵一共有三个自由度,旋转一个,平移两个
其变换不变量是:长度、角度和面积
相似变化
相似变换是等距变换与均匀缩放的复合,其分块形式为:
观察矩阵形式,其实就是在旋转矩阵上加了一个缩放因子s,其一共有四个自由度,因为比等距变换多了一个自由度
其不变量为:长度的比率、角度和面积的比率
仿射变换
其分块形式为
其中A是一个
2
×
2
2×2
2×2的非奇异矩阵,因此仿射变换一共六个自由度,其中比较有意思的是对矩阵
A
A
A的理解,可以对
A
A
A进行SVD分解
A
=
U
D
V
T
=
(
U
V
T
)
(
V
D
V
T
)
=
R
(
θ
)
(
R
(
−
ϕ
)
D
R
(
ϕ
)
)
A=UDV^T=(UV^T)(VDV^T)=R(\theta)(R(-\phi)DR(\phi))
A=UDVT=(UVT)(VDVT)=R(θ)(R(−ϕ)DR(ϕ))因此仿射矩阵可以看成一个旋转
(
ϕ
)
(\phi)
(ϕ),加上在已旋转的
x
x
x和
y
y
y方向分别进行比例因子
λ
1
\lambda_1
λ1和
λ
2
\lambda_2
λ2(分解出来的特征值或者说矩阵
D
D
D的对角线元素)分别进行按比例缩放,再加上一个回转
(
−
ϕ
)
(-\phi)
(−ϕ)和最后一个旋转的符合类型
(
θ
)
(\theta)
(θ),这在我学矩阵论是遇到SVD分解时就思考过的问题,这里解释得很好,可以参考下图理解
其不变量为:平行线段的长度比,平行线和面积比(所有面积都缩放
λ
1
λ
2
\lambda_1 \lambda_2
λ1λ2倍)
补充:
仿射变换是保持无穷远线不变形的最一般的线性变换,这句话的意思就是说,例如射影变换是会将无穷远点变成有限点,因此原本平行的直线不再平行,而仿射变换之后平行直线仍然平行,因为其不改变无穷远点的性质
射影变换
其分块形式为
仿射变换是非齐次坐标的一般非奇异线性变换和一个平移的符合,其一共具有八个自由度
其不变量为:共点,共线,接触的阶还有长度的比率的比率
总结
这里可以注意下仿射变换和射影变换的区别如下:
仿射变换
射影变换
其中
(
x
1
,
x
2
.
0
)
T
(x_1,x_2.0)^T
(x1,x2.0)T是无穷远点(无穷远点的表示方法就是其次坐标最后一位为0),可以发现通过仿射变换无穷远点还是无穷远点,但是通过射影变换可以将无穷远点变换为有限点,正因为如此,射影变换可以完成消除透视失真操作:
最后铺上一张多视图几何中关于几种变换的总结表:
有问题欢迎交流指正~
此外,对SLAM算法感兴趣的同学可以看考我的博客SLAM算法总结——经典SLAM算法框架总结