溫故而知新,可以為師矣!
一、參考資料
《計算機視覺中的多視圖幾何-第五章》-Richard Hartley, Andrew Zisserman.
二、針孔模型相關(guān)介紹
1. 重要概念
1.1 投影中心/攝像機中心/光心
投影中心稱為攝像機中心,也稱為光心。投影中心位于一個歐式坐標系的原點。
1.2 圖像平面/聚焦平面
平面 Z = f Z=f Z=f 被稱為圖像平面或聚焦平面。
1.3 主軸/主射線
攝像機中心到圖像平面的垂線稱為攝像機的主軸或主射線。
1.4 主點
主軸與圖像平面的交點稱為主點。
1.5 主平面(攝像機)
過攝像機中心平行于圖像平面的平面稱為攝像機的主平面。
2. 攝像機投影
從3維世界降到2維圖像是一個投影過程,在此過程中我們失去了一維。建模這個過程的常用方式是利用中心投影,由空間中的一個點引出一條從3D世界點到空間中的一個固定點(投影中心)的射線,這條射線將與空間中被選為圖像平面的具體平面相交。射線與圖像平面的交點表示該點的圖像。
在針孔攝像機模型下,3維空間坐標為
X
=
(
X
,
Y
,
Z
)
T
X=(X, Y, Z)^T
X=(X,Y,Z)T 的點
X
X
X 被投影到圖像平面上的一點,該點是連接點
X
X
X 與投影中心的直線與圖像平面的交點。根據(jù)相似三角形,可以很快地算出點
(
X
,
Y
,
Z
)
T
(X, Y , Z)^T
(X,Y,Z)T 被映射到圖像平面上點
(
f
X
/
Z
,
f
Y
/
Z
,
f
)
T
(fX/Z, fY/Z, f)^T
(fX/Z,fY/Z,f)T 。略去最后一個圖像坐標之后,從世界坐標到圖像坐標的中心投影是:
(
X
,
Y
,
Z
)
T
?
(
f
X
/
Z
,
f
Y
/
Z
)
T
(
1
)
(X,Y,Z)^{T}\mapsto(fX/Z,fY/Z)^{T}\quad(1)
(X,Y,Z)T?(fX/Z,fY/Z)T(1)
這是從3維歐式空間
IR
3
\text{IR}^3
IR3 到 2維歐式空間
IR
2
\text{IR}^2
IR2 的一個映射。
3. 投影矩陣
齊次坐標的概念:齊次坐標就是用N+1維去描述一個N維的坐標。
一個點的齊次坐標 x = ( x 1 , x 2 , x 3 ) T x=(x_1,x_2,x_3)^T x=(x1?,x2?,x3?)T (它是3維向量)和非齊次坐標 ( x , y ) T (x,y)^T (x,y)T (它是2維向量)。
如果用齊次矢量表示世界和圖像點,那么中心投影可以簡單地表示成齊次坐標之間的線性映射。具體地說,
公式
(
1
)
公式(1)
公式(1) 可以寫成如下矩陣乘積形式:
[
X
Y
Z
1
]
?
[
f
x
f
y
z
]
=
[
f
0
f
0
1
0
]
[
X
Y
Z
1
]
(
2
)
\left.\left[\begin{array}{c}\mathbf{X}\\\mathbf{Y}\\\mathbf{Z}\\\mathbf{1}\end{array}\right.\right]\mapsto\left[\begin{array}{c}f\mathbf{x}\\f\mathbf{y}\\\mathbf{z}\end{array}\right]=\left[\begin{array}{cc}f&&&0\\&f&&0\\&&1&0\end{array}\right]\left[\begin{array}{c}\mathbf{X}\\\mathbf{Y}\\\mathbf{Z}\\\mathbf{1}\end{array}\right]\quad(2)
?XYZ1?
??
?fxfyz?
?=
?f?f?1?000?
?
?XYZ1?
?(2)
其中
[
f
0
f
0
1
0
]
\left[\begin{array}{cc}f&&&0\\&f&&0\\&&1&0\end{array}\right]
?f?f?1?000?
? 表示
3
?
4
3*4
3?4 齊次攝像機投影矩陣,記作
P
P
P。
P
P
P 可以寫成
d
i
a
g
(
f
,
f
,
1
)
[
I
∣
0
]
diag(f,f,1)[I|0]
diag(f,f,1)[I∣0],其中
d
i
a
g
(
f
,
f
,
1
)
diag(f,f,1)
diag(f,f,1)是對角矩陣,而
[
I
∣
0
]
[I|0]
[I∣0]表示矩陣分塊成一個
3
?
3
3*3
3?3? 恒等矩陣加上一個零列矢量。那么,中心投影的針孔模型的攝像機投影矩陣可以表示為:
P
=
d
i
a
g
(
f
,
f
,
1
)
[
I
∣
0
]
P=diag(f,f,1)[I|0]
P=diag(f,f,1)[I∣0]
恒等矩陣的概念:恒等矩陣,又稱為單位矩陣,是一個方陣,其對角線上的元素為1,其余元素均為0,記作 I I I或者 E E E。恒等矩陣的大小由其維度決定,例如3階恒等矩陣是一個3x3的矩陣。
恒等矩陣在線性代數(shù)中具有很多重要的性質(zhì)。例如,對于任意矩陣A,恒等矩陣1與A的乘積等于A本身。這是因為恒等矩陣的每個元素與A的對應(yīng)元素相乘,并將其相加,得到的結(jié)果就是A本身。這個性質(zhì)在矩陣的轉(zhuǎn)置、逆運算等方面都有著重要的應(yīng)用。
恒等矩陣在深度學(xué)習(xí)中也具有重要的作用。在神經(jīng)網(wǎng)絡(luò)中,恒等矩陣常被用作初始化權(quán)重矩陣。初始化權(quán)重矩陣時,將其設(shè)置為恒等矩陣可以使得神經(jīng)網(wǎng)絡(luò)的初始狀態(tài)更穩(wěn)定。這是因為恒等矩陣具有一定的對稱性和平衡性,可以避免梯度消失或梯度爆炸等問題,有助于提高模型的訓(xùn)練效果。
恒等矩陣還可以用于矩陣的相似性度量。在圖像處理和模式識別中,我們經(jīng)常需要比較兩個矩陣的相似性。通過計算兩個矩陣之間的差異,可以得到它們的相似性度量。而恒等矩陣作為一個特殊的矩陣,與其他矩陣相比具有明顯的差異,可以用于度量矩陣之間的相似性。
我們現(xiàn)在引入如下記號:世界點
X
X
X 用4維齊次矢量
(
X
,
Y
,
Z
,
1
)
(X,Y,Z,1)
(X,Y,Z,1)表示;圖像點
x
x
x 被表示成3維齊次矢量的形式。則
公式
(
2
)
公式(2)
公式(2) 可以緊湊地寫為:
x
=
P
X
x=PX
x=PX
4. 主點偏置
公式 ( 1 ) 公式(1) 公式(1) 假定圖像平面的坐標原點在主點上。實際情況可能不是這樣,如下圖所示:
攝像機坐標系
(
x
c
a
m
,
y
c
a
m
)
T
(x_{cam},y_{cam})^T
(xcam?,ycam?)T的坐標原點為攝像機中心,該原點在圖像平面的投影是主點p。圖像坐標系
(
x
,
y
)
T
(x,y)^T
(x,y)T 的坐標原點為圖像的左下角。
因此一般情形的映射為:
(
X
,
Y
,
Z
)
T
?
(
f
X
/
Z
+
p
x
,
f
Y
/
Z
+
p
y
)
T
(X,Y,Z)^{T}\mapsto(fX/Z+p_x,fY/Z+p_y)^{T} \\
(X,Y,Z)T?(fX/Z+px?,fY/Z+py?)T
其中
(
p
x
,
p
y
)
T
(p_x,p_y)^T
(px?,py?)T 是主點的坐標。該方程用齊次坐標可以表示為:
[
X
Y
Z
1
]
?
[
f
x
+
Z
p
x
f
y
+
Z
p
y
z
]
=
[
f
p
x
0
f
p
x
0
1
0
]
[
X
Y
Z
1
]
(
3
)
\left.\left[\begin{array}{c}\mathbf{X}\\\mathbf{Y}\\\mathbf{Z}\\\mathbf{1}\end{array}\right.\right]\mapsto\left[\begin{array}{c}f\mathbf{x+Zp_x}\\f\mathbf{y+Zp_y}\\\mathbf{z}\end{array}\right]=\left[\begin{array}{cc}f&&p_x&0\\&f&p_x&0\\&&1&0\end{array}\right]\left[\begin{array}{c}\mathbf{X}\\\mathbf{Y}\\\mathbf{Z}\\\mathbf{1}\end{array}\right]\quad(3)
?XYZ1?
??
?fx+Zpx?fy+Zpy?z?
?=
?f?f?px?px?1?000?
?
?XYZ1?
?(3)
若記
K
=
[
f
p
x
f
p
x
1
]
(
4
)
K=\left[\begin{array}{cc}f&&p_x\\&f&p_x\\&&1\end{array}\right]\quad(4)
K=
?f?f?px?px?1?
?(4)
則
公式
(
3
)
公式(3)
公式(3) 有一個簡潔的形式:
x
=
K
[
I
∣
0
]
X
c
a
m
(
5
)
x=K[I|0]X_{cam}\quad(5)
x=K[I∣0]Xcam?(5)
矩陣
K
K
K 稱為攝像機標定矩陣,在
公式
(
5
)
公式(5)
公式(5) 中我們記
(
X
,
Y
,
Z
,
1
)
T
(X,Y,Z,1)^T
(X,Y,Z,1)T 為
X
c
a
m
X_{cam}
Xcam? 是為了強調(diào)攝像機被設(shè)定在一個歐式坐標系的原點且主軸沿著
z
z
z 軸的指向,而點
X
c
a
m
X_{cam}
Xcam? 按此坐標系表示。這樣的坐標系可以稱為攝像機坐標系。
攝像機坐標系的原點為攝像機中心, z z z軸方向指向主軸。
5. 攝像機旋轉(zhuǎn)與位移
一般,3維空間點采用不同的歐式坐標系表示,稱為世界坐標系。攝像機坐標系與世界坐標系通過旋轉(zhuǎn)和平移相聯(lián)系。
如果
X
~
\widetilde{X}
X
是一個3維非齊次矢量,表示世界坐標系中一點的坐標,而
X
~
c
a
m
\widetilde{X}_{cam}
X
cam? 是以攝像機坐標系來表示的同一點,那么我們可以記
X
~
c
a
m
=
R
(
X
~
?
C
~
)
\widetilde{X}_{cam}=R\left(\widetilde{X}-\widetilde{C}\right)
X
cam?=R(X
?C
) ,其中
C
~
\widetilde{C}
C
表示攝像機中心在世界坐標系中的坐標,
R
R
R 是一個
3
?
3
3*3
3?3 的旋轉(zhuǎn)矩陣,表示攝像機坐標系的方位。這個方程在齊次坐標系下可以寫成:
X
c
a
m
=
[
R
?
R
C
~
0
T
1
]
[
X
Y
Z
1
]
=
[
R
?
R
C
~
0
T
1
]
X
(
6
)
X_{cam}=\begin{bmatrix}R&-R\widetilde{C}\\0^{T}&1\end{bmatrix}\begin{bmatrix}X\\Y\\Z\\1\end{bmatrix}=\begin{bmatrix}R&-R\widetilde{C}\\0^{T}&1\end{bmatrix}\mathbf{X}\quad(6)
Xcam?=[R0T??RC
1?]
?XYZ1?
?=[R0T??RC
1?]X(6)
把它與
公式
(
5
)
公式(5)
公式(5) 結(jié)合起來形成公式:
x
=
K
R
[
I
∣
?
C
~
]
X
(
7
)
x=KR\left[I|-\widetilde{C}\right]X\quad(7)
x=KR[I∣?C
]X(7)
其中
X
X
X 用世界坐標系表示。這是由一個針孔模型給出的一般映射。
6. 攝像機內(nèi)部參數(shù)與外部參數(shù)
由 公式 ( 7 ) 公式(7) 公式(7) 可以看出,一般的針孔攝像機 P = K R [ I ∣ ? C ~ ] P=KR\left[I|-\widetilde{C}\right] P=KR[I∣?C ] 有9個自由度:3個來自 K (元素 f , p x , p y ) K(元素 f,p_x, p_y) K(元素f,px?,py?),3個來自 R R R,3個來自 C ~ \widetilde{C} C 。包含在 K K K 中的參數(shù)稱為攝像機內(nèi)部參數(shù)或攝像機的內(nèi)部校準。包含在 R R R 和 C ~ \widetilde{C} C 中的參數(shù)與攝像機在世界坐標系中的方位和位置有關(guān),并稱為外部參數(shù)或外部校準。
為方便起見,通常攝像機中心不明顯標出,而把世界坐標系到圖像坐標系的變換表示成
X
~
c
a
m
=
R
X
~
+
t
\widetilde{X}_{cam}=R\widetilde{X}+t
X
cam?=RX
+t。在次情形時攝像機矩陣簡化成:
P
=
k
[
R
∣
t
]
(
8
)
P=k[R|t]\quad(8)
P=k[R∣t](8)
其中根據(jù)
公式
(
7
)
公式(7)
公式(7) ,
t
=
?
R
C
~
t=-R\widetilde{C}
t=?RC
。文章來源:http://www.zghlxwxcb.cn/news/detail-771827.html
7. CCD攝像機
對于基本針孔模型,假定圖像坐標在兩個軸向上有等尺度的歐式坐標。但CCD攝像機的像素可能不是正方形。如果圖像坐標以像素來測量,那么需要在每個方向上引入非等量尺度因子。具體地說,如果在
x
x
x 和
y
y
y 方向上圖像坐標單位距離的像素數(shù)分別是
m
x
m_x
mx? 和
m
y
m_y
my?,那么由世界坐標到像素坐標的變換由
公式
(
4
)
公式(4)
公式(4) 左乘一個附加的因子
d
i
a
g
(
m
x
,
m
y
,
1
)
diag(m_x,m_y,1)
diag(mx?,my?,1) 而得到。因此一個CCD攝像機標定矩陣的一般形式是:
K
=
[
a
x
x
0
a
y
y
0
1
]
(
9
)
K=\left[\begin{array}{cc}a_x&&x_0\\&a_y&y_0\\&&1\end{array}\right]\quad(9)
K=
?ax??ay??x0?y0?1?
?(9)
其中
a
x
=
f
m
x
a_x=fm_x
ax?=fmx? 和
a
y
=
f
m
y
a_y=fm_y
ay?=fmy? 分別把攝像機的焦距換算成
x
x
x 和
y
y
y 方向的像素量綱。同理,
x
~
0
=
(
x
0
,
y
0
)
T
\widetilde{x}_0=(x_0,y_0)^T
x
0?=(x0?,y0?)T 是用像素量綱表示的主點,它的坐標是
x
0
=
m
x
p
x
x_0=m_xp_x
x0?=mx?px? 和
y
0
=
m
y
p
y
y_0=m_yp_y
y0?=my?py?。因此,一個CCD攝像機有10個自由度。文章來源地址http://www.zghlxwxcb.cn/news/detail-771827.html
到了這里,關(guān)于【計算機視覺中的多視圖幾何系列】深入淺出理解針孔相機模型的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!