引言
大家好!今天我們將一起探索相機成像背后的一些關鍵技術概念:齊次坐標、徑向失真和圖像傳感器傾斜。這些概念對于理解相機如何捕捉和處理圖像至關重要。我們將通過簡單易懂的語言和嚴謹的公式來詳細解釋這些概念。
齊次坐標(Homogeneous Coordinates)
什么是齊次坐標?
齊次坐標是射影幾何中使用的一種坐標系統,它允許我們用有限的坐標表示無窮遠的點,并且簡化了許多幾何變換的公式。在齊次坐標中,我們通過在n維笛卡爾向量后面添加一個1來獲得齊次向量。
齊次坐標的優勢
- 表示無窮遠點:在齊次坐標中,無窮遠點可以用有限的坐標表示。例如,在2D空間中,點 ((x, y, 0)) 表示一個無窮遠點,其方向由 ((x, y)) 確定。
- 簡化公式:齊次坐標可以簡化許多幾何變換的公式。例如,仿射變換(包括平移、旋轉、縮放等)可以用一個線性齊次變換矩陣來表示。
齊次坐標的變換
齊次坐標允許我們用矩陣乘法來表示各種幾何變換。例如,一個3D點 (P_w = (X_w, Y_w, Z_w, 1)) 可以通過一個4×4的齊次變換矩陣 (T) 變換到另一個坐標系:
P c = T P w P_c = T P_w Pc?=TPw?
其中:
- (P_c) 是變換后的點。
- (T) 是齊次變換矩陣,包含了旋轉、平移、縮放等變換信息。
徑向失真
什么是徑向失真?
實際鏡頭通常會有失真,主要是徑向失真和切向失真。徑向失真是指圖像邊緣的點偏離直線路徑的現象。
徑向失真模型
-
基本公式:
[ u v ] = [ f x x ′ ′ + c x f y y ′ ′ + c y ] \begin{bmatrix} u \\ v \end{bmatrix} = \begin{bmatrix} f_x x'' + c_x \\ f_y y'' + c_y \end{bmatrix} [uv?]=[fx?x′′+cx?fy?y′′+cy??]- (u, v) 是圖像上的坐標。
- (f_x, f_y) 是相機的焦距。
- (c_x, c_y) 是主點坐標。
- (x’‘, y’') 是經過徑向失真校正后的坐標。
-
徑向失真校正:
[ x ′ ′ y ′ ′ ] = [ x ′ 1 + k 1 r 2 + k 2 r 4 + k 3 r 6 y ′ 1 + k 1 r 2 + k 2 r 4 + k 3 r 6 ] \begin{bmatrix} x'' \\ y'' \end{bmatrix} = \begin{bmatrix} \frac{x'}{1 + k_1 r^2 + k_2 r^4 + k_3 r^6} \\ \frac{y'}{1 + k_1 r^2 + k_2 r^4 + k_3 r^6} \end{bmatrix} [x′′y′′?]=[1+k1?r2+k2?r4+k3?r6x′?1+k1?r2+k2?r4+k3?r6y′??]- (r^2 = x’^2 + y’^2)
- (k_1, k_2, k_3) 是徑向失真系數。
圖像傳感器傾斜
什么是圖像傳感器傾斜?
在某些情況下,圖像傳感器可能會傾斜,導致透視失真。這種失真可以通過旋轉變換來校正。
傾斜模型
-
基本公式:
[ u v ] = [ f x x ′ ′ ′ + c x f y y ′ ′ ′ + c y ] \begin{bmatrix} u \\ v \end{bmatrix} = \begin{bmatrix} f_x x''' + c_x \\ f_y y''' + c_y \end{bmatrix} [uv?]=[fx?x′′′+cx?fy?y′′′+cy??]- (x’‘’, y’‘’) 是經過傾斜校正后的坐標。
-
傾斜校正:
[ x ′ ′ ′ y ′ ′ ′ ] = [ R 33 ( τ z , τ y ) 0 ? R 13 ( τ z , τ y ) 0 R 33 ( τ z , τ y ) ? R 23 ( τ z , τ y ) 1 0 0 ] [ x ′ ′ y ′ ′ 1 ] \begin{bmatrix} x''' \\ y''' \end{bmatrix} = \begin{bmatrix} R_{33}(\tau_z, \tau_y) & 0 & -R_{13}(\tau_z, \tau_y) \\ 0 & R_{33}(\tau_z, \tau_y) & -R_{23}(\tau_z, \tau_y) \\ 1 & 0 & 0 \end{bmatrix} \begin{bmatrix} x'' \\ y'' \\ 1 \end{bmatrix} [x′′′y′′′?]= ?R33?(τz?,τy?)01?0R33?(τz?,τy?)0??R13?(τz?,τy?)?R23?(τz?,τy?)0? ? ?x′′y′′1? ?其中,旋轉矩陣 (R(\tau_x, \tau_y)) 定義為:
R ( τ x , τ y ) = [ cos ? ( τ y ) 0 ? sin ? ( τ y ) 0 1 0 sin ? ( τ y ) 0 cos ? ( τ y ) ] [ 1 0 0 0 cos ? ( τ z ) sin ? ( τ z ) 0 ? sin ? ( τ z ) cos ? ( τ z ) ] R(\tau_x, \tau_y) = \begin{bmatrix} \cos(\tau_y) & 0 & -\sin(\tau_y) \\ 0 & 1 & 0 \\ \sin(\tau_y) & 0 & \cos(\tau_y) \end{bmatrix} \begin{bmatrix} 1 & 0 & 0 \\ 0 & \cos(\tau_z) & \sin(\tau_z) \\ 0 & -\sin(\tau_z) & \cos(\tau_z) \end{bmatrix} R(τx?,τy?)= ?cos(τy?)0sin(τy?)?010??sin(τy?)0cos(τy?)? ? ?100?0cos(τz?)?sin(τz?)?0sin(τz?)cos(τz?)? ?簡化后的旋轉矩陣:
R ( τ x , τ y ) = [ cos ? ( τ y ) cos ? ( τ z ) ? sin ? ( τ y ) cos ? ( τ z ) sin ? ( τ z ) cos ? ( τ y ) sin ? ( τ z ) sin ? ( τ y ) sin ? ( τ z ) ? cos ? ( τ z ) ? sin ? ( τ y ) cos ? ( τ y ) 0 ] R(\tau_x, \tau_y) = \begin{bmatrix} \cos(\tau_y) \cos(\tau_z) & -\sin(\tau_y) \cos(\tau_z) & \sin(\tau_z) \\ \cos(\tau_y) \sin(\tau_z) & \sin(\tau_y) \sin(\tau_z) & -\cos(\tau_z) \\ -\sin(\tau_y) & \cos(\tau_y) & 0 \end{bmatrix} R(τx?,τy?)= ?cos(τy?)cos(τz?)cos(τy?)sin(τz?)?sin(τy?)??sin(τy?)cos(τz?)sin(τy?)sin(τz?)cos(τy?)?sin(τz?)?cos(τz?)0? ? -
應用旋轉變換:
[ x ′ ′ ′ y ′ ′ ′ 1 ] = [ cos ? ( τ y ) cos ? ( τ z ) cos ? ( τ y ) sin ? ( τ z ) ? sin ? ( τ y ) ? sin ? ( τ y ) cos ? ( τ z ) sin ? ( τ y ) sin ? ( τ z ) cos ? ( τ y ) sin ? ( τ z ) ? cos ? ( τ z ) 0 ] [ x ′ ′ y ′ ′ 1 ] \begin{bmatrix} x''' \\ y''' \\ 1 \end{bmatrix} = \begin{bmatrix} \cos(\tau_y) \cos(\tau_z) & \cos(\tau_y) \sin(\tau_z) & -\sin(\tau_y) \\ -\sin(\tau_y) \cos(\tau_z) & \sin(\tau_y) \sin(\tau_z) & \cos(\tau_y) \\ \sin(\tau_z) & -\cos(\tau_z) & 0 \end{bmatrix} \begin{bmatrix} x'' \\ y'' \\ 1 \end{bmatrix} ?x′′′y′′′1? ?= ?cos(τy?)cos(τz?)?sin(τy?)cos(τz?)sin(τz?)?cos(τy?)sin(τz?)sin(τy?)sin(τz?)?cos(τz?)??sin(τy?)cos(τy?)0? ? ?x′′y′′1? ? -
最終投影公式:
[ u v ] = [ f x x ′ ′ ′ + c x f y y ′ ′ ′ + c y ] \begin{bmatrix} u \\ v \end{bmatrix} = \begin{bmatrix} f_x x''' + c_x \\ f_y y''' + c_y \end{bmatrix} [uv?]=[fx?x′′′+cx?fy?y′′′+cy??]
通過上述步驟,我們可以得到校正后的圖像坐標 ((u, v)),從而消除由于圖像傳感器傾斜引起的透視失真。
總結
- 齊次坐標:通過在笛卡爾坐標后面添加一個1來獲得齊次向量,簡化了許多幾何變換的公式。
- 徑向失真校正:通過徑向失真系數 (k_1, k_2, k_3) 校正圖像邊緣的失真。
- 圖像傳感器傾斜校正:通過旋轉變換矩陣 (R(\tau_x, \tau_y)) 校正由于傳感器傾斜引起的透視失真。
希望這篇文章能幫助你更好地理解相機中的齊次坐標、徑向失真和傳感器傾斜校正!