在图像处理过程中,经常涉及许多关于图像变换的概念,比如:刚体变换、欧式变换、相似变换、仿射变换、透视变换等等,但他们之间的关系和区别经常混淆。因此本文简单的介绍和辨析一下这几种变换的区别与联系,帮助自己的理解和记忆。如有纰漏,望请指出。
1. 刚体变换(Rigid Transformation)
[
x
′
y
′
1
]
=
[
R
t
0
1
]
[
x
y
1
]
=
[
cos
θ
−
sin
θ
t
x
sin
θ
cos
θ
t
y
0
0
1
]
[
x
y
1
]
\begin{bmatrix} x'\\ y'\\ 1 \end{bmatrix}=\begin{bmatrix} R &t \\ 0 &1 \end{bmatrix}\begin{bmatrix} x\\ y\\ 1 \end{bmatrix}=\begin{bmatrix} \cos \theta& -\sin \theta & t_x\\ \sin \theta & \cos \theta & t_y\\ 0& 0 &1 \end{bmatrix}\begin{bmatrix} x\\ y\\ 1 \end{bmatrix}
⎣⎡x′y′1⎦⎤=[R0t1]⎣⎡xy1⎦⎤=⎣⎡cosθsinθ0−sinθcosθ0txty1⎦⎤⎣⎡xy1⎦⎤
刚体变换也叫刚性变换、欧式变换,是最基础的变换形式。其中
R
R
R表示旋转矩阵,是一个正交阵
R
R
T
=
I
RR^T=I
RRT=I,
t
t
t表示平移向量。
- 变换形式:旋转和平移
- 自由度:三个自由度(一个旋转角 θ \theta θ,两个平移向量 t x , t y t_x,t_y tx,ty)
- 求解方式:需要两组点,四个方程求解
- 不变量:长度、角度、面积
2. 等距变换(Isometric Transformation)
[
x
′
y
′
1
]
=
[
ϵ
cos
θ
−
sin
θ
t
x
ϵ
sin
θ
cos
θ
t
y
0
0
1
]
[
x
y
1
]
,
ϵ
=
±
1
\begin{bmatrix} x'\\ y'\\ 1 \end{bmatrix}=\begin{bmatrix} \epsilon \cos \theta& -\sin \theta & t_x\\ \epsilon\sin \theta & \cos \theta & t_y\\ 0& 0 &1 \end{bmatrix}\begin{bmatrix} x\\ y\\ 1 \end{bmatrix},\epsilon=\pm1
⎣⎡x′y′1⎦⎤=⎣⎡ϵcosθϵsinθ0−sinθcosθ0txty1⎦⎤⎣⎡xy1⎦⎤,ϵ=±1
等距变换前后两点之间的距离不变。
ϵ
=
1
\epsilon=1
ϵ=1时,等距变换就等价于刚性变换、欧式变换,是保向的;
ϵ
=
−
1
\epsilon=-1
ϵ=−1时,是逆向的,表示关于
Y
Y
Y轴对称的反射变换。
- 变换形式: ϵ = 1 \epsilon=1 ϵ=1时,旋转和平移; ϵ = − 1 \epsilon=-1 ϵ=−1时,旋转、平移和反射(对称)
- 自由度:三个自由度(一个旋转角 θ \theta θ,两个平移向量 t x , t y t_x,t_y tx,ty)
- 求解方式:需要两组点,四个方程求解
- 不变量:长度、角度、面积
3. 相似变换(Similar Transformation)
[
x
′
y
′
1
]
=
[
s
R
t
0
1
]
[
x
y
1
]
=
[
s
cos
θ
−
s
sin
θ
t
x
s
sin
θ
s
cos
θ
t
y
0
0
1
]
[
x
y
1
]
\begin{bmatrix} x'\\ y'\\ 1 \end{bmatrix}=\begin{bmatrix} sR &t \\ 0 &1 \end{bmatrix}\begin{bmatrix} x\\ y\\ 1 \end{bmatrix}=\begin{bmatrix} s \cos \theta& -s\sin \theta & t_x\\ s\sin \theta & s \cos \theta & t_y\\ 0& 0 &1 \end{bmatrix}\begin{bmatrix} x\\ y\\ 1 \end{bmatrix}
⎣⎡x′y′1⎦⎤=[sR0t1]⎣⎡xy1⎦⎤=⎣⎡scosθssinθ0−ssinθscosθ0txty1⎦⎤⎣⎡xy1⎦⎤
相似变换是在刚性变换的基础上增加一个均匀放缩系数
s
s
s。
- 变换形式:旋转、平移、放缩
- 自由度:四个自由度(一个旋转角 θ \theta θ,两个平移向量 t x , t y t_x,t_y tx,ty,一个放缩系数 s s s)
- 求解方式:需要两组点,四个方程求解
- 不变量:角度、长度的比例和面积比例
4. 线性变换(Linear Transformation)
[
x
′
y
′
1
]
=
[
A
0
0
1
]
[
x
y
1
]
=
[
a
11
a
12
0
a
21
a
22
0
0
0
1
]
[
x
y
1
]
\begin{bmatrix} x'\\ y'\\ 1 \end{bmatrix}=\begin{bmatrix} A &0\\ 0 &1 \end{bmatrix}\begin{bmatrix} x\\ y\\ 1 \end{bmatrix}=\begin{bmatrix} a_{11}& a_{12} & 0\\ a_{21} & a_{22} & 0\\ 0& 0 &1 \end{bmatrix}\begin{bmatrix} x\\ y\\ 1 \end{bmatrix}
⎣⎡x′y′1⎦⎤=[A001]⎣⎡xy1⎦⎤=⎣⎡a11a210a12a220001⎦⎤⎣⎡xy1⎦⎤
线性变换要求变换前后的直线仍是直线,且直线之间的比例保持不变。
- 变换形式:旋转、放缩、反射(对称)、倾斜(错切)
- 自由度:四个自由度(四个线性变换元素 a 11 , a 12 , a 21 , a 22 a_{11},a_{12},a_{21},a_{22} a11,a12,a21,a22)
- 求解方式:需要两组点,四个方程求解
- 不变量:长度的比例和面积比例
5. 仿射变换(Affine Transformation)
[
x
′
y
′
1
]
=
[
A
t
0
1
]
[
x
y
1
]
=
[
a
11
a
12
t
x
a
21
a
22
t
y
0
0
1
]
[
x
y
1
]
\begin{bmatrix} x'\\ y'\\ 1 \end{bmatrix}=\begin{bmatrix} A &t\\ 0 &1 \end{bmatrix}\begin{bmatrix} x\\ y\\ 1 \end{bmatrix}=\begin{bmatrix} a_{11}& a_{12} & t_x\\ a_{21} & a_{22} & t_y\\ 0& 0 &1 \end{bmatrix}\begin{bmatrix} x\\ y\\ 1 \end{bmatrix}
⎣⎡x′y′1⎦⎤=[A0t1]⎣⎡xy1⎦⎤=⎣⎡a11a210a12a220txty1⎦⎤⎣⎡xy1⎦⎤
仿射变换是线性变换和平移变换的组合,能够保持二维图形的“平直性”和“平行性”,但是角度会改变。
A
A
A表示仿射矩阵。
“平直性”:变换后直线还是直线、圆弧还是圆弧
“平行性”:平行线还是平行线,直线上点的位置顺序不变
- 变换形式:旋转、平移、放缩、反射(对称)、倾斜(错切)
- 自由度:六个自由度(四个仿射矩阵元素 a 11 , a 12 , a 21 , a 22 a_{11},a_{12},a_{21},a_{22} a11,a12,a21,a22,两个平移向量 t x , t y t_x,t_y tx,ty)
- 求解方式:需要三组点,六个方程求解
- 不变量:平行线,平行线所分割线段长度的比例和面积的比例
5. 透视变换(Perspective Transformation)
[
x
′
y
′
1
]
=
[
A
t
v
1
]
[
x
y
z
]
=
[
a
11
a
12
t
x
a
21
a
22
t
y
v
1
v
2
1
]
[
x
y
z
]
\begin{bmatrix} x'\\ y'\\ 1 \end{bmatrix}=\begin{bmatrix} A &t\\ v &1 \end{bmatrix}\begin{bmatrix} x\\ y\\ z \end{bmatrix}=\begin{bmatrix} a_{11}& a_{12} & t_x\\ a_{21} & a_{22} & t_y\\ v_1& v_2 &1 \end{bmatrix}\begin{bmatrix} x\\ y\\ z \end{bmatrix}
⎣⎡x′y′1⎦⎤=[Avt1]⎣⎡xyz⎦⎤=⎣⎡a11a21v1a12a22v2txty1⎦⎤⎣⎡xyz⎦⎤
透视变换也叫做射影变换(Projection Transformation),是将图像投影到一个新的视平面。其中
v
v
v用于产生图像透视变换。
- 变换形式:旋转、平移、放缩、反射(对称)、倾斜(错切)、透视
- 自由度:八个自由度(四个仿射矩阵元素 a 11 , a 12 , a 21 , a 22 a_{11},a_{12},a_{21},a_{22} a11,a12,a21,a22,两个平移向量 t x , t y t_x,t_y tx,ty、两个透视变换元素 v 1 , v 2 v_1,v_2 v1,v2)
- 求解方式:需要四组点,八个方程求解
- 不变量:长度的交比