摘要: 本文来自章国峰_相机模型与投影变换ppt总结,补充了自己的对于多视图几何的一些理解,图来自ppt。
一、 齐次坐标和坐标变换(等距变换;相似变换;仿射变换;射影变换)
1. 齐次坐标:
在原有的坐标上面增加一个维度,新增维度不增加自由度,通常为1
以下对应2维和3维
[
x
y
]
\begin{bmatrix}x \\ y \end{bmatrix}
[xy]变为
[
x
y
1
]
\begin{bmatrix}x \\ y \\1 \end{bmatrix}
⎣⎡xy1⎦⎤ ,
[
x
y
z
]
\begin{bmatrix}x \\ y \\z \end{bmatrix}
⎣⎡xyz⎦⎤变为
[
x
y
z
1
]
\begin{bmatrix}x \\ y \\z \\1 \end{bmatrix}
⎣⎢⎢⎡xyz1⎦⎥⎥⎤
A. 齐次坐标可以更好的表示平移和放缩,旋转和平移
使用齐次坐标完成平移和放缩
[
u
′
v
′
1
]
=
[
s
u
0
s
u
t
u
0
s
v
s
v
t
v
0
0
1
]
[
u
v
1
]
=
[
s
u
0
0
0
s
v
0
0
0
1
]
[
1
0
t
u
0
1
t
v
0
0
1
]
[
u
v
1
]
=
S
T
x
\begin{bmatrix}{u}' \\{v}' \\1 \end{bmatrix}=\begin{bmatrix}s_{u} &0 &s_{u}t_{u} \\0 &s_{v} &s_{v}t_{v} \\0 &0 &1 \end{bmatrix} \begin{bmatrix}u \\v \\1 \end{bmatrix}=\begin{bmatrix}s_{u} &0 &0 \\0 &s_{v} &0 \\0 &0 &1 \end{bmatrix} \begin{bmatrix}1 &0 &t_{u} \\0 &1 &t_{v} \\0 &0 &1 \end{bmatrix} \begin{bmatrix}u \\v \\1 \end{bmatrix}= STx
⎣⎡u′v′1⎦⎤=⎣⎡su000sv0sutusvtv1⎦⎤⎣⎡uv1⎦⎤=⎣⎡su000sv0001⎦⎤⎣⎡100010tutv1⎦⎤⎣⎡uv1⎦⎤=STx
使用齐次坐标完成旋转和放缩
[
u
′
v
′
1
]
=
[
c
o
s
(
θ
)
−
s
i
n
(
θ
)
t
u
s
i
n
(
θ
)
c
o
s
(
θ
)
t
v
0
0
1
]
[
u
v
1
]
=
[
1
0
t
u
0
1
t
v
0
0
1
]
[
c
o
s
(
θ
)
−
s
i
n
(
θ
)
0
s
i
n
(
θ
)
c
o
s
(
θ
)
0
0
0
1
]
[
u
v
1
]
=
T
R
x
\begin{bmatrix}{u}' \\{v}' \\1 \end{bmatrix}= \begin{bmatrix}cos(\theta) &-sin(\theta) &t_{u} \\sin(\theta) &cos(\theta) &t_{v} \\0 &0 &1 \end{bmatrix} \begin{bmatrix}u \\v \\1 \end{bmatrix}= \begin{bmatrix}1 &0 &t_{u} \\0 &1 &t_{v} \\0 &0 &1 \end{bmatrix} \begin{bmatrix}cos(\theta) &-sin(\theta) &0 \\sin(\theta) &cos(\theta) &0 \\0 &0 &1 \end{bmatrix} \begin{bmatrix}u \\v \\1 \end{bmatrix}= TRx
⎣⎡u′v′1⎦⎤=⎣⎡cos(θ)sin(θ)0−sin(θ)cos(θ)0tutv1⎦⎤⎣⎡uv1⎦⎤=⎣⎡100010tutv1⎦⎤⎣⎡cos(θ)sin(θ)0−sin(θ)cos(θ)0001⎦⎤⎣⎡uv1⎦⎤=TRx
B. 并且可以用齐次坐标更容易表示点,线,面的关系。可以用两个齐次坐标的点的叉积描述一条直线,两条线的叉积定义一个点(交点)
l
=
p
×
q
l=p \times q
l=p×q
x
=
p
×
q
x=p \times q
x=p×q
C(补充). 引入齐次坐标后,可以很好的表示以下两种概念(2D下表示):
理想点:
[
x
1
x
2
0
]
\begin{bmatrix}x_{1}&x_{2}&0 \end{bmatrix}
[x1x20]表示理想点,或者无穷远点。通过引入理想点,我们可以表示两平行直线的交点。
无穷远线:上述理想点的集合,即为无穷远线,用矢量
l
=
[
0
0
1
]
T
l=\begin{bmatrix}0 &0&1 \end{bmatrix}^{T}
l=[001]T表示
D. 向量叉积的矩阵表示
v
×
x
v\times x
v×x 表示向量的叉积,与下面这种矩阵乘法等价,所以我们可以用矩阵的线性乘法来表示叉积
v
×
x
=
[
v
]
×
x
v\times x=[v]_{\times}x
v×x=[v]×x
其中
[
v
]
×
=
[
0
−
v
z
v
z
v
z
0
−
v
x
−
v
y
v
x
0
]
[v]_{\times}= \begin{bmatrix}0 &-v_{z} &v_{z} \\v_{z}&0&-v_{x} \\-v_{y}&v_{x}&0\end{bmatrix}
[v]×=⎣⎡0vz−vy−vz0vxvz−vx0⎦⎤,其是秩为2的
3
×
3
3\times3
3×3的斜对称矩阵。
2. 几种变换(2D下描述)
A. 等距变换:2D变换有三个自由度,是保距离的
[
u
′
v
′
1
]
=
[
R
t
0
1
]
[
u
v
1
]
\begin{bmatrix}{u}' \\{v}' \\1\end{bmatrix}=\begin{bmatrix}R&t \\0&1\end{bmatrix} \begin{bmatrix} u\\v\\1\end{bmatrix}
⎣⎡u′v′1⎦⎤=[R0t1]⎣⎡uv1⎦⎤
B. 相似变换:2D情况具有四个自由度,保角度(等距变换上,多了放缩因子s)
[
u
′
v
′
1
]
=
[
s
R
t
0
1
]
[
u
v
1
]
\begin{bmatrix}{u}' \\{v}' \\1\end{bmatrix}=\begin{bmatrix}sR&t \\0&1\end{bmatrix} \begin{bmatrix} u\\v\\1\end{bmatrix}
⎣⎡u′v′1⎦⎤=[sR0t1]⎣⎡uv1⎦⎤
C. 仿射变换:六自由度,保平行
[
u
′
v
′
1
]
=
[
A
t
0
1
]
[
u
v
1
]
\begin{bmatrix}{u}' \\{v}' \\1\end{bmatrix}=\begin{bmatrix}A&t \\0&1\end{bmatrix} \begin{bmatrix} u\\v\\1\end{bmatrix}
⎣⎡u′v′1⎦⎤=[A0t1]⎣⎡uv1⎦⎤
A
=
[
a
11
a
12
a
21
a
22
]
=
R
(
θ
)
R
(
−
ϕ
)
S
R
(
ϕ
)
A=\begin{bmatrix}a_{11}&a_{12} \\a_{21}&a_{22}\end{bmatrix}=R(\theta)R(-\phi)SR(\phi)
A=[a11a21a12a22]=R(θ)R(−ϕ)SR(ϕ)
S
=
[
s
x
0
0
s
y
]
S=\begin{bmatrix}s_{x}&0 \\0&s_{y}\end{bmatrix}
S=[sx00sy]
D. 射影变换:八自由度,保同线性
[
u
′
v
′
1
]
=
[
A
t
v
b
]
=
[
u
v
1
]
\begin{bmatrix}{u}' \\{v}' \\1\end{bmatrix}=\begin{bmatrix}A&t \\v&b\end{bmatrix}= \begin{bmatrix} u\\v\\1\end{bmatrix}
⎣⎡u′v′1⎦⎤=[Avtb]=⎣⎡uv1⎦⎤
H
=
[
A
t
v
b
]
H=\begin{bmatrix}A&t \\v&b\end{bmatrix}
H=[Avtb]
求解射影变换(下面有八个未知数,需要四组点来求解):
H
=
[
A
t
v
b
]
=
[
h
1
h
2
h
3
h
4
h
5
h
6
h
7
h
8
h
9
]
H=\begin{bmatrix}A&t \\v&b\end{bmatrix}= \begin{bmatrix}h_{1}&h_{2}&h_{3} \\h_{4}&h_{5}&h_{6} \\h_{7}&h_{8}&h_{9}\end{bmatrix}
H=[Avtb]=⎣⎡h1h4h7h2h5h8h3h6h9⎦⎤
x
′
=
H
x
{x}'=Hx
x′=Hx
展开上述关于u_{2}和
v
2
v_{2}
v2的等式:
h
1
u
1
+
h
2
u
2
+
h
3
−
h
7
u
1
u
2
−
h
8
v
1
u
2
−
h
9
u
2
=
0
h_{1}u_{1}+h_{2}u_{2}+h_{3}-h_{7}u_{1}u_{2}-h_{8}v_{1}u_{2}-h_{9}u_{2}=0
h1u1+h2u2+h3−h7u1u2−h8v1u2−h9u2=0
h
4
u
1
+
h
5
u
2
+
h
6
−
h
7
u
1
v
2
−
h
8
v
1
v
2
−
h
9
v
2
=
0
h_{4}u_{1}+h_{5}u_{2}+h_{6}-h_{7}u_{1}v_{2}-h_{8}v_{1}v_{2}-h_{9}v_{2}=0
h4u1+h5u2+h6−h7u1v2−h8v1v2−h9v2=0
改写为:
A
i
=
(
u
1
v
1
1
0
0
0
−
u
1
u
2
−
v
1
u
2
−
u
2
0
0
0
u
2
v
2
1
u
1
v
2
−
v
1
v
2
−
v
2
)
A_{i}=\begin{pmatrix}u_{1}&v_{1}&1&0&0&0&-u_{1}u_{2}&-v_{1}u_{2}&-u_{2} \\0&0&0&u_{2}&v_{2}&1&u_{1}v_{2}&-v_{1}v_{2}&-v_{2}\end{pmatrix}
Ai=(u10v10100u20v201−u1u2u1v2−v1u2−v1v2−u2−v2)
h
∗
=
(
h
1
h
2
h
3
h
4
h
5
h
6
h
7
h
8
h
9
)
h^{*}=\begin{pmatrix}h_{1}&h_{2}&h_{3}&h_{4}&h_{5}&h_{6}&h_{7}&h_{8}&h_{9}\end{pmatrix}
h∗=(h1h2h3h4h5h6h7h8h9)
改写为: A i h = 0 A_{i}h=0 Aih=0
总结:
二、 相机模型
1. 针孔相机模型(如下图)
世界坐标系中的点到针孔相机像平面变换为
(
f
X
f
Y
Z
)
=
[
f
f
1
]
[
1
0
1
0
1
0
]
(
X
Y
Z
1
)
\begin{pmatrix}fX\\fY\\Z\end{pmatrix}=\begin{bmatrix}f\\&f\\&&1\end{bmatrix}\begin{bmatrix}1&&&0\\&1&&0\\&&1&0\end{bmatrix}\begin{pmatrix}X\\Y\\Z\\1\end{pmatrix}
⎝⎛fXfYZ⎠⎞=⎣⎡ff1⎦⎤⎣⎡111000⎦⎤⎝⎜⎜⎛XYZ1⎠⎟⎟⎞
K
K
K
[
R
∣
t
]
[R|t]
[R∣t]
K
K
K为相机内参矩阵;
[
R
∣
t
]
[R|t]
[R∣t]为旋转位移矩阵
由于装调等误差,存在主点的偏移:
(
f
X
/
Z
+
x
0
f
Y
/
Z
+
x
0
1
)
\begin{pmatrix}fX/Z+x_{0}\\fY/Z+x_{0}\\1\end{pmatrix}
⎝⎛fX/Z+x0fY/Z+x01⎠⎞~
(
f
X
+
Z
x
0
f
Y
+
Z
x
0
Z
)
=
[
f
x
0
0
f
y
0
0
1
0
]
(
X
Y
Z
1
)
\begin{pmatrix}fX+Zx_{0}\\fY+Zx_{0}\\Z\end{pmatrix}=\begin{bmatrix}f&&x_{0}&0\\&f&y_{0}&0\\&&1&0\end{bmatrix}\begin{pmatrix}X\\Y\\Z\\1\end{pmatrix}
⎝⎛fX+Zx0fY+Zx0Z⎠⎞=⎣⎡ffx0y01000⎦⎤⎝⎜⎜⎛XYZ1⎠⎟⎟⎞
透视相机模型,其内参矩阵增加了一个扭曲因子s:
K
=
[
f
s
x
0
f
y
0
1
]
K=\begin{bmatrix}f&s&x_{0}\\&f&y_{0}\\&&1\end{bmatrix}
K=⎣⎡fsfx0y01⎦⎤
径向畸变:设畸变量为 R ( x , y ) R(x,y) R(x,y),则 R ( x , y ) = ( 1 + k 1 r 2 + k 2 r 4 + . . . ) R(x,y)=(1+k_{1}r^{2}+k_{2}r^{4}+...) R(x,y)=(1+k1r2+k2r4+...)
2. 相机外参(旋转和平移)
相机坐标和世界坐标的转换关系为
{
X
c
=
R
X
w
+
t
X
w
=
R
′
X
c
+
t
′
\left\{\begin{matrix}X_{c}=RX_{w}+t \\X_{w}=R^{'}X_{c}+t^{'} \end{matrix}\right.
{Xc=RXw+tXw=R′Xc+t′,其中
{
R
′
=
R
−
1
t
′
=
−
R
−
1
t
\left\{\begin{matrix}R^{'}=R^{-1} \\t^{'}=-R^{-1}t \end{matrix}\right.
{R′=R−1t′=−R−1t。
三、单应矩阵与常见投影变换
1. 单应矩阵
这里描述了一副图像,经过纯旋转后得到的图像,其中共有的点可以用以上矩阵关系描述,这个矩阵称为单应矩阵,H可以表示为
H
=
K
2
R
K
1
−
1
H=K_{2}RK_{1}^{-1}
H=K2RK1−1。使用点来表示H形成的对应关系,可以是
c
(
u
2
v
2
1
)
=
(
h
1
h
2
h
3
h
4
h
5
h
6
h
7
h
8
h
9
)
(
u
1
v
1
1
)
c\begin{pmatrix}u_{2} \\v_{2} \\1 \end{pmatrix}=\begin{pmatrix}h_{1}&h_{2}&h_{3} \\h_{4}&h_{5}&h_{6} \\h_{7}&h_{8}&h_{9} \end{pmatrix}\begin{pmatrix}u_{1} \\v_{1} \\1 \end{pmatrix}
c⎝⎛u2v21⎠⎞=⎝⎛h1h4h7h2h5h8h3h6h9⎠⎞⎝⎛u1v11⎠⎞
其中
(
u
2
v
2
1
)
\begin{pmatrix}u_{2} \\v_{2} \\1 \end{pmatrix}
⎝⎛u2v21⎠⎞和
(
u
1
v
1
1
)
\begin{pmatrix}u_{1} \\v_{1} \\1 \end{pmatrix}
⎝⎛u1v11⎠⎞分别表示第二幅图和第一幅图中对应点的坐标。
2. 平面投影变换
选择一个世界坐标系,使得平面上的点在该坐标系下Z坐标为0,可以推导投影矩阵
(
x
1
x
2
x
3
)
=
(
p
11
p
12
p
13
p
14
p
21
p
22
p
23
p
24
p
31
p
32
p
33
p
34
)
=
(
X
Y
0
1
)
=
(
p
11
p
12
p
14
p
21
p
22
p
24
p
31
p
32
p
34
)
(
X
Y
1
)
\begin{pmatrix}x_{1} \\x_{2} \\x_{3} \end{pmatrix}=\begin{pmatrix}p_{11}&p_{12}&p_{13}&p_{14} \\p_{21}&p_{22}&p_{23}&p_{24} \\p_{31}&p_{32}&p_{33}&p_{34} \end{pmatrix}=\begin{pmatrix}X \\Y \\0 \\1 \end{pmatrix}=\begin{pmatrix}p_{11}&p_{12}&p_{14} \\p_{21}&p_{22}&p_{24} \\p_{31}&p_{32}&p_{34} \end{pmatrix}\begin{pmatrix}X \\Y \\1 \end{pmatrix}
⎝⎛x1x2x3⎠⎞=⎝⎛p11p21p31p12p22p32p13p23p33p14p24p34⎠⎞=⎝⎜⎜⎛XY01⎠⎟⎟⎞=⎝⎛p11p21p31p12p22p32p14p24p34⎠⎞⎝⎛XY1⎠⎞
这个矩阵描述了三维平面到图像平面的射影变换:
A.使用透视相机时,最常见的一种从世界坐标系到图像平面的变换
B.两平面的映射用该3*3的矩阵表示
C.射影变换通常也称为“单应性映射”
D.H有八个自由度
3. 其它变换
弱透视变换:景物平面到相机面坐标是是比例关系
正交投影:两平面坐标大小相等,符号相反
四、双视图几何
1. 对极几何
对极几何是两视图之间满足的关系,指两幅视图上对应的点满足:
x
′
F
x
=
0
x^{'}Fx=0
x′Fx=0
这里的矩阵F,称为基础矩阵(Fundamental matrix)。
2. 求解基础矩阵F
第一次更新:19.11.15 15:50