colmapの基本トピック
colmapの概要
colmap
は3次元再構成(3D Reconstruction)にあたって用いられる手法であるSfM(Structure-from-Motion)やMVS(Multi-View Stereo)について取り扱ったソフトウェアです。
colmap
では基本的に上記のようなSfM(Structure-from-Motion)の流れに沿って3次元再構成が行われます。
colmapのインストール
colmap
のインストールは上記に基づいて行うことができます。
colmapを用いた3次元再構成
ディレクトリ構成
まず、colmap
のディレクトリ構成は下記のようになることを抑えておくと良いです。
/path/to/project/ex1/
+── images
│ +── image1.jpg
│ +── image2.jpg
│ +── ...
+── sparse
│ +── 0
│ │ +── cameras.bin
│ │ +── images.bin
│ │ +── points3D.bin
│ +── ...
+── dense
│ +── 0
│ │ +── images
│ │ +── sparse
│ │ +── stereo
│ │ +── fused.ply
│ │ +── meshed-poisson.ply
│ │ +── meshed-delaunay.ply
│ +── ...
+── database.db
実行する事例毎にディレクトリを作成し、その直下にiamges
、sparse
、dense
を作成、images
に用いる画像群を保存する点だけ抑えておけば十分だと思います。
処理の実行
下記を実行することで特徴点抽出からメッシュ化までの3D再構成の一連の流れを実行することができます。
$ colmap feature_extractor --database_path database.db --image_path images
$ colmap exhaustive_matcher --database_path database.db
$ colmap mapper --database_path database.db --image_path images --output_path sparse
$ colmap image_undistorter --image_path images --input_path sparse/0 --output_path dense
$ colmap patch_match_stereo --workspace_path dense --workspace_format COLMAP --PatchMatchStereo.geom_consistency true
$ colmap stereo_fusion --workspace_path dense --workspace_format COLMAP --input_type geometric --output_path dense/fused.ply
$ colmap poisson_mesher --input_path dense/fused.ply --output_path dense/meshed-poisson.ply
colmap patch_match_stereo...
の処理がCUDAを用いて1時間〜数時間ほどかかる点に注意が必要です。上記で得られた出力のdense/meshed-poisson.ply
は下記のようなコードを実行することで可視化することが可能です。
import open3d as o3d
filepath = 'dense/meshed-poisson.ply'
mesh = o3d.io.read_triangle_mesh(filepath)
o3d.visualization.draw_geometries([mesh])