観光地で同じ建物を撮った何百枚もの他人の写真をかき集めて、その建物の3次元モデルとすべての撮影位置を復元する——これがStructure from Motion(SfM、運動からの構造復元)である。撮影順序も、カメラ間の位置関係も、どのレンズを使ったかさえ事前には分からない画像の集合から、幾何学的に矛盾のない3次元点群とカメラ姿勢を同時に求める。Visual-SLAMVO/VIOがロボットやカメラの「今」の位置をリアルタイムに追うのに対し、SfMは多くの場合オフラインで、精度を優先してシーン全体を作り込む。本稿ではこの2つの違いを軸に、SfMの内部構造を土台から解説する。

0. 30秒要約

1. SfMは何を入力し、何を出力するか

入力は、撮影順序も相対位置も未知な画像集合 \{I_1,\dots,I_N\} である。各画像は異なるカメラ、異なるレンズ、異なる時刻に撮られていてもよい。出力は次の3つである。

カメラキャリブレーション入門が単一カメラの内部パラメータを固定の校正パターンから求めるのに対し、SfMは多数の未校正・半校正カメラの内部・外部パラメータとシーン構造を、対応点の幾何拘束だけから同時に求める、より大きな逆問題である。EXIFメタデータに焦点距離があれば初期値として使うが、最終的な精度は画像そのものの幾何拘束に依存する。

2. 基本パイプライン

SfMの基本パイプライン 未整列の画像集合から、特徴抽出とマッチング、幾何検証を経て、Incremental SfMまたはGlobal SfMのいずれかで姿勢と構造を復元し、最後にバンドル調整で精密化する流れを示す図。 画像集合 特徴抽出総当たり/近傍マッチング 幾何検証F/E/H + RANSAC Incremental SfM初期対 → PnPで逐次追加→ 三角測量 Global SfM回転平均化 → 並進平均化→ 全点三角測量 BundleAdjustment

前段の特徴抽出・マッチング・幾何検証は、特徴点抽出入門エピポーラ幾何入門で扱った要素技術そのものである。SfM固有の設計判断が生きるのは、画像対の関係が求まった後、どうやって全画像・全点を一つの矛盾のない座標系へまとめ上げるかという段階であり、これがIncremental SfMとGlobal SfMという2つの戦略に分かれる。

3. Incremental SfM:逐次的にカメラを追加する

Incremental(逐次)SfMは、視差が十分で対応点が多い初期画像対を選び、エピポーラ幾何からEssential/Fundamental Matrixを推定して最初の2視点復元を作ることから始める。以降は次を繰り返す。

  1. 既に登録済みの3D点と2D対応を持つ新しい画像を選び、PnPでその画像の姿勢を求める。
  2. 新しい画像と既存画像の対応から、まだ3D化されていない点を三角測量する。
  3. 一定枚数ごとに局所または全体のバンドル調整で姿勢と構造を精密化する。
  4. 全画像を処理し終える、または追加できる画像がなくなるまで1に戻る。

この方式はSnavelyらのPhoto Tourism(2006年)を起点に広く使われ、COLMAPの標準パイプラインもIncremental SfMを採用している。逐次的に少数の未知数だけを増やしていくため実装が頑健で、悪い画像対を検出・除外しやすい利点がある。一方、姿勢を1枚ずつ積み上げる性質上、初期の小さな誤差が後続の画像へ伝播し、大きなループ(同じ場所を再び撮影した画像群)を含むデータセットではドリフトが蓄積しやすい。定期的なバンドル調整と、ループ閉合に相当する再訪問検出が、この蓄積誤差を抑える鍵になる。

4. Global SfM:全ペアの関係を一括で解く

Global(大域)SfMは、逐次登録をせず、まず全ての(あるいは選別された)画像ペアについて相対姿勢 (R_{ij},\mathbf{t}_{ij}/\|\mathbf{t}_{ij}\|) を求めておく。その後、次の2段階でグラフ全体を一括推定する。

回転平均化(rotation averaging)は、ペアワイズな相対回転 R_{ij} の集合から、大域的に矛盾の少ないカメラ回転 \{R_i\} を求める。誤差の指標として、リー群 SO(3) 上の対数写像を使った

\min_{\{R_i\}}\sum_{(i,j)\in\mathcal E}\rho\left(\left\|\mathrm{Log}\left(R_{ij}^\mathsf{T}R_i^\mathsf{T}R_j\right)\right\|^2\right)

のような最適化がよく使われる。\rho はロバスト損失で、外れ値となる誤った相対姿勢の影響を抑える。

並進平均化(translation averaging)は、回転が定まった後、相対並進方向 \mathbf{t}_{ij} の集合からカメラ位置 \{\mathbf{t}_i\} を求める。単眼の相対並進は方向しか分からない(エピポーラ幾何入門のスケール不定性を参照)ため、多数のペアの方向拘束から矛盾のない配置を解く必要があり、外れ値除去を含む1DSfMのような手法が提案されている。

