SFM (Structure from Motion) は、コンピューター ビジョンおよびコンピューター グラフィックスの分野のテクノロジーで、一連の画像から 3 次元シーンの構造とカメラの動きの情報を復元するために使用されます。SFM は、3D モデルの作成、シーンの再構築、ナビゲーション、姿勢推定などのアプリケーションに一般的に使用されます。
SFM の一般的なワークフローと主な手順は次のとおりです。
-
特徴の抽出とマッチング:
- まず、通常は SIFT、SURF、ORB などの特徴検出器を使用して、一連の入力画像から特徴点が抽出されます。
- 次に、これらの特徴点が照合されて、さまざまな画像内での対応関係が決定されます。
-
カメラの位置決めと姿勢推定:
- 通常、最初にカメラの位置と姿勢を推定する必要があります。これは、2 つの画像間の特徴点マッチングによって実現できます。
- 十分な一致点があれば、RANSAC などの方法を使用してカメラの位置と姿勢を推定できます。
-
3D 点群再構築:
- 特徴点を照合することにより、三角測量技術を使用して 3 次元点の位置を推定できます。
- このプロセスを繰り返すことで、シーン内のオブジェクトを表す 3 次元の点群が徐々に構築されます。
-
キーフレームの選択:
- いくつかのキーフレームを参照フレームとして選択します。通常は、シーン内で明らかなカメラの動きやユニークな視点を持つキーフレームです。
- キーフレーム以外の場合は、カメラの姿勢推定を使用して位置を計算できます。
-
マップの最適化:
- バンドル調整などの方法により、カメラ パラメーターと 3 次元点の位置がグローバルに最適化され、誤差が軽減されます。
- これは、再構成の精度と一貫性を向上させるのに役立ちます。
-
高密度再構成(オプション):
- 疎な 3D 点群を取得したら、ステレオ マッチング、構造センサーなどの高密度再構成アルゴリズムを使用して、より高密度の点群または深度マップを生成できます。
-
テクスチャマッピングとレンダリング:
- 視覚的な 3D 再構築結果を生成する必要がある場合は、テクスチャを 3D モデルにマッピングしてレンダリングできます。
-
応用分野:
- SFM の最終結果は、仮想現実、拡張現実、地図作成、自律ナビゲーション、物体認識などのさまざまなアプリケーション分野で使用できます。
SFM は複雑な分野であり、特定のアルゴリズムと実装はアプリケーションのシナリオと要件に応じて異なる場合があります。同時に、最新の SFM システムは通常、SLAM (Simultaneous Localization and Mapping) テクノロジーを組み合わせて、カメラの位置を推定し、リアルタイムでマップを構築します。OpenMVG、COLMAP、OpenCV などのさまざまなオープン ソース ライブラリとツールは、SFM および SLAM 用のツールとアルゴリズムを提供します。
OpenMVG (Open Multiple View Geometry) と COLMAP (Structure-from-Motion and Multi-View Stereo Computer Vision Toolkit) は、どちらも画像処理、3D 再構成、およびコンピューター ビジョン研究のためのオープン ソース ツールです。どちらも Structure from Motion (SfM) タスクと Multi-View Stereo (MVS) タスクに重点を置いていますが、いくつかの点で異なります。以下にそれらについて簡単に紹介します。
OpenMVG(オープンマルチビュージオメトリ):
-
特徴:
- OpenMVG は、研究開発用のオープンソース SfM/MVS ライブラリです。
- 画像処理、特徴抽出、特徴マッチング、3D 再構築、およびカメラ姿勢推定のためのツールのセットを提供します。
- 画像の位置合わせ、特徴のマッチング、3D 再構成、点群の生成など、さまざまなマルチビュー ジオメトリ (MVG) タスクをサポートします。
-
言語:
- OpenMVG は主に C++ で書かれていますが、Python インターフェイスも利用できます。
-
アプリケーション:
- OpenMVG は研究開発で一般的に使用されており、3D モデルの構築、シーンの再構築、マルチビュー タスクに使用できます。
- SfM と MVS だけでなく、マルチビュー タスクにおける他のコンピューター ビジョンの問題もサポートします。
-
視覚化ツール:
- OpenMVG はいくつかの視覚化ツールを提供しますが、比較的少数です。
COLMAP (Structure-from-Motion およびマルチビュー ステレオ コンピューター ビジョン ツールキット):
-
特徴:
- COLMAP は、実用的なアプリケーションと研究向けに設計された機能豊富な SfM/MVS パッケージです。
- SfM、MVS、画像検索、3D 再構築機能を含む一連のツールを提供します。
- COLMAP には、高密度 3D 再構築とカメラ キャリブレーションの機能も含まれています。
-
言語:
- COLMAP は主に C++ で書かれていますが、Python インターフェイスと GUI ツールも提供します。
-
アプリケーション:
- COLMAP は、3D モデリング、地図構築、仮想現実、拡張現実などの学術研究や実用的なアプリケーションで広く使用されています。
- さまざまなスキルレベルのユーザーに適したユーザーフレンドリーな GUI インターフェイスを備えています。
-
視覚化ツール:
- COLMAP は、再構成結果、点群、カメラの軌跡を表示するための強力な視覚化ツールを提供します。
OpenMVG または COLMAP のどちらを使用するかは、ニーズとスキル レベルによって異なります。フル機能を備えた使いやすいツールが必要な場合は、COLMAP が適しています。SfM/MVS プロセスをさらにカスタマイズして制御したい研究者には、OpenMVG の方が適しているかもしれません。どのツールを選択する場合でも、特定のプロジェクトの要件と複雑さに基づいて決定できます。