2026.09.02

  • #お役立ちコラム

SfM処理の仕組みとは?|写真から3Dを復元する5工程

SfMは、重なりのある複数の写真から、対象の立体形状と撮影時のカメラ位置を同時に推定する処理です。写真を3D化する仕組みの中心にありますが、特徴点、三角測量、バンドル調整などの用語が続くため、処理のどこで何が決まるのか分かりにくいかもしれません。

この記事では、SfM処理の仕組みを5工程に分けて説明します。さらに、MVS・フォトグラメトリ・SLAMとの境界、写真があっても復元に失敗する条件、処理結果で確認したい項目を整理します。

執筆: bestat 編集部


SfMとは何を求める処理か

SfM(Structure from Motion)は、異なる視点から撮った2D画像を手がかりに、対象の3D構造とカメラの動きを推定する処理です。ここでいうStructureは対象上の3D点、Motionは写真ごとのカメラ位置と向きを指します。

COLMAPの公式チュートリアルは、SfMの入力を同じ対象が重なる複数画像、出力を対象の3D復元と全画像の内部・外部カメラパラメータと説明しています。内部パラメータは焦点距離や主点、レンズ歪みなどカメラ内の条件です。外部パラメータは、撮影時の位置と向きです。

SfMで最初に得られる3D形状は、画像の特徴点に対応した疎な点群です。被写体の表面を隙間なく埋めた点群やメッシュは、通常、その後のMVSなどで作ります。

もう一つ重要なのが尺度です。校正済みの単眼カメラによる画像だけでは、形とカメラ配置は相似な形まで求められても、実際の大きさは決まりません。MathWorksの解説が示すように、実寸へ合わせるには既知寸法や別センサーの情報が必要です。

SfM処理の5工程

代表的なSfM処理は、特徴点抽出、画像間対応、カメラ姿勢推定、三角測量、バンドル調整の順に理解できます。実際のソフトウェアでは、後半の工程を一度ずつ通るのではなく、新しい画像や点を加えながら繰り返します。

SfM処理で特徴点、画像対応、姿勢推定、三角測量、全体調整へ進む5工程

1. 特徴点を抽出する

最初に、各写真から別の写真でも見つけ直しやすい場所を探します。建物の角、模様の交点、細かな凹凸など、周囲と明るさや形が異なる点が候補です。

ソフトウェアは特徴点の位置だけでなく、その周辺の見え方を数値にした「記述子」も作ります。代表例のSIFTは、画像の拡大縮小や回転があっても照合しやすい特徴を作る方法です。原論文は、一定範囲の視点・照明変化やノイズに対する頑健性を示しています(Lowe, 2004)。現在の実装が使う特徴抽出法はSIFTだけではありませんが、役割は共通しています。

この段階では、点に奥行きはありません。「この写真の、この画素が目印になりそうだ」と記録した2D座標です。

2. 画像の間で同じ点を対応付ける

次に記述子を比べ、別の写真に写った同じ場所の候補を結びます。同じ物理点を複数画像にわたって追ったまとまりを、トラックと呼びます。

見た目が似ているだけでは、誤対応が混ざります。そこで、候補点が2台のカメラの幾何関係に合うかを検査します。たとえば一方の画像で点が決まると、他方の画像で対応点が現れる範囲はエピポーラ線上へ絞られます。この制約から大きく外れる組み合わせは除きます。

RANSACのような方法は、一部に誤対応があっても、多数の対応を最もよく説明する幾何モデルを探します。ただし反復模様では、誤った対応がまとまって整合してしまうこともあります。

3. カメラの位置と向きを推定する

幾何的に妥当な対応点から、写真どうしの相対的な位置と向きを求めます。最初の2枚では、一方のカメラを基準にして、もう一方がどちらへ移動し、どの方向を向いたかを推定します。

逐次型SfMでは、この2枚を初期モデルとして、既にできた3D点を多く観測する写真から追加します。追加画像の2D特徴点と既存の3D点を結び、カメラ姿勢を求める流れです。

焦点距離やレンズ歪みなどの内部パラメータは、事前の校正値を使う場合と、SfM処理の中で推定・調整する場合があります。COLMAPのFAQにも、複数画像で共有する内部パラメータを最終のバンドル調整で改善する方法が示されています。

