3D空間上の点と投影点の対応,および透視投影行列の導入まで終わりました.ここでは,ステレオカメラやカメラの移動推定に必須のエピポーラ幾何の説明をします.
異なる位置から撮影した写真の変化
下記,首里城を異なる視点から取った写真ですが,下記の写真をパッとみるだけで,人間には「一枚目の写真を撮ったカメラ」と「二枚目の写真を撮ったカメラ」の相対位置が何となくイメージできると思います.つまり,視点が異なっていても同じ要素が写真の中に移っていれば,ある程度カメラの移動を推定できるということになります.
異なる位置から同一物体を撮影した場合に成り立つ幾何学的関係
なんだかとっても仰々しいタイトルになってしまいましたが,「視点を変えても同じものが写っていた時には満たされるべき条件があって,それが何か?」をここでは説明していきます.ちなみに,フライングして説明してしまうと,
「視点を変えても同じものが写っていた時には満たされるべき条件・数式があって,それが何か?」を表すのがエピポーラ幾何です.
下記が,「同一点Pを位置を変えた二つのカメラで撮影した」時のエピポーラ幾何のざっくりイメージです.
ここで,カメラ位置Aから撮影した点Pは投影点Aとしてスクリーンに写っていますが,点Pの位置がはっきりわかっていないと仮定すると,投影点Aに対応する点は直線CP上のどこかに存在します.逆に言うと,直線CP上の点はすべて点Aに投影されます.
上記の投影点Aの位置情報を知っていることによって,カメラ位置BでPを撮影した時の投影点Bの位置に何か情報を与えるでしょうか?答えはYESです.下記ノートを見ていただければわかるように,投影点Aの位置がわかれば,点PのスクリーンB上の投影点は緑色線(エピポーラ線)上のどこかに投影されることがわかります.ここで,三角形PCC´をエピポーラ平面といいます.
エピポーラ幾何が満たす数式
スクリーンA上の投影点Aを知ることで,投影点Bの位置がエピポーラ線上のどこかに来ることを説明しました.ここからは,この拘束条件を数式で表現したいと思います.下記のノートを見ていただければわかるように,カメラ位置C,カメラ位置C’,撮影点Pで定義される三角形CC’Pは一つの平面を構成します.よって,カメラ位置Bからカメラ位置Aへの移動ベクトルtと,カメラ位置Bの座標系から見たカメラ位置Aの視線方向ベクトルの外積を計算すると,三角形CC'Pに垂直なベクトルができます.
これを数式で表現すると,下記のようになります.
上記ノートで外積を歪対称行列で表現しましたが,ベクトル演算だと扱いにくいので,行列に置きなおしただけです.上記数式が,場所の異なるカメラから同一物体を撮影した時に満たされるべき条件です.
基本行列 (Essential Matrix) の導入
満たされるべき数式を導入しましたが,コンピュータビジョンでは上記数式のtとRの部分を一つの行列で置き換えて表現します.これをE (Essential Matrix) と言います.基本行列を用いると,二つの画像における投影点の正規化画像座標 x, x' の関係を次のように簡潔に表現することができるようになります.
基礎行列 (Fundamental Matrix) の導入
基本行列を導入しましたが,これは「正規化画像座標 x, x' の関係」でした.では,もう一歩進んで投影点の画像座標系ではどうでしょうか?正規化画像座標と画像座標の関係は下記のように以前のエントリでふれたように内部パラメータ行列Aを用いて下記のように表されます.
上記の関係を「エピポーラ幾何が満たす数式」に代入すると,下記のようになります.
上記ノートで導入された行列Fのことを基礎行列(Fundamental Matrix)といいます.
基礎行列,基本行列を使って表現された二つの式が導かれましたが,この数式は二つの画像上の投影点の満たすべき拘束条件を表しており,これを エピポーラ拘束といいます.