前言
二維影像能提供豐富的環境資訊或空間資訊,這些資訊涵蓋(1)影像上每一點的亮度與物體某個表面點的反射光的強度的關系(2)影像點在影像平面上的位置與 a . a. a.相機與空間物體的相對方位的關系; b . b. b.相機的內部結構關系1,利用這些資訊,可實作諸如測距,測量,識別,地圖構建,定位,相機運動和姿態估計等方面的作業,
為了描述相機的幾何成像關系,需要進行數學建模,這些幾何模型引數就是相機引數,包括內參和外參,而求解引數的程序就稱為相機標定,本文所介紹的相機模型是計算機視覺中廣泛使用的針孔模型(The basic pinhole model),這種模型在數學上是三維空間到二維平面(image plane or focal plane)的中心投影,由一個 3 × 4 3\times4 3×4投影矩陣 P = K [ R ∣ t ] P=K[R|t] P=K[R∣t]2來描述, K K K為相機內參(internal camera parameters), [ R ∣ t ] [R|t] [R∣t]為外參(external parameters),
我們通過描述四個坐標系的相互轉換關系,可以拆分和剖析投影矩陣 P P P,
四個坐標系
下圖表示四個坐標系的相互關系3,

- 影像像素坐標系:表示三維空間物體在影像平面上的投影,像素是離散化的,其坐標原點在CCD影像平面的左上角, u u u軸平行于CCD平面水平向右, v v v軸垂直于 u u u軸向下,坐標使用 ( u , v ) (u,v) (u,v)來表示,影像寬度 W W W,高度 H H H
- 影像物理坐標系:坐標原點在CCD影像平面的中心, x , y x,y x,y軸分別平行于影像像素坐標系的 ( u , v ) (u,v) (u,v)軸,坐標用 ( x , y ) (x,y) (x,y)表示,
- 相機坐標系:以相機的光心為坐標系原點,
X
c
,
Y
c
X_c,Y_c
Xc?,Yc?軸平行于影像坐標系的
x
,
y
x,y
x,y軸,相機的光軸為
Z
c
Z_c
Zc?軸,坐標系滿足右手法則,相機的光心可理解為相機透鏡的幾何中心,如下圖所示3,

- 世界坐標系:用于表示空間物體的絕對坐標,使用 ( X w , Y w , Z w ) (X_w,Y_w,Z_w) (Xw?,Yw?,Zw?)表示,世界坐標系可通過旋轉和平移得到相機坐標系,
世界坐標系-相機坐標系
剛體變換只改變物體的空間位置(平移)和朝向(旋轉),而不改變其形狀的變換,可用兩個變數來描述:正交單位旋轉矩陣
R
R
R,三維平移矢量
t
t
t,世界坐標系到相機坐標系的轉換關系也是如此,如下圖所示2,

平移比較好理解,世界坐標系原點移動到相機坐標系;旋轉一共有三個自由度,即繞
x
,
y
,
z
x,y,z
x,y,z旋轉,根據旋轉角度可以分別得三個方向上的旋轉矩陣
R
x
,
R
y
,
R
z
R_x,R_y,R_z
Rx?,Ry?,Rz?,而旋轉矩陣即為他們的乘積4,
R
=
R
x
×
R
y
×
R
z
R=R_x \times R_y \times R_z
R=Rx?×Ry?×Rz?,以繞
X
X
X軸旋轉為例,我們可以得到
R
x
R_x
Rx?,