Global SfMは全画像の情報を同時に使うため、Incremental SfMのような逐次的なドリフトが原理的に起きにくく、計算も並列化しやすい。ただし、個々の相対姿勢に外れ値が混ざると、平均化の段階でそれを検出・排除できなければ大域解全体が歪む。Moulonらの研究(ICCV 2013)は、頑健な回転平均化と、trifocal tensorを用いた並進方向推定を組み合わせ、Global SfMの実用性を大きく高めた代表例である。

観点 Incremental SfM Global SfM
復元の進め方 初期対から1枚ずつ逐次追加 全ペア関係を先に求め一括最適化
ドリフトへの耐性 逐次伝播しやすく蓄積誤差が出る 全体最適のため蓄積誤差が出にくい
外れ値への耐性 画像追加時に個別検出・除去しやすい 平均化前の外れ値除去が精度を左右する
計算コスト 画像数に対し逐次的、大規模で重くなりやすい 並列化しやすいが平均化の大域最適化が必要
実装の難しさ 実装例が豊富で頑健性のチューニングがしやすい 回転・並進平均化の理論と実装の難度が高い
代表例 Bundler、COLMAP(既定)、VisualSFM openMVG(Global SfMパイプライン)、Theia

実務では、両者を完全な二択にせず、Global SfMで大まかな大域姿勢を作ってからIncremental的に精密化する、あるいは信頼度の高いペアだけをGlobalに使い、残りをIncrementalに追加するハイブリッド構成も研究されている。

5. 三角測量とtrack管理

姿勢が求まった画像の組から、対応点を三角測量して3D点を得る処理そのものは、2視点幾何の基本操作の延長にある。SfM特有の課題は、同じ物理点が3枚以上の画像で観測されたとき、それらの対応を「track」としてどう管理するかである。

6. Bundle Adjustmentへの橋渡し

線形な三角測量や逐次的なPnPで得られる姿勢・構造は、あくまで初期値である。全画像の再投影誤差を同時に最小化する

\min_{\{K_i,R_i,\mathbf{t}_i,\mathbf{X}_j\}} \sum_{(i,j)\in\mathcal{O}}\rho\left(\left\|\pi\left(K_i(R_i\mathbf{X}_j+\mathbf{t}_i)\right)-\mathbf{u}_{ij}\right\|^2\right)

というバンドル調整(Bundle Adjustment)が、SfMの最終的な精度を決める。この最適化がなぜ疎行列の構造を持つのか、Schur補行列を使ってなぜ大規模でも解けるのかという計算上の核心は、バンドル調整基礎入門で扱う。ここで押さえておきたいのは、Incremental SfMでは画像を数枚追加するごとに局所バンドル調整を挟み、Global SfMでは大域姿勢が出そろった後に全体バンドル調整を一度行う、という使われ方の違いである。

7. Visual-SLAMとの違いと共通点

SfMとVisual-SLAMは、特徴マッチング、エピポーラ幾何、PnP、バンドル調整という同じ数学的道具を共有する。違いは目的と制約にある。

観点 Structure from Motion Visual-SLAM
処理形態 多くはオフラインバッチ処理 オンライン・リアルタイム逐次処理
入力の順序性 未整列でよい(順不同、複数カメラ混在も可) 時系列に連続したフレームを前提
主目的 精度・完全性を優先した高品質な3D復元 現在の自己位置をリアルタイムに維持すること
最適化範囲 全画像に対するグローバルなバンドル調整が可能 キーフレームを絞った局所/大域最適化、計算予算の制約が強い
再訪問の扱い オフラインで全ペアを検証できる ループ閉合をオンラインで検出・修正する必要がある
代表実装 COLMAP、openMVG、Bundler ORB-SLAM系、VINS系

実務上、SfMで作った高精度な3D地図を、SLAMの初期地図やスケール基準として使う、あるいはSLAMのキーフレーム軌跡をオフラインSfMで後処理して精度を上げる、といった組み合わせもよく行われる。両者は競合技術ではなく、オフラインとオンラインという時間軸で補完し合う関係にある。

8. 代表的な実装

ライブラリを選ぶ際は「新しいから精度が良い」ではなく、扱う画像枚数、GPU/CPU資源、EXIF焦点距離の信頼性、マッチング方式(総当たり/シーケンシャル/語彙木)、そして最終的にMVSやテクスチャ生成まで一貫させたいかどうかで判断する。

9. 苦手な条件・失敗しやすいケース

10. 実用上の選び方

11. まとめ

Structure from Motionは、順不同の画像集合から特徴マッチングと幾何検証を経て、Incremental SfMまたはGlobal SfMという戦略でカメラ姿勢と3D構造を同時に復元する技術である。Incrementalは頑健だがドリフトしやすく、Globalはドリフトに強いが外れ値に敏感という対称的なトレードオフを持つ。どちらの戦略でも、最終的な精度はバンドル調整が担い、そのままVisual-SLAMという時間軸の異なる兄弟技術、そしてMulti-View Stereoという密な復元技術へとつながっていく。

参考資料

#Structure from Motion #SfM #COLMAP #3D復元 #Bundle Adjustment #Computer Vision