Triangulation

カメラの姿勢と、2つ以上の視点における対応する画像点が与えられたとき、**三角測量(triangulation)**はそれらを生成した3次元点を復元する。これは、マッチングされた2次元観測をマップの幾何情報に変換するステップである。

DLT法

投影行列 PiP_i を持つカメラ ii と、観測された斉次点 pi=[ui,vi,1]T\mathbf{p}_i = [u_i, v_i, 1]^T について、投影は λipi=PiX\lambda_i \mathbf{p}_i = P_i\mathbf{X} を与える。両辺の外積を取ることで未知のスケール λi\lambda_i が消える:

pi×(PiX)=0\mathbf{p}_i \times (P_i\mathbf{X}) = \mathbf{0}

PiP_i の行を r1T,r2T,r3T\mathbf{r}_1^T, \mathbf{r}_2^T, \mathbf{r}_3^T と書くと、各視点につき2つの独立した方程式が得られる:

(uir3Tr1T)X=0,(vir3Tr2T)X=0\big(u_i\,\mathbf{r}_3^T - \mathbf{r}_1^T\big)\mathbf{X} = 0, \qquad \big(v_i\,\mathbf{r}_3^T - \mathbf{r}_2^T\big)\mathbf{X} = 0

NN 個の視点からの方程式を積み重ねると、斉次な連立方程式が得られる:

AX=0,AR2N×4A\mathbf{X} = \mathbf{0}, \qquad A \in \mathbb{R}^{2N \times 4}

最小二乗解は、AA の最小特異値に対応する右特異ベクトルである ── これはSVDの直接的な応用である。これが**Direct Linear Transform(DLT)**法である。斉次解をその第4成分で割ることでユークリッド座標の点が得られる。

中点法(Mid-point Method)

中点法は、投影レイへの距離の二乗和を最小化する3次元点を求める:

X=argminXid2(X, rayi)\mathbf{X}^* = \arg\min_{\mathbf{X}} \sum_i d^2(\mathbf{X},\ \mathrm{ray}_i)

これは閉形式の解を持ち、レイがほぼ平行な場合(例えば、DLTが条件不良になる前方への動きに近い場合)に好まれる。2視点の場合、これは2本のレイ間の最短線分を見つけ、その中点を取ることに帰着する。

ステレオの特殊な場合

ベースライン bb と焦点距離 fxf_x を持つ整列化されたステレオペアの場合、三角測量は一行の式に帰着する。深度 ZZ にある点は、2つの画像間で水平方向の視差(disparity) dd を持って現れ、

Z=bfxdZ = \frac{b\, f_x}{d}

深度は視差に反比例するため、ピクセルの一部程度の固定されたマッチング誤差は、距離とともに急速に増大する深度誤差に変換される ── これが、ステレオ(そして一般に三角測量)が遠方の点や狭いベースラインに対して劣化する理由である。

実運用システムで使われる品質チェック

よくある落とし穴

SLAMにおける意義

三角測量は、SLAMのマップが成長する仕組みである:エピポーラ幾何(またはPnP)がカメラの姿勢を提供した後、新しい特徴点マッチングはそれぞれ三角測量を通じて3次元ランドマークの候補になる。これはまた、古典的な単眼ブートストラップ手法 ── 基本行列から相対姿勢を復元し、初期マップを三角測量する ── の半分を占めており、それにまつわる品質チェック(視差、再投影誤差、正の深度)が、堅牢なシステムと脆いシステムを分けるものである。

ハンズオン

関連ノート