{
X
C
=
X
W
Y
C
=
Y
W
?
cos
?
θ
+
Z
W
?
sin
?
θ
Z
C
=
?
Y
W
?
sin
?
θ
+
Z
W
?
cos
?
θ
\left\{ \begin{aligned} X_C &= X_W \\ Y_C &= Y_W * \cos{\theta} + Z_W * \sin{\theta} \\ Z_C &= -Y_W * \sin{\theta} + Z_W * \cos{\theta} \end{aligned} \right.
??????XC?YC?ZC??=XW?=YW??cosθ+ZW??sinθ=?YW??sinθ+ZW??cosθ?
寫成矩陣形式如下,
[
X
C
Y
C
Z
C
]
=
[
1
0
0
0
cos
?
θ
sin
?
θ
0
?
sin
?
θ
cos
?
θ
]
[
X
W
Y
W
Z
W
]
=
R
x
[
X
W
Y
W
Z
W
]
\left[ \begin{array}{c} X_C \\ Y_C \\ Z_C \end{array} \right ]= \left[ \begin{array}{ccc} 1 & 0 & 0 \\ 0 & \cos{\theta} & \sin{\theta} \\ 0 & -\sin{\theta}& \cos{\theta} \end{array} \right ] \left[ \begin{array}{c} X_W \\ Y_W \\ Z_W \end{array} \right ]= R_x \left[ \begin{array}{c} X_W \\ Y_W \\ Z_W \end{array} \right ]
???XC?YC?ZC?????=???100?0cosθ?sinθ?0sinθcosθ???????XW?YW?ZW?????=Rx????XW?YW?ZW?????
同理可得繞
y
y
y軸和
z
z
z軸旋轉的關系,
[
X
C
Y
C
Z
C
]
=
[
cos
?
θ
0
?
sin
?
θ
0
1
0
sin
?
θ
0
cos
?
θ
]
[
X
W
Y
W
Z
W
]
=
R
y
[
X
W
Y
W
Z
W
]
\left[ \begin{array}{c} X_C \\ Y_C \\ Z_C \end{array} \right ]= \left[ \begin{array}{ccc} \cos{\theta} & 0 & -\sin{\theta} \\ 0 & 1 & 0 \\ \sin{\theta} & 0& \cos{\theta} \end{array} \right ] \left[ \begin{array}{c} X_W \\ Y_W \\ Z_W \end{array} \right ]= R_y \left[ \begin{array}{c} X_W \\ Y_W \\ Z_W \end{array} \right ]
???XC?YC?ZC?????=???cosθ0sinθ?010??sinθ0cosθ???????XW?YW?ZW?????=Ry????XW?YW?ZW?????
[
X
C
Y
C
Z
C
]
=
[
cos
?
θ
sin
?
θ
0
?
sin
?
θ
cos
?
θ
0
0
0
1
]
[
X
W
Y
W
Z
W
]
=
R
z
[
X
W
Y
W
Z
W
]
\left[ \begin{array}{c} X_C \\ Y_C \\ Z_C \end{array} \right ]= \left[ \begin{array}{ccc} \cos{\theta} & \sin{\theta} & 0 \\ -\sin{\theta} & \cos{\theta} & 0 \\ 0 & 0& 1 \end{array} \right ] \left[ \begin{array}{c} X_W \\ Y_W \\ Z_W \end{array} \right ]= R_z \left[ \begin{array}{c} X_W \\ Y_W \\ Z_W \end{array} \right ]
???XC?YC?ZC?????=???cosθ?sinθ0?sinθcosθ0?001???????XW?YW?ZW?????=Rz????XW?YW?ZW?????
于是可得旋轉矩陣
R
=
R
x
R
y
R
z
R = R_x R_y R_z
R=Rx?Ry?Rz?
[
X
C
Y
C
Z
C
]
=
R
[
X
W
Y
W
Z
W
]
+
t
\left[ \begin{array}{c} X_C \\ Y_C \\ Z_C \end{array} \right ]= R \left[ \begin{array}{c} X_W \\ Y_W \\ Z_W \end{array} \right ] + t
???XC?YC?ZC?????=R???XW?YW?ZW?????+t
寫成齊次坐標系形式為,
[
X
C
Y
C
Z
C
1
]
=
[
R
t
0
1
×
3
1
]
[
X
W
Y
W
Z
W
1
]
(1)
\left[ \begin{array}{c} X_C \\ Y_C \\ Z_C \\ 1 \end{array} \right ]= \left[ \begin{array}{cc} R & t\\ 0_{1 \times 3} & 1 \end{array} \right ] \left[ \begin{array}{c} X_W \\ Y_W \\ Z_W \\ 1 \end{array} \right ] \tag{1}
?????XC?YC?ZC?1??????=[R01×3??t1?]?????XW?YW?ZW?1??????(1)
相機坐標系-影像坐標系
相機坐標系到影像坐標系是透視關系,利用相似三角形進行計算2,

{
x
f
=
X
C
Z
C
y
f
=
Y
C
Z
C
\left\{ \begin{aligned} \frac{x}{f} = \frac{X_C}{Z_C} \\ \frac{y}{f} = \frac{Y_C}{Z_C} \end{aligned} \right.
????????fx?=ZC?XC??fy?=ZC?YC???
寫成齊次坐標形式的矩陣相乘為,
Z
C
[
x
y
1
]
=
[
f
0
0
0
0
f
0
0
0
0
1
0
]
[
X
C
Y
C
Z
C
1
]
=
[
K
∣
0
]
[
X
C
Y
C
Z
C
1
]
(2)
Z_C\left[ \begin{array}{c} x \\ y \\ 1 \end{array} \right ]= \left[ \begin{array}{cccc} f & 0 & 0 & 0 \\ 0 & f & 0 & 0 \\ 0 & 0 & 1 & 0 \end{array} \right ] \left[ \begin{array}{c} X_C \\ Y_C \\ Z_C \\ 1 \end{array} \right ] = [K|0]\left[ \begin{array}{c} X_C \\ Y_C \\ Z_C \\ 1 \end{array} \right ] \tag{2}
ZC????xy1????=???f00?0f0?001?000?????????XC?YC?ZC?1??????=[K∣0]?????XC?YC?ZC?1??????(2)
其中
K
K
K稱為相機內引數矩陣,
主點偏離影像中心(principal point offset)1:在實際應用中,由于事先不知道主點的確切位置,通常都是以影像中心或者影像的左上角作為影像坐標系的原點來建立影像坐標系的,當主點不是坐標系原點時,相機內引數矩陣形式如下, [ f 0 x 0 0 f y 0 0 0 1 ] \left[ \begin{array}{ccc} f & 0 & x_0 \\ 0 & f & y_0 \\ 0 & 0 & 1 \end{array} \right ] ???f00?0f0?x0?y0?1????
這種說法可能不太好理解,我們這里僅作參考,感興趣的可以閱讀Reference1和2中的相關章節,
影像坐標系-像素坐標系
像素坐標系是影像坐標系的離散化表示,實際CCD相機每個像素對應一個感光點,是個矩形,假設其物理尺寸為
d
x
dx
dx寬,
d
y
dy
dy高,以CCD傳感器的左上角為坐標原點建立的坐標系與以成像平面中心建立的坐標系的轉換關系如下,

{
u
=
x
d
x
+
u
0
v
=
y
d
y
+
v
0
\left\{ \begin{aligned} u = \frac{x}{d_x} + u_0 \\ v = \frac{y}{d_y} + v_0 \end{aligned} \right.
??????u=dx?x?+u0?v=dy?y?+v0??
齊次坐標矩陣形式為,
[
u
v
1
]
=
[
1
d
x
0
u
0
0
1
d
y
v
0
0
0
1
]
[
x
y
1
]
(3)
\left[ \begin{array}{c} u \\ v \\ 1 \end{array} \right ]= \left[ \begin{array}{ccc} \frac{1}{d_x} & 0 & u_0 \\ 0 & \frac{1}{d_y} & v_0 \\ 0 & 0 & 1 \end{array} \right ] \left[ \begin{array}{c} x \\ y \\ 1 \end{array} \right ] \tag{3}
???uv1????=???dx?1?00?0dy?1?0?u0?v0?1???????xy1????(3)
由于制造工藝的限制,一般情況下,CCD 攝像機數字離散化后的像素不是一個矩形而是一個平行四邊形,四邊形的一邊平行于 u u u軸,而另一邊與 u u u軸形成一個 θ \theta θ角,則內參矩陣中會出現一個扭曲因子 s s s,感興趣可進一步閱讀Reference1中相關章節,
綜合
根據公式
(
1
)
(
2
)
(
3
)
(1)(2)(3)
(1)(2)(3)可得,
Z
C
[
u
v
1
]
=
[
1
d
x
0
u
0
0
1
d
y
v
0
0
0
1
]
[
f
0
0
0
0
f
0
0
0
0
1
0
]
[
R
t
0
1
×
3
1
]
[
X
W
Y
W
Z
W
1
]
=
[
f
x
0
u
0
0
0
f
y
v
0
0
0
0
1
0
]
[
R
t
0
1
×
3
1
]
[
X
W
Y
W
Z
W
1
]
Z_C\left[ \begin{array}{c} u \\ v \\ 1 \end{array} \right ]= \left[ \begin{array}{ccc} \frac{1}{d_x} & 0 & u_0 \\ 0 & \frac{1}{d_y} & v_0 \\ 0 & 0 & 1 \end{array} \right ] \left[ \begin{array}{cccc} f & 0 & 0 & 0 \\ 0 & f & 0 & 0 \\ 0 & 0 & 1 & 0 \end{array} \right ] \left[ \begin{array}{cc} R & t\\ \bf{0}_{1 \times 3} & 1 \end{array} \right ] \left[ \begin{array}{c} X_W \\ Y_W \\ Z_W \\ 1 \end{array} \right ] \\ = \left[ \begin{array}{cccc} f_x & 0 & u_0 & 0 \\ 0 & f_y & v_0 & 0 \\ 0 & 0 & 1 & 0 \end{array} \right ] \left[ \begin{array}{cc} R & t\\ \bf{0}_{1 \times 3} & 1 \end{array} \right ] \left[ \begin{array}{c} X_W \\ Y_W \\ Z_W \\ 1 \end{array} \right ]
ZC????uv1????=???dx?1?00?0dy?1?0?u0?v0?1???????f00?0f0?001?000????[R01×3??t1?]?????XW?YW?ZW?1??????=???fx?00?0fy?0?u0?v0?1?000????[R01×3??t1?]?????XW?YW?ZW?1??????
其中,
[
f
x
0
u
0
0
0
f
y
v
0
0
0
0
1
0
]
\left[ \begin{array}{cccc} f_x & 0 & u_0 & 0 \\ 0 & f_y & v_0 & 0 \\ 0 & 0 & 1 & 0 \end{array} \right ]
???fx?00?0fy?0?u0?v0?1?000????為相機內參矩陣,
[
R
t
0
1
×
3
1
]
\left[ \begin{array}{cc} R & t\\ \bf{0}_{1 \times 3} & 1 \end{array} \right ]
[R01×3??t1?]為外參矩陣,相機標定就是為了求解這兩個矩陣的引數,
一圖勝千言

Reference
吳福朝. 計算機視覺中的數學方法[M]. 科學出版社, 2008 ?? ??
Hartley, R., & Zisserman, A. (2004). Multiple View Geometry in Computer Vision (2nd ed.). Cambridge: Cambridge University Press. doi:10.1017/CBO9780511811685 ?? ?? ??
Corke P. Robotics, vision and control: fundamental algorithms in MATLAB? second, completely revised[M]. Springer, 2017. ?? ??
Rotation of Axes ??
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/253086.html
標籤:其他
