Structure from Motion(SFM) を試すために、最初openMVGやopenMVSを入れて試行錯誤していたけれど、「VisualSFM」を使えば複数の写真から簡単に3Dモデルを作ることができました。
環境構築方法を記録しておきます。
構築した環境は、MacbookAir、VirtualBox上のLinux Mint17.3です。
VisualSFMインストール
- リンク先に記載のある必要なパッケージをインストール。バージョンは V0.5.26 。
上記のページ通りやればほぼ構築できますが、依存パッケージの中で存在しないものはバージョン番号を抜いて、apt-cache search
の後に名前を入れて検索して、すべての依存パッケージをインストールします。
また、Multicore Bundle Adjustmentのビルドにおいて、CUDAがない場合のビルドを実行すると記載とは違うファイル名のライブラリが作成されるので、ファイル名をlibpba.so
にリネームしてください。
また、PATHを通してコマンドラインからVisualSFMを立ち上げないと、解析中にライブラリがないと怒られました。
VisualSFMによるplyファイル作成
2. VisualSFMが起動できたら、[FIle] - [Open+ Multi Images]を選択して対象の写真を選びます。写真は同じ部分を含む異なる角度から撮影された写真です。
3. GPU使用の場合は、[Enable GPU] - [Match using CUDA]を選択します。
4. 4方向の矢印ボタン[Compute Missing Match]をクリックすると、特徴点の抽出とマッチングが開始されます。CUDAなしだとSIFTの計算に時間がかかる模様。サイズ1.5MB/1枚程度の画像10枚で1分程度でした。
5. 横のボタン[Compute 3D Reconstruction]をクリック。
6. 処理が終わったら、その3つ横の[Run Dense Reconstruction]をクリック。[View] - [Dense 3D Points]にチェックを入れると画面が以下のように切り替わります。
写真から構成した立体ボブ人形。特徴点のないところはスカスカになっています。
7. 処理後にできたファイルの中で、
modelsフォルダの中のoption-0000.ply(Polygon Model File)が作成されています。これをMeshLabというソフトにてメッシュ再構成していきます。
MeshLabのインストール
8. こちらのページからMeshLabのソースをダウンロードしてビルド。
9. メッシュ再構成の方法はこちらのページを参考にしました。
設定値の理解が甘いのでうまくメッシュ再構成ができないので、調査して追記予定。