坐標(biāo)系轉(zhuǎn)換
之前只是停留在會(huì)用的階段,一直沒去讀懂計(jì)算的原理,今天通讀了大佬的文章,寫的言簡意賅,感謝感謝~~特此記錄一下,僅用作個(gè)人筆記
貼鏈接,十分感謝~
https://blog.csdn.net/weixin_44278406/article/details/112986651
https://blog.csdn.net/guyuealian/article/details/104184551
四個(gè)不同類型的坐標(biāo)系
將三維物體轉(zhuǎn)換成照片上的二維坐標(biāo),由四個(gè)坐標(biāo)系進(jìn)行轉(zhuǎn)換。
1. 世界坐標(biāo)系
世界坐標(biāo)系是一個(gè)特殊坐標(biāo)系,它建立了描述其他坐標(biāo)系需要的參考框架。能夠用世界坐標(biāo)系描述其他坐標(biāo)系的位置,而不能用更大的、外部的坐標(biāo)系描述世界坐標(biāo)系。從非技術(shù)意義上講,世界坐標(biāo)系建立的是我們所關(guān)心的最大坐標(biāo)系,而不必真的是整個(gè)世界。
用
(
X
w
,
Y
w
,
Z
w
)
(X_w,Y_w,Z_w)
(Xw?,Yw?,Zw?)來表示,世界坐標(biāo)系可通過旋轉(zhuǎn)和平移得到相機(jī)坐標(biāo)系。
2. 相機(jī)坐標(biāo)系
以相機(jī)透鏡的幾何中心(光心)為原點(diǎn),坐標(biāo)系滿足右手法則,用 ( X c , Y c , Z c ) (X_c,Y_c,Z_c) (Xc?,Yc?,Zc?)來表示;相機(jī)光軸為坐標(biāo)系的Z軸,X軸水平,Y軸豎直。
3. 圖像物理坐標(biāo)系
以CCD圖像的中心為原點(diǎn),坐標(biāo)由
(
x
,
y
)
(x, y)
(x,y) 表示,圖像坐標(biāo)系的單位,一般是毫米,坐標(biāo)原點(diǎn)為相機(jī)光軸與成像平面的交點(diǎn)(一般情況下,這個(gè)交點(diǎn)是接近于圖像的正中心)
CCD,英文全稱:Charge coupled Device,中文全稱:電荷耦合元件,可以稱為CCD圖像傳感器。CCD是一種半導(dǎo)體器件,能夠把光學(xué)影像轉(zhuǎn)化為數(shù)字信號(hào)。 CCD上植入的微小光敏物質(zhì)稱作像素(Pixel)。一塊CCD上包含的像素?cái)?shù)越多,其提供的畫面分辨率也就越高。
4. 圖像像素坐標(biāo)系
其實(shí),當(dāng)我們提及一個(gè)圖像時(shí),通常指的是圖像的像素坐標(biāo)系。像素坐標(biāo)系的原點(diǎn)在左上角,并且單位為像素。
將圖像坐標(biāo)系的原點(diǎn) O 1 O_1 O1? ,轉(zhuǎn)化到以 O 0 O_0 O0? 為原點(diǎn)的坐標(biāo)系中。使用的原因:
- 如果使用圖像坐標(biāo)系,單位mm,其實(shí)不太好衡量具體的圖像,如果按照統(tǒng)一的像素標(biāo)準(zhǔn),比較容易衡量圖像的質(zhì)量
- 如果使用圖像坐標(biāo)系,然后就有四個(gè)象限,這樣會(huì)有正負(fù)數(shù)的問題,但是轉(zhuǎn)換成像素坐標(biāo)系后,都為整數(shù)。在后續(xù)的操作和運(yùn)算中,都簡化很多。
坐標(biāo)轉(zhuǎn)換
針孔模型(The basic pinhole model)。這種模型在數(shù)學(xué)上是三維空間到二維平面(image plane or focal plane)的中心投影,由一個(gè) 3 × 4 3 × 4 3×4 投影矩陣 P = K [ R ∣ t ] P = K [ R | t ] P=K[R∣t]來描述, K K K 為相機(jī)內(nèi)參(internal camera parameters), [ R ∣ t ] [R|t] [R∣t]為外參(external parameters)。
世界坐標(biāo) → 相機(jī)坐標(biāo)(剛性變換)
[
X
c
Y
c
Z
c
1
]
=
[
R
t
0
1
?
3
1
]
[
X
w
Y
w
Z
w
1
]
\begin{bmatrix}X_c \\ Y_c \\ Z_c \\ 1 \end{bmatrix} = \begin{bmatrix}R & t\\\\ 0_{1*3} & 1 \end{bmatrix} \begin{bmatrix}X_w \\ Y_w \\ Z_w \\ 1 \end{bmatrix}
?
??Xc?Yc?Zc?1??
??=?
??R01?3??t1??
???
??Xw?Yw?Zw?1??
??
X
c
,
Y
c
,
Z
c
X_c,Y_c,Z_c
Xc?,Yc?,Zc?代表相機(jī)坐標(biāo);
X
w
,
Y
w
,
Z
w
X_w,Y_w,Z_w
Xw?,Yw?,Zw?代表世界坐標(biāo);R代表正交單位旋轉(zhuǎn)矩陣,t代表三維平移矢量。
根據(jù)旋轉(zhuǎn)角度可以分別得三個(gè)方向上的旋轉(zhuǎn)矩陣,而旋轉(zhuǎn)矩陣即為他們的乘積:
R
=
R
x
?
R
y
?
R
z
R = R_x * R_y * R_z
R=Rx??Ry??Rz?
順便記錄一下三個(gè)旋轉(zhuǎn)矩陣的公式,經(jīng)常忘記。
繞 X X X旋轉(zhuǎn) θ \theta θ度
[ X c Y c Z c ] = [ 1 0 0 0 c o s θ s i n θ 0 ? s i n θ c o s θ ] [ X w Y w Z w ] = R x [ X w Y w Z w ] \begin{bmatrix}X_c\\Y_c\\Z_c\end{bmatrix} = \begin{bmatrix}1&0&0\\0&cos\theta&sin\theta\\0&-sin\theta&cos\theta\end{bmatrix} \begin{bmatrix}X_w\\Y_w\\Z_w\end{bmatrix}=R_x\begin{bmatrix}X_w\\Y_w\\Z_w\end{bmatrix} ? ??Xc?Yc?Zc??? ??=? ??100?0cosθ?sinθ?0sinθcosθ?? ??? ??Xw?Yw?Zw??? ??=Rx?? ??Xw?Yw?Zw??? ??
繞 Y Y Y軸旋轉(zhuǎn) θ \theta θ度
[ X c Y c Z c ] = [ c o s θ 0 ? s i n θ 0 1 0 s i n θ 0 c o s θ ] [ X w Y w Z w ] = R y [ X w Y w Z w ] \begin{bmatrix}X_c\\Y_c\\Z_c\end{bmatrix} = \begin{bmatrix}cos\theta&0&-sin\theta\\0&1&0\\sin\theta&0&cos\theta\end{bmatrix} \begin{bmatrix}X_w\\Y_w\\Z_w\end{bmatrix}=R_y\begin{bmatrix}X_w\\Y_w\\Z_w\end{bmatrix} ? ??Xc?Yc?Zc??? ??=? ??cosθ0sinθ?010??sinθ0cosθ?? ??? ??Xw?Yw?Zw??? ??=Ry?? ??Xw?Yw?Zw??? ??
繞 Z Z Z軸旋轉(zhuǎn) θ \theta θ度
[ X c Y c Z c ] = [ c o s θ s i n θ 0 ? s i n θ c o s θ 0 0 0 1 ] [ X w Y w Z w ] = R z [ X w Y w Z w ] \begin{bmatrix}X_c\\Y_c\\Z_c\end{bmatrix} = \begin{bmatrix}cos\theta&sin\theta&0\\-sin\theta&cos\theta&0\\0&0&1\end{bmatrix} \begin{bmatrix}X_w\\Y_w\\Z_w\end{bmatrix}=R_z\begin{bmatrix}X_w\\Y_w\\Z_w\end{bmatrix} ? ??Xc?Yc?Zc??? ??=? ??cosθ?sinθ0?sinθcosθ0?001?? ??? ??Xw?Yw?Zw??? ??=Rz?? ??Xw?Yw?Zw??? ??
相機(jī)坐標(biāo) → 圖像坐標(biāo)系(中心投影)
相機(jī)坐標(biāo)系到圖像坐標(biāo)系是透視關(guān)系,利用相似三角形進(jìn)行計(jì)算。
寫成齊次坐標(biāo)形式的矩陣相乘為
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
]
Zc \begin{bmatrix}x\\y\\1\end{bmatrix} = \begin{bmatrix}f&0&0&0\\0&f&0&0\\0&0&1&0 \end{bmatrix} \begin{bmatrix}X_c\\Y_c\\Z_c\\1\end{bmatrix} = \begin{bmatrix}K|0\end{bmatrix} \begin{bmatrix}X_c\\Y_c\\Z_c\\1\end{bmatrix}
Zc?
??xy1??
??=?
??f00?0f0?001?000??
???
??Xc?Yc?Zc?1??
??=[K∣0?]?
??Xc?Yc?Zc?1??
??
其中f代表焦距,即相機(jī)坐標(biāo)系和圖像坐標(biāo)系在Z軸上的差。此時(shí)投影點(diǎn)p的單位還是mm,并不是pixel,不方便進(jìn)行后續(xù)運(yùn)算。
圖像坐標(biāo)系 → 像素坐標(biāo)系(離散化)
像素坐標(biāo)系的原點(diǎn)在左上角,并且單位為像素。像素坐標(biāo)系和圖像坐標(biāo)系都在成像平面上,只是各自的原點(diǎn)和度量單位不一樣。圖像坐標(biāo)系的原點(diǎn)為相機(jī)光軸與成像平面的交點(diǎn),通常情況下是成像平面的中點(diǎn)或者叫principal point。圖像坐標(biāo)系的單位是mm,屬于物理單位,而像素坐標(biāo)系的單位是pixel,我們平常描述一個(gè)像素點(diǎn)都是幾行幾列。所以這二者之間的轉(zhuǎn)換如下:其中dx和dy表示每一列和每一行分別代表多少mm,即1pixel=dx mm
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
]
Zc \begin{bmatrix}u\\v\\1\end{bmatrix} = \begin{bmatrix}\frac{1}{d_x}&0&u_0\\0&\frac{1}{d_y}&v_0\\0&0&1 \end{bmatrix} \begin{bmatrix}f&0&0&0\\0&f&0&0\\0&0&1&0 \end{bmatrix} \begin{bmatrix}R & t\\\\ 0_{1*3} & 1 \end{bmatrix} \begin{bmatrix}X_w \\ Y_w \\ Z_w \\ 1 \end{bmatrix}
Zc?
??uv1??
??=?
??dx?1?00?0dy?1?0?u0?v0?1??
???
??f00?0f0?001?000??
???
??R01?3??t1??
???
??Xw?Yw?Zw?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
]
\begin{bmatrix}\frac{1}{d_x}&0&u_0\\0&\frac{1}{d_y}&v_0\\0&0&1 \end{bmatrix} \begin{bmatrix}f&0&0&0\\0&f&0&0\\0&0&1&0 \end{bmatrix}
?
??dx?1?00?0dy?1?0?u0?v0?1??
???
??f00?0f0?001?000??
??為相機(jī)內(nèi)參矩陣,
[
R
t
0
1
?
3
1
]
\begin{bmatrix}R & t\\\\ 0_{1*3} & 1 \end{bmatrix}
?
??R01?3??t1??
??為外參矩陣。相機(jī)標(biāo)定就是為了求解這兩個(gè)矩陣的參數(shù)。文章來源:http://www.zghlxwxcb.cn/news/detail-414389.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-414389.html
到了這里,關(guān)于世界坐標(biāo)系、相機(jī)坐標(biāo)系和圖像坐標(biāo)系的轉(zhuǎn)換的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!