4. 三角測量で3D点を求める

カメラ姿勢が分かると、対応する画像上の点から空間へ視線を伸ばせます。異なる視点から伸ばした視線が交わる位置を求めるのが三角測量です。

2つの視点で生じる視差から視線の交点として3D位置を求める三角測量

写真では、同じ点が画像内の異なる位置に写ります。このずれが視差です。カメラが十分に移動していれば視線の交わり方が明確になり、奥行きを求めやすくなります。反対に、同じ場所で向きだけを変えた写真では、奥行きの手がかりになる基線がほとんど生まれません。

実際の観測には画素位置の誤差があるため、視線は一点で完全には交わりません。計算では、複数の視線に最もよく合う3D位置を求めます。視点差が小さすぎる場合や、対象から極端に離れている場合は、小さな画像上のずれが奥行きの大きな不確かさになります。

5. バンドル調整で全体を整える

ここまでに求めたカメラ姿勢と3D点には、特徴点のずれや初期推定の誤差が残っています。バンドル調整は、カメラパラメータと3D点の位置を同時に少しずつ動かし、画像全体で矛盾が小さくなる組み合わせを探す処理です。

基準になるのは再投影誤差です。推定した3D点を計算上のカメラで写真へ映し戻し、その予測位置と、実際に検出された特徴点の位置とのずれを測ります。Ceres Solverの公式解説は、観測された特徴位置と投影位置の差を小さくする3D点とカメラパラメータを求める非線形最小二乗問題として説明しています。

3D点だけ、またはカメラだけを直すのではありません。多数の写真を束ねる対応関係を保ちながら両方を調整するため、「bundle adjustment」と呼ばれます。再投影誤差が小さくても、実寸や外部の座標へ合っているとは限らない点には注意が必要です。

逐次型とグローバル型の違い

SfMには、画像を順番に追加する逐次型と、画像ペアの相対姿勢から全体のカメラ姿勢をまとめて求めるグローバル型があります。どちらも特徴対応からカメラと3D構造を求めますが、全体へ広げる方法が異なります。

方式

復元の進め方

注意点

逐次型SfM

初期画像ペアから始め、画像登録・三角測量・調整を反復する

初期ペアや追加順の影響を受ける。途中でバンドル調整を繰り返す

グローバルSfM

画像ペア間の相対姿勢を集め、全カメラの姿勢をまとめて求める

誤った相対姿勢が全体へ影響するため、対応と外れ値除去が重要になる

openMVGの公式ドキュメントは両方のパイプラインを提供しています。ソフトウェアの利用者にとって大切なのは名称の優劣より、何枚の画像が登録され、モデルが分断されていないか、誤対応が残っていないかを確認することです。

MVS・フォトグラメトリ・SLAMとの違い

SfMは写真から3Dを作る一連の作業の中核ですが、全工程そのものではありません。隣接語は、目的と出力で分けると理解しやすくなります。

用語

中心となる役割

代表的な出力

SfM

画像の対応からカメラ姿勢と疎な3D構造を同時推定する

カメラパラメータ、疎な点群

MVS

推定済みのカメラ姿勢と画像から、表面の奥行きを密に求める

密な点群、深度マップ

フォトグラメトリ

写真による計測・復元の広い枠組み。撮影、標定、SfM、MVS、成果物作成を含み得る

点群、メッシュ、オルソ画像など

SLAM

移動しながら自己位置推定と地図作成を進める

現在位置、移動軌跡、地図

COLMAPも、SfMで疎な構造とカメラ姿勢を求め、その出力をMVSへ渡して密な形状を復元すると分けています。SfMの処理が不安定なら、後段のMVSで点を増やしても、カメラ姿勢のずれを根本から直せません。

フォトグラメトリは、SfMより広い言葉です。撮影方法、標定点、検証点、点群・メッシュ作成まで含む全体像は、本サイトの「フォトグラメトリとは?」で詳しく説明しています。

SLAMとSfMは、カメラの動きと周囲の構造を同時に扱う点で重なります。違いは処理の主目的です。典型的なSfMは撮影後の画像集合から精密な全体復元を行い、SLAMは移動中の自己位置を更新し続けることを重視します。SLAMの仕組みと誤差条件は、本サイトの「SLAMとは?」で詳しく説明しています。

