Epipolar Geometry
Epipolar Geometry は、二つの camera view の間に成り立つ幾何学的制約です。Feature matching、pose estimation、triangulation、SfM、SLAM の基礎になります。
Epipolar constraint
一つの 3D point が二つの camera view に投影され、それぞれの image point を と とします。このとき、二つの点は fundamental matrix によって次の constraint を満たします。
これは、片方の image の点 が、もう片方の image 上では epipolar line の上に対応点を持つことを意味します。
Fundamental matrix
Fundamental matrix は、uncalibrated camera の二 view geometry を表します。Camera intrinsics が未知でも、対応点の集合から推定できます。
実用上は、RANSAC と 8-point algorithm などを組み合わせて、outlier を除きながら を推定します。
Essential matrix
Camera intrinsics が既知である場合、normalized coordinate 上では essential matrix を使います。
Essential matrix は relative pose、つまり rotation と translation direction によって次のように書けます。
を分解することで、二つの view 間の relative camera pose を推定できます。ただし、translation の scale は単眼画像だけでは決まりません。
なぜ重要か
Epipolar Geometry によって、次のような処理が可能になります。
- Matching の outlier 除去
- Relative pose estimation
- Triangulation の前処理
- Stereo rectification
- SfM / SLAM の初期化
関連ページ
主なソース
- OpenCV Epipolar Geometry tutorial: https://docs.opencv.org/4.x/da/de9/tutorial_py_epipolar_geometry.html
- Szeliski, “Computer Vision: Algorithms and Applications”: https://szeliski.org/Book/