推導
基礎矩陣有許多種推導方式,下面介紹其中一種。
圖1
在雙相機的拍攝場景中建立一個空間直角坐標系,稱為世界坐標系(如圖1中藍色坐標系)。物點就是場景中物體表面上的點,比如說點
P
{\displaystyle P}
在世界坐標系中的坐標為
(
X
,
Y
,
Z
)
⊤
{\displaystyle (X,Y,Z)^{\top }}
。
相機的光心從物理上講就是相機鏡頭組的光學中心。以光心為原點,主光軸為Z軸建立空間直角坐標系,稱為相機坐標系(如圖1中綠色和紅色坐標系)。像平面在相機坐標系中的方程即為z=1,像點就是在物點在像平面上的投影 ,這個投影關係是透視投影 。
用一句話來概括相機的拍攝模型,就是物點、像點、光心三點一線,此模型稱為針孔相機模型。在此模型中,世界坐標繫到左右相機坐標系的變換是剛性變換,即只包含旋轉和平移,因此我們分別用增廣矩陣
[
R
|
t
]
{\displaystyle [R|t]}
和
[
R
′
|
t
′
]
{\displaystyle [R'|t']}
表示,其中
R
{\displaystyle R}
和
R
′
{\displaystyle R'}
是
3
×
3
{\displaystyle 3\times 3}
的旋轉矩陣,
t
{\displaystyle t}
和
t
′
{\displaystyle t'}
為平移向量。令
P
~
{\displaystyle {\widetilde {P}}}
為P的齊次化坐標,那麼物點P在左右相機坐標系下的坐標分別為
P
c
a
m
(
X
C
,
Y
C
,
Z
C
)
⊤
=
[
R
|
t
]
P
~
{\displaystyle P_{cam}(X_{C},Y_{C},Z_{C})^{\top }=[R|t]{\widetilde {P}}}
和
P
c
a
m
′
(
X
C
′
,
Y
C
′
,
Z
C
′
)
⊤
=
[
R
′
|
t
′
]
P
~
{\displaystyle P'_{cam}(X_{C'},Y_{C'},Z_{C'})^{\top }=[R'|t']{\widetilde {P}}}
。
圖2
以一台相機為例,如圖2所示,
C
{\displaystyle C}
為相機光心,
Z
{\displaystyle Z}
軸為主軸。物點在相機坐標系下的坐標
P
~
{\displaystyle {\widetilde {P}}}
和以相片左下角為原點的像點坐標
p
{\displaystyle p}
有如下關係:
x
=
(
f
x
X
C
Z
C
+
x
0
,
)
⊤
{\displaystyle x=\left({\frac {f_{x}X_{C}}{Z_{C}}}+x_{0},\right)^{\top }}
和
y
=
(
f
y
Y
C
Z
C
+
y
0
,
)
⊤
{\displaystyle y=\left({\frac {f_{y}Y_{C}}{Z_{C}}}+y_{0},\right)^{\top }}
式中
(
x
0
,
y
0
,
f
)
{\displaystyle (x_{0},y_{0},f)}
為像主點在相機坐標系下的坐標。
設兩相機內參數矩陣同為:
K
=
[
f
x
0
p
c
x
0
f
y
p
c
y
0
0
1
]
,
{\displaystyle K=\left[{\begin{array}{ccc}f_{x}&0&{p_{c}}_{x}\\0&f_{y}&{p_{c}}_{y}\\0&0&1\end{array}}\right],}
那麼物點與像點之間的關係為:
p
=
1
Z
C
K
P
c
a
m
=
1
Z
C
K
[
R
|
t
]
P
,
{\displaystyle p={\frac {1}{Z_{C}}}KP_{cam}={\frac {1}{Z_{C}}}K[R|t]P,}
p
′
=
1
Z
C
K
P
c
a
m
′
=
1
Z
C
K
[
R
′
|
t
′
]
P
,
{\displaystyle p'={\frac {1}{Z_{C}}}KP'_{cam}={\frac {1}{Z_{C}}}K[R'|t']P,}
將
P
=
[
R
|
t
]
+
P
c
a
m
=
Z
C
′
K
[
R
|
t
]
+
p
{\displaystyle P=[R|t]^{+}P_{cam}=Z'_{C}K[R|t]^{+}p}
代入上式,並令
H
π
=
K
[
R
′
|
t
′
]
K
[
R
|
t
]
+
{\displaystyle H_{\pi }=K[R'|t']K[R|t]^{+}}
,得:
p
′
=
Z
C
′
Z
C
H
π
p
{\displaystyle p'={\frac {Z'_{C}}{Z_{C}}}H_{\pi }p}
由於物點、像點、光心三點一線,那麼物點、一對同名點和2個光心這5個點一定處於同一個平面上,我們將這個平面稱為𝜋平面。𝜋平面和像平面的交線稱為極線
l
′
{\displaystyle l'}
。顯然,左片上的每一個像點
p
{\displaystyle p}
對應於右片上的一條極線
l
′
{\displaystyle l'}
,且
p
′
{\displaystyle p'}
一定在
l
′
{\displaystyle l'}
上。兩個相機光心的連線與右片像平面的交點稱為極點,用
e
′
{\displaystyle e'}
表示。
在右片像平面內,極線
l
′
{\displaystyle l'}
的方程可以表示為
A
x
+
B
y
+
C
=
0
{\displaystyle Ax+By+C=0}
。這個平面直線方程的一般式可以視為:
(
A
,
B
,
C
)
⊤
⋅
(
x
,
y
,
1
)
⊤
=
0
{\displaystyle (A,B,C)^{\top }\cdot (x,y,1)^{\top }=0}
因此,我們可以用一個三維向量
(
A
,
B
,
C
)
{\displaystyle (A,B,C)}
來表示極線
l
′
{\displaystyle l'}
,並且
l
′
{\displaystyle l'}
的方程可以簡單的由
e
′
{\displaystyle e'}
坐標向量與
p
′
{\displaystyle p'}
坐標向量做向量積得到,即
l
′
:
e
′
×
p
′
=
[
e
′
]
×
p
′
{\displaystyle l':e'\times p'=[e']_{\times }p'}
。其中
[
e
′
]
×
=
[
0
−
1
y
0
1
0
−
x
0
−
y
0
x
0
0
]
,
{\displaystyle [e']_{\times }=\left[{\begin{array}{ccc}0&-1&y_{0}\\1&0&-x_{0}\\-y_{0}&x_{0}&0\end{array}}\right],}
令
[
e
′
]
x
{\displaystyle [e']x}
表示向量積的矩陣形式,那麼再將同名點之間的變換關係代入,得到極線的方程為:
l
′
:
Z
C
′
Z
C
[
e
′
]
×
H
π
p
{\displaystyle l':{\frac {Z'_{C}}{Z_{C}}}[e']_{\times }H_{\pi }p}
因為
p
′
{\displaystyle p'}
在
l
′
{\displaystyle l'}
上,所以顯然有:
p
′
l
′
=
p
′
[
e
′
]
×
H
π
p
=
0
{\displaystyle p'l'=p'[e']_{\times }H_{\pi }p=0}
令
F
=
[
e
′
]
×
H
π
{\displaystyle \mathrm {F} =[e']_{\times }H_{\pi }}
,即得到:
p
′
⊤
F
p
=
0
{\displaystyle p'^{\top }\mathrm {F} p=0}
根據立體像對估算基礎矩陣
在三維重建技術中的應用
參考文獻
^
Q. T. Luong. Matrice fondamentale et auto-calibration en vision par ordinateur. PhD Thesis, University of Paris, Orsay. 1992.
^
Olivier D. Faugeras. What can be seen in three dimensions with an uncalibrated stereo rig?. Proceedings of European Conference on Computer Vision. 1992.
外部連結