Triangulation
カメラの姿勢と、2つ以上の視点における対応する画像点が与えられたとき、**三角測量(triangulation)**はそれらを生成した3次元点を復元する。これは、マッチングされた2次元観測をマップの幾何情報に変換するステップである。
DLT法
投影行列 を持つカメラ と、観測された斉次点 について、投影は を与える。両辺の外積を取ることで未知のスケール が消える:
の行を と書くと、各視点につき2つの独立した方程式が得られる:
個の視点からの方程式を積み重ねると、斉次な連立方程式が得られる:
最小二乗解は、 の最小特異値に対応する右特異ベクトルである ── これはSVDの直接的な応用である。これが**Direct Linear Transform(DLT)**法である。斉次解をその第4成分で割ることでユークリッド座標の点が得られる。
中点法(Mid-point Method)
中点法は、投影レイへの距離の二乗和を最小化する3次元点を求める:
これは閉形式の解を持ち、レイがほぼ平行な場合(例えば、DLTが条件不良になる前方への動きに近い場合)に好まれる。2視点の場合、これは2本のレイ間の最短線分を見つけ、その中点を取ることに帰着する。
ステレオの特殊な場合
ベースライン と焦点距離 を持つ整列化されたステレオペアの場合、三角測量は一行の式に帰着する。深度 にある点は、2つの画像間で水平方向の視差(disparity) を持って現れ、
深度は視差に反比例するため、ピクセルの一部程度の固定されたマッチング誤差は、距離とともに急速に増大する深度誤差に変換される ── これが、ステレオ(そして一般に三角測量)が遠方の点や狭いベースラインに対して劣化する理由である。
実運用システムで使われる品質チェック
- 視差角(parallax angle):2つの視線間の角度。広いベースラインは条件のよい交点を与える一方、視差がわずかであると深度の不確実性が非常に大きい点が生まれる。SLAMシステムは、新しいマップ点を受け入れる前にこの角度をチェックする。
- 正の深度(カイラリティ):三角測量された点は両方のカメラの前方に位置しなければならない。負の深度は、マッチングまたは姿勢仮説が誤っていることを意味する。
- 再投影誤差:三角測量された点を各視点に再投影し、測定値と比較する。残差が閾値を超えた場合は棄却する。
- 線形法(DLT、中点法)は初期推定を与える。精度が重要なパイプラインでは、再投影誤差を最小化することでその点を精密化する ── これがバンドル調整がすべての点と姿勢に対して共同で行うことである。
よくある落とし穴
- すべてを三角測量してしまう:視差の低い点を保持すると、深度が実質的に制約されていないランドマークがマップを汚染し、後の最適化を不安定にする。
- 座標の慣例を混同する:DLTは、ワールドを画像に写す一貫した投影行列 を前提とする。カメラからワールドへの姿勢を渡すと、表面的には妥当に見えるが実際にはでたらめな結果が生じる。
- DLTの代数的誤差を信頼しすぎる:DLTは幾何的な量ではなく代数的な量を最小化する。精度のためには、その後に再投影誤差による精密化を行うこと。
SLAMにおける意義
三角測量は、SLAMのマップが成長する仕組みである:エピポーラ幾何(またはPnP)がカメラの姿勢を提供した後、新しい特徴点マッチングはそれぞれ三角測量を通じて3次元ランドマークの候補になる。これはまた、古典的な単眼ブートストラップ手法 ── 基本行列から相対姿勢を復元し、初期マップを三角測量する ── の半分を占めており、それにまつわる品質チェック(視差、再投影誤差、正の深度)が、堅牢なシステムと脆いシステムを分けるものである。