1. 程式人生 > >視覺slam-----第二篇 相機和影象

視覺slam-----第二篇 相機和影象

     視覺slam系列更多偏向對本人的記錄而非講解,因此敘述部分會佔多數,推導過程幾乎沒有,文章主要內容摘自《視覺slam十四講》《計算機視覺中的多檢視幾何》《機器人學中的狀態估計》,部落格內容僅為幫助自己記憶,本人僅起到總結作用,所有內容均摘自以上幾本書。

相機模型

畫素座標系

針孔相機模型
摘自《視覺slam十四講》

摘自《視覺slam十四講》

f f 代表相機的焦距,空間上有某點P

[ X , Y , Z ] T [ X , Y , Z ] ^ { T }
,成像點為P′ [ X , Y
, Z ] T \left[ X ^ { \prime } , Y ^ { \prime } , Z ^ { \prime } \right] ^ { T }
P′ 的畫素座標 [ u , v ] T [ u , v ] ^ { T }

真實成像平面,對稱成像平面,歸一化成像平面的圖示(上圖)。整理得:

X = f X Z Y = f Y Z \begin{aligned} X ^ { \prime } & = f \frac { X } { Z } \\ Y ^ { \prime } & = f \frac { Y } { Z } \end{aligned}

畫素座標系通常的定義方式是:原點 O O ^ { \prime } 位於影象的左上角, u u 軸向右與x 軸平行, v \mathcal { v } 軸向下與y 軸平行。畫素座標系與成像平面之間,相差了一個縮放和一個原點的平移。我們設畫素座標在 u u 軸上縮放了 α \alpha 倍,在 v \mathcal { v } 上縮放了 β \beta 倍。同時,原點平移了 [ c x , c y ] T \left[ c _ { x } , c _ { y } \right] ^ { T } 。那麼,P′ 的座標與畫素座標 [ u , v ] T [ u , v ] ^ { T } 的關係為:

u = α X + c x u = \alpha X ^ { \prime } + c _ { x }
v = β Y + c y v = \beta Y ^ { \prime } + c _ { y }

整理後得:

u = f x X Z + c x u = f _ { x } \frac { X } { Z } + c _ { x }
v = f y Y Z + c y v = f _ { y } \frac { Y } { Z } + c _ { y }

其中, f f 的單位為米, α \alpha β \beta 的單位為畫素每米,所以 f x , f y f _ { x } , f _ { y } 的單位為畫素。把該式寫成矩陣形式,會更加簡潔,左側需要用到齊次座標:

( u v 1 ) = 1 Z ( f x 0 c x 0 f y c y 0 0 1 ) ( X Y z ) 1 Z K P \left( \begin{array} { l } { u } \\ { v } \\ { 1 } \end{array} \right) = \frac { 1 } { Z } \left( \begin{array} { c c c } { f _ { x } } & { 0 } & { c _ { x } } \\ { 0 } & { f _ { y } } & { c _ { y } } \\ { 0 } & { 0 } & { 1 } \end{array} \right) \left( \begin{array} { l } { X } \\ { Y } \\ { z } \end{array} \right) \triangleq \frac { 1 } { Z } K P

Z 挪到左側:

Z ( u v 1 ) = ( f x 0 c x 0 f y c y 0 0 1 ) ( X Y z ) K P Z \left( \begin{array} { l } { u } \\ { v } \\ { 1 } \end{array} \right) = \left( \begin{array} { c c c } { f _ { x } } & { 0 } & { c _ { x } } \\ { 0 } & { f _ { y } } & { c _ { y } } \\ { 0 } & { 0 } & { 1 } \end{array} \right) \left( \begin{array} { l } { X } \\ { Y } \\ { z } \end{array} \right) \triangleq K P