カメラの位置・姿勢推定0 透視投影モデルと座標系の定義

Eight Point AlgorithmやFive Point Algorithm のエントリを書くにあたり,エピポーラ幾何等の内容も書かないといけないので,まず透視投影モデルとか座標系の定義を簡単にまとめておくことにしました.

透視投影モデル(Perspective Transformation Model)

コンピュータビジョン関係でカメラをモデル化する場合には,大体この「透視投影モデル」が使われています.原理的には簡単で,中学校とか小学校の理科で実験したピンホールカメラと同じようなモデルです.ただ,ピンホールカメラの場合,ピンホールより後ろに撮像面があるので,上下が反転してしまいます.これではめんどくさいので,透視投影モデルでは撮像面をピンホールの前にもってきて実像と投影像の向きが反転しないようにしています.

ピンホールカメラのイメージ

f:id:rkoichi2001:20180121215453j:plain

透視投影モデルのイメージ

f:id:rkoichi2001:20180121214814j:plain

投影で失われる情報

この書き方が正しいかどうか微妙ですが,当然ながら写真を撮影するということは3Dの世界を2Dの世界に投影するので,情報が欠落します.下記の絵に図示しますが,
「A. 小さいおっさんが近くにいる」
「B. 大きいおっさんが遠くにいる」
上記の二つは3Dの世界ではもちろんはっきりと違いがわかりますが,2Dの世界に落としてしまうと同じように見えてしまいます.人間は「おっさん」のサイズを回りの風景等の情報から無意識に推測しているので何となくサイズ感がわかりますが,おっさん以外なにも写っていない写真を見せられると判断するすべがなくなってしまいます.

f:id:rkoichi2001:20180121220953j:plain

画像からは「スケールが一意に決まらない」というこの特徴は,SFMでもSLAMでもVisualOdometryでもたびたび出てきます.

種々の座標系の定義

ここでは,以降で使用する座標系を定義します.

画像座標系

OpenCVとかカメラとかで映像を取ってそれを解析する場合には,画像の左上端や左下端を原点として,そこから (u, v) [pix] の形で画像上の位置を表現すると思います.この座標系を「画像座標系」といいます.

正規化画像座標系

上記の画像座標系をもう少し解析しやすくするために調整した座標を「正規化画像座標系」といいます.この座標系では光学中心から撮像面に下した垂線と撮像面との交点が原点になります.また,簡単のために焦点距離 f は1とします.

f:id:rkoichi2001:20180122055540j:plain

正規化画像座標と画像座標の関係

カメラ座標系で見た点(X, Y, Z)の投影点を正規化画像座標と画像座標で考えることで,正規化画像座標と画像座標の関係を導きます.
f:id:rkoichi2001:20180122061758j:plain
上記ノートの最後に出てきた A はカメラの内部パラメータといって「焦点距離」「光学中心」等々カメラとレンズに固有の値です.本当は Skew とかを考慮するともう少し変数が増えますが,大体はこの簡略化した形で十分かと思います.

ワールド座標と正規化画像座標・画像座標との関係

で,ここまで準備が整うと,次に知りたくなるのは
「ワールド座標系で(Xw, Yw, Zw)と表されている点は,画像のどこに移るのか?」
という点かと思います.これを計算します.
f:id:rkoichi2001:20180122065649j:plain

上記ノートの最後の式ですが,正規化画像座標での投影点 (x, y) が世界座標系から見た点座標 (Xw, Yw, Zw) から表現されたので,ワールド座標系と画像座標がつながりました.実際のカメラの投影点を計算するには内部パラメータ行列が必要ですので,下記のようになります.
f:id:rkoichi2001:20180122070744j:plain

ここまでで,
「ワールド座標系で(Xw, Yw, Zw)と表されている点は,画像のどこに移るのか?」
がわかりました.次は計算式がすっきりするように,斉次座標系を導入します.