エピポーラ幾何 (epipolar geometry) |
2017-05-28 - 2018-05-30 (update) |
|
|
*エピポーラ幾何 とは
異なる視点で撮影した2枚の画像間にある幾何的な法則を表す言葉です.例えば,片側の画像上のある点{$x_0$}について,もう片側の画像上で対応する点{$x_1$}を探索したいとします.エピポーラ幾何はその探索範囲がある直線上に拘束できることを示します.この幾何拘束を使うことで,カメラ間の位置姿勢の推定や対応点の効率的な探索を行うことができます.
[img:fwmv]
{{small:図1 エピポーラ幾何の関係図}}
エピポーラ幾何を含めた3次元的な幾何について詳しく学びたい場合,[1]と[2]の文献が参考になります.[2]の文献は入門者向けで,分かりやすいと思います.[3]の文献では,実装する上で役に立つ具体的な計算手順や精度を上げる解法などが解説されています.[4]の文献では,OpenCVを利用してカメラ間の幾何関係を推定する具体的な実装方法が解説されています.GitHubにサンプルコードもアップロードされています.
{{small:[1]R.Hartley, A.Zisserman, "Multiple View Geometry in Computer Vision", Cambridge University Press, 2004}}
{{small:内容を一部閲覧できる紹介ページ:[link:http://www.robots.ox.ac.uk/~vgg/hzbook/] }}
{{small:[2]J. Solem, 訳 相川 愛三, "実践 コンピュータビジョン", O'Reilly Japan, 2013}}
{{small:[link:https://www.oreilly.co.jp/books/9784873116075/] }}
{{small:[3]金谷健一, 菅谷保之, 金澤靖, "3元コンピュータビジョン計算ハンドブック", 森北出版, 2016}}
{{small:[link:http://www.morikita.co.jp/books/book/3016] }}
{{small:[4]D.Baggio, S.Emami, D.Escrivá, K.Ievgen, N.Mahmood, J.Saragih, R.Shilkrot, "Mastering OpenCV with Practical Computer Vision Projects", Packt Publishing, 2012}}
{{small:[link:http://www.packtpub.com/cool-projects-with-opencv/book] }}
{{small:GitHub:[link:https://github.com/MasteringOpenCV/code] }}
*用語解説
図1にエピポーラ幾何の関係図を示します.ここでは,図1に登場する用語と,E行列とF行列について簡単に説明します.
**エピポーラ線(epipolar line)
片側の画像上のある点について,もう片側の画像上で対応する点の存在しうる範囲を示す直線です.
特別な例として正確に水平に配置したステレオカメラの場合は,エピポーラ線は2つの画像上で同じ高さに水平に並びます.
[img:yztl]
{{small:図2 水平に配置したステレオカメラのエピポーラ線}}
**エピポール(epipole)
図1の{$e_0$}や{$e_1$}です.2つのカメラの中心{$C_0$}と{$C_1$}を結んだ線と,カメラの画像面との交点です.
**エピポーラ平面(epipolar plane)
2つのカメラの中心{$C_0$}と{$C_1$}と,注目する3次元上の点{$X$}を結んだ平面です.このエピポーラ平面と各画像面とが交差する線分がエピポーラ線になります.
**E行列(基本行列:Essential Matrix)
エピポーラ幾何の拘束を表現する3行3列の行列です.この行列を用いて,{$x_0$}と{$x_1$}の関係は次の式で表現できます.
{$${x_1}^{\mathrm{T}}Ex_0=0\tag{1}$$}
{$$\begin{bmatrix} x_{1x}&x_{1y}&1 \end{bmatrix}E\begin{bmatrix} x_{0x}\\x_{0y}\\1 \end{bmatrix}=0$$}
片側の画像上での位置(例えば{$x_0$})が決まると,式(1)から直線の方程式が得られます.この直線がエピポーラ線を表します.{{small:なお,{$x_0$}と{$x_1$}はカメラの正規化画像座標での位置としています.}}
**F列(基礎行列:Fundamental Matrix)
エピポーラ幾何の拘束をデジタル画像座標で表現するときに用いる3行3列の行列です.F行列について説明する上で,まず,{$x_0$}と{$x_1$}に対応する,デジタル画像座標での位置を{$p_0$},{$p_1$},カメラのパラメータを{$K_0$},{$K_1$}と置きます.すると,2つの位置について,デジタル画像座標と正規化画像座標の関係は次の式で表現できます.
{$p_0 = K_0 x_0$}
{$p_1 = K_0 x_1$}
この式を使って,式(1)を変形すると,
{$$({K_1}^{-1}p_1)^{\mathrm{T}}E({K_0}^{-1}p_0)=0$$}
{$${p_1}^{\mathrm{T}}({K_1}^{-\mathrm{T}}E{K_0}^{-1})p_0=0$$}
{$${p_1}^{\mathrm{T}}Fp_0=0$$}
と表現できます.この行列Fが行列Eに代わって,デジタル画像座標の関係を表します.
*サンプルコード (C++)
ライブラリ:[link:simplesp]
サンプルコード:simplesp/sample/sp/fmat
特徴点の対応関係に基づいてF行列を推定します.また,F行列から2画像の位置姿勢を推定します.
>> ご意見・ご質問など お気軽にご連絡ください.info