openMVG・openMVS覚書

IMAGES - 画像データディレクト
MATCHES - openMVG作業ディレクト
SFM - PLY等出力データディレクト
とする。全部同じディレクトリでも構わないと思うが公式ドキュメントに倣って分けた。

まず

openMVG_main_SfMInit_ImageListing -i IMAGES/ -o MATCHES/ [カメラデータ] 

MATCHESにsfm_data.jsonができる。

カメラデータの指定方法
-d センサー幅のデータベース(テキストファイル)
-f ピクセル単位の焦点距離
-k カメラの内部パラメータ

どれも指定しなければデフォルトのデータベース、自環境では
/usr/local/share/openMVG/sensor_width_camera_database.txt
が使われるが、-d で自前のデータを与えることができる。

次に

openMVG_main_ComputeFeatures -i MATCHES/sfm_data.json -o MATCHES/
openMVG_main_ComputeMatches -i MATCHES/sfm_data.json -o MATCHES/
openMVG_main_IncrementalSfM -i MATCHES/sfm_data.json -m MATCHES/ -o SFM/

SFM/にsfm_data.bin、*.plyができる。

出来上がった点群データからopenMVSで密度の高いデータを生成する。
MVS - openMVS用のディレクト
まず、sfm_data.binをopenMVSのフォーマットに変換し

openMVG_main_openMVG2openMVS -i SFM/sfm_data.bin -d MVS/ -o MVS/scene.mvs

openMVSで密なデータを生成する。

DensifyPointCloud MVS/scene.mvs 

MVS/にscene_dense.mvsとscene_dense.plyができる。
更に密度が欲しければ

ReconstructMesh MVS/scene_dense.mvs
RefineMesh MVS/scene_dense_mesh.mvs

なんかスッキリしない、整理の余地大。