此條目需要
精通或熟悉相關主題的編者 參與及協助編輯。
(2014年12月17日 ) 請邀請 適合的人士改善本條目 。更多的細節與詳情請參見討論頁 。
在計算機視覺 中,基礎矩陣 (Fundamental matrix)
F
{\displaystyle \mathrm {F} }
是一個3×3的矩陣 ,表達了立體像對 的像點 之間的對應關係。在對極幾何 中,對於立體像對中的一對同名點 ,它們的齊次化圖像坐標分別為
p
{\displaystyle p}
與
p
′
{\displaystyle p'}
,
F
p
{\displaystyle \mathrm {F} p}
表示一條必定經過
p
′
{\displaystyle p'}
的直線(極線 )。這意味着立體像對的所有同名點對都滿足:
p
′
⊤
F
p
=
0
{\displaystyle p'^{\top }\mathrm {F} p=0}
F矩陣中蘊含了立體像對的兩幅圖像在拍攝時相互之間的空間幾何關係(外參數)以及相機檢校參數(內參數),包括旋轉、位移、像主點坐標和焦距。因為
F
{\displaystyle \mathrm {F} }
矩陣的秩為2,並且可以自由縮放(尺度化),所以只需7對同名點即可估算出F的值。
基礎矩陣這一概念由Q. T. Luong在他那篇很有影響力的博士畢業論文[ 1] 中提出。Faugeras則是在1992年發表的著作[ 2] 中以上面的關係式給出了
F
{\displaystyle \mathrm {F} }
矩陣的定義。儘管Longuet-Higgins提出的本質矩陣 也滿足類似的關係式,但本質矩陣中並不蘊含相機檢校參數。本質矩陣與基礎矩陣之間的關係可由下式表達:
E
=
K
′
⊤
F
K
{\displaystyle \mathrm {E} =\mathrm {K'^{\top }} \mathrm {FK} }
其中
K
{\displaystyle \mathrm {K} }
和
K
′
{\displaystyle \mathrm {K'} }
分別為兩個相機的內參數矩陣。
基礎矩陣有許多種推導方式,下面介紹其中一種。
圖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.