SfM処理が失敗しやすい条件

SfMは、同じ場所を複数写真で正しく対応付け、視点差から奥行きを求められるときに成立します。失敗は、特徴点、対応、幾何、カメラモデルのどこで情報が足りないかに分けて考えます。

条件

起きやすい問題

仕組み上の理由

白い壁など模様が少ない

写真を登録できない、点ができない

繰り返し見つけられる特徴点が足りない

タイルや窓など同じ模様が続く

離れた場所を同じ点と誤認する

複数の候補が似た記述子を持つ

鏡面・透明面、水面

対応が切れる、誤った点が浮く

視点ごとに反射や透過像が変わる

ぶれ、白飛び、暗部、露出差

特徴の位置や記述が安定しない

同じ場所の見え方を再現できない

写真の重なりが途切れる

モデルが複数に分かれる

画像群を結ぶ対応トラックが作れない

同じ位置から向きだけ変える

奥行きが不安定になる

三角測量に必要な視点間の距離がない

人、車、波、動く機械

二重像や外れ点が生じる

写真間で同じ3D構造という前提が崩れる

誤った焦点距離・歪みモデル

全体が曲がる、位置が合わない

投影モデルの誤りを3D形状で吸収してしまう

COLMAPも、良好な模様、似た照明、高い画像重複、異なる撮影位置を推奨し、無地面、光沢、同じ位置での回転だけの撮影を避けるよう案内しています。写真枚数を増やすだけでは、同じ場所から撮った画像や、特徴のない面の情報は増えません。

処理前後に確認するもの

SfMの成否は、完成した点群の見た目だけでは判断できません。入力条件と処理ログを、5工程に対応させて確認します。

  • 入力画像:ぶれ、露出差、動く対象、ズーム変更がないか

  • 画像のつながり:隣接する写真が十分に重なり、撮影経路が途切れていないか

  • 登録画像:入力した写真のうち、カメラ姿勢を求められなかった画像がないか

  • 対応トラック:同じ点が複数画像で観測され、反復模様の誤対応が残っていないか

  • 疎な点群:点が対象全体へ分布し、離れた複数モデルに分断されていないか

  • 再投影誤差:一部の画像や領域だけで大きくなっていないか

  • 尺度と座標:実寸・方位・外部座標が必要なら、その基準を別に与えたか

再投影誤差は、画像上での整合性を測る指標です。小さいことは重要ですが、それだけで対象の寸法精度を保証しません。計測に使う場合は、SfM計算へ使っていない既知点や実測寸法と比べ、目的に必要な許容範囲へ入るかを別に確認します。

まとめ

  1. SfMは、複数写真からカメラ姿勢と疎な3D構造を同時に推定する処理です。 写真だけでは実寸が決まらないため、尺度が必要なら既知寸法や外部センサーの情報を加えます。

  2. 仕組みは、特徴点抽出、画像間対応、姿勢推定、三角測量、バンドル調整の連鎖です。 後段の誤差は、前段の特徴不足や誤対応から生じることがあります。

  3. SfMとMVSは役割が異なります。 SfMがカメラ姿勢と疎な構造を求め、MVSがその結果を使って密な形状を作ります。


写真から得た点群や、レーザースキャナーで取得した大容量点群を確認・計測しやすい形へ変換したい場合は、3D.Core for Point Cloudを利用できます。大容量の点群データを軽量な3Dモデルへ変換し、最短当日中に確認・計測できる形で提供します。専用ソフトのインストールや高性能PCは不要です(出典)。

3D.Core のサービス紹介資料をダウンロードできます。→ 資料ダウンロード


bestat 編集部について

bestat株式会社は、東京大学 松尾研究室発の産業用3Dデータに特化したAIスタートアップです。製造業・インフラ・土木の現場で、画像・動画・点群・360度動画など、現実空間で取得される多様なデータを高精度に3D化し、取得・生成・処理・活用までを一気通貫して支援する「3D.Core」シリーズを開発・提供しています。https://bestat-data.com/3dcore

参考文献

OTHER

その他の事例

もっとみる

もっとみる