📷
colmapとpycolmapのCLI/API比較表
COLMAPのコマンドラインインターフェース(CLI)とPyCOLMAPのPython APIの機能を整理します。
最新の情報は、各OSSの公式ページを参照してください。
📊 COLMAP CLI と PyCOLMAP API の機能比較表
| 機能カテゴリ | 小機能カテゴリ | COLMAP CLI コマンド | PyCOLMAP API 関数・クラス pycolmap.xxx |
|---|---|---|---|
| 特徴抽出とマッチング | 特徴抽出 | feature_extractor |
extract_features() |
| 特徴マッチング |
exhaustive_matchersequential_matcherspatial_matchervocab_tree_matcher
|
match_exhaustive()match_sequential()match_spatial()match_vocabulary_tree()
|
|
| スパース再構成(SfM) | インクリメンタル再構成 |
mapperhierarchical_mapper
|
incremental_mapping() |
| 三角測量 | point_triangulator |
point_triangulator() |
|
| バンドル調整 |
bundle_adjusterrig_bundle_adjuster
|
BundleAdjuster クラス |
|
| デンス再構成(MVS) | 画像の歪み補正 | image_undistorter |
undistort_images() |
| パッチマッチステレオ | patch_match_stereo |
patch_match_stereo() |
|
| ステレオフュージョン | stereo_fusion |
stereo_fusion() |
|
| メッシュ生成 |
poisson_mesherdelaunay_mesher
|
対応なし | |
| モデルの操作と変換 | モデルの整列 |
model_alignermodel_orientation_aligner
|
align_reconstruction_to_locations()align_reconstructions_via_points()
|
| モデルの変換・統合 |
model_convertermodel_merger
|
対応なし | |
| モデルの解析 | model_analyzer |
compare_reconstructions() |
|
| ポーズ推定と最適化 | ポーズ推定 | 対応なし |
estimate_absolute_pose()refine_absolute_pose()estimate_and_refine_absolute_pose()
|
| データベースと画像の管理 | データベース操作 |
database_creatorimage_deleter
|
Database クラス |
| 画像の整流処理 | image_rectifier |
対応なし | |
| 画像の登録 | image_registrator |
対応なし | |
| 合成データセット生成 | 合成データセット生成 | 対応なし | synthesize_dataset() |
| GUIの提供 | GUIの起動 | gui |
対応なし |
🧩 小機能カテゴリの説明
-
特徴抽出:
- 画像から特徴点(通常はSIFT)を抽出し、データベースに保存します。
-
特徴マッチング:
- 抽出された特徴点を用いて、画像間の対応関係を確立します。手法には全探索、連続、空間的、ボキャブラリツリーを用いたマッチングがあります。
-
インクリメンタル再構成:
- 特徴マッチング結果を基に、画像を逐次追加しながらスパースな3Dモデルを構築します。
-
三角測量:
- 既存のカメラポーズとマッチング結果から、3D点の位置を計算します。
-
バンドル調整:
- カメラパラメータと3D点の位置を同時に最適化し、再構成精度を向上させます。
-
画像の歪み補正:
- カメラのレンズ歪みを補正し、デンス再構成の前処理を行います。
-
パッチマッチステレオ:
- 複数の画像間で視差マップを計算し、デンスな3D情報を取得します。
-
ステレオフュージョン:
- 複数の視差マップを統合し、デンスな点群を生成します。
-
メッシュ生成:
- デンスな点群からメッシュモデルを生成します。Poisson法やDelaunay法が用いられます。
-
モデルの整列:
- 再構成されたモデルを外部座標系や他のモデルと整列させます。
-
モデルの変換・統合:
- 再構成モデルのフォーマット変換や、複数モデルの統合を行います。
-
モデルの解析:
- 再構成モデルの統計情報や品質を解析します。
-
ポーズ推定:
- 2D-3D対応点からカメラの位置と向きを推定します。
-
データベース操作:
- COLMAPのSQLiteデータベースの作成や画像の追加・削除を行います。
-
画像の整流処理:
- ステレオマッチングのために画像を整流(リファイン)します。
-
画像の登録:
- 新しい画像を既存の再構成モデルに追加します。
-
合成データセット生成:
- シミュレーション用の合成画像データセットを生成します。
-
GUIの起動:
- COLMAPのグラフィカルユーザーインターフェースを起動します。
📚 出典情報
- COLMAP CLI ドキュメント: https://colmap.github.io/cli.html
- PyCOLMAP API ドキュメント: https://colmap.github.io/pycolmap/index.html
colmapのhierarchical_mapperとmapperのパラメータ
| パラメータ | hierarchical_mapper 既定値 | mapper 既定値 | 備考 |
|---|---|---|---|
| 共通 (トップレベル) | |||
| --random_seed | 0 | 0 | 乱数シード |
| --log_to_stderr | 0 | 0 | 標準エラーへのログ出力 |
| --log_level | 2 | 2 | glog レベル |
| --project_path | (なし) | (なし) | プロジェクトルート |
| --database_path | (なし) | (なし) | COLMAP DB ファイル |
| --image_path | (なし) | (なし) | 画像ディレクトリ |
| --output_path | (なし) | (なし) | 出力 (モデル) 保存先 |
| トップレベル : 片方にのみ存在 | |||
| --num_workers | -1 | ― | 階層的マッピング各ノードの並列ワーカー数 |
| --image_overlap | 50 | ― | 隣接クラスタ間で共有する画像数 (%) |
| --leaf_max_num_images | 500 | ― | 末端クラスタ 1 つ当たりの最大画像枚数 |
| --input_path | ― | (なし) | 既存モデルを入力して継続マッピング |
| --image_list_path | ― | (なし) | マッピング対象画像リスト |
| Mapper. オプション (両者共通)* | |||
| Mapper.min_num_matches | 15 | 15 | 画像ペア登録に必要な最小マッチ数 |
| Mapper.ignore_watermarks | 0 | 0 | ウォーターマーク除外 |
| Mapper.multiple_models | 1 | 1 | 複数モデル生成を許可 |
| Mapper.max_num_models | 50 | 50 | 生成モデル数上限 |
| Mapper.max_model_overlap | 20 | 20 | モデル間で共有可能な画像上限 |
| Mapper.min_model_size | 10 | 10 | 有効モデルとする最小画像枚数 |
| Mapper.init_image_id1 / 2 | -1 / -1 | -1 / -1 | 初期画像 ID を固定する場合に指定 |
| Mapper.init_num_trials | 200 | 200 | 初期ペア探索試行回数 |
| Mapper.extract_colors | 1 | 1 | 点群色推定を行う |
| Mapper.num_threads | -1 | -1 | スレッド数 (-1 は自動) |
| Mapper.min_focal_length_ratio | 0.1 | 0.1 | 最小 f / image_size |
| Mapper.max_focal_length_ratio | 10 | 10 | 最大 f / image_size |
| Mapper.max_extra_param | 1 | 1 | 歪みパラメータ最大数 |
| Mapper.ba_refine_focal_length | 1 | 1 | BA で f を最適化 |
| Mapper.ba_refine_principal_point | 0 | 0 | BA で主点を最適化 |
| Mapper.ba_refine_extra_params | 1 | 1 | BA で歪みも最適化 |
| Mapper.ba_min_num_residuals_for_multi_threading | 50000 | 50000 | BA を並列化する閾値 |
| Mapper.ba_local_num_images | 6 | 6 | ローカル BA の画像窓幅 |
| Mapper.ba_local_function_tolerance | 0 | 0 | ローカル BA 収束閾値 |
| Mapper.ba_local_max_num_iterations | 25 | 25 | ローカル BA 最大反復 |
| Mapper.ba_global_use_pba | 0 | 0 | PBA を用いてグローバル BA |
| Mapper.ba_global_pba_gpu_index | -1 | -1 | PBA 使用 GPU (-1 で自動) |
| Mapper.ba_global_images_ratio | 1.1 | 1.1 | グローバル BA 画像増加閾値 |
| Mapper.ba_global_points_ratio | 1.1 | 1.1 | グローバル BA 点増加閾値 |
| Mapper.ba_global_images_freq | 500 | 500 | 画像増加頻度 (step) |
| Mapper.ba_global_points_freq | 250000 | 250000 | 点群増加頻度 |
| Mapper.ba_global_function_tolerance | 0 | 0 | グローバル BA 収束閾値 |
| Mapper.ba_global_max_num_iterations | 50 | 50 | グローバル BA 最大反復 |
| Mapper.ba_global_max_refinements | 5 | 5 | グローバル BA 最大再最適化回数 |
| Mapper.ba_global_max_refinement_change | 0.0005 | 0.0005 | BA 再最適化終了閾値 |
| Mapper.ba_local_max_refinements | 2 | 2 | ローカル BA 最大再最適化回数 |
| Mapper.ba_local_max_refinement_change | 0.001 | 0.001 | ローカル BA 再最適化終了閾値 |
| Mapper.snapshot_path | (なし) | (なし) | 途中スナップショット保存先 |
| Mapper.snapshot_images_freq | 0 | 0 | スナップショット間隔 |
| Mapper.fix_existing_images | 0 | 0 | 既存画像パラメータ固定 |
| Mapper.init_min_num_inliers | 100 | 100 | 初期ペア RANSAC インライア数 |
| Mapper.init_max_error | 4 | 4 | 初期ペア RANSAC 最大誤差 |
| Mapper.init_max_forward_motion | 0.95 | 0.95 | 進行方向比率上限 |
| Mapper.init_min_tri_angle | 16 | 16 | 三角測量最小角度 |
| Mapper.init_max_reg_trials | 2 | 2 | 初期ペア登録最大試行 |
| Mapper.abs_pose_max_error | 12 | 12 | PnP 最大 reproj 誤差 |
| Mapper.abs_pose_min_num_inliers | 30 | 30 | PnP 最小インライア |
| Mapper.abs_pose_min_inlier_ratio | 0.25 | 0.25 | PnP インライア比率 |
| Mapper.filter_max_reproj_error | 4 | 4 | outlier filter reproj 閾値 |
| Mapper.filter_min_tri_angle | 1.5 | 1.5 | outlier filter 角度閾値 |
| Mapper.max_reg_trials | 3 | 3 | 1 枚画像登録最大試行 |
| Mapper.local_ba_min_tri_angle | 6 | 6 | ローカル BA 対象点角度 |
| Mapper.tri_max_transitivity | 1 | 1 | 視線伝播最大次数 |
| Mapper.tri_create_max_angle_error | 2 | 2 | 新規点生成 max 誤差 |
| Mapper.tri_continue_max_angle_error | 2 | 2 | 追加入力 max 誤差 |
| Mapper.tri_merge_max_reproj_error | 4 | 4 | 点マージ reproj 閾値 |
| Mapper.tri_complete_max_reproj_error | 4 | 4 | 点補完 reproj 閾値 |
| Mapper.tri_complete_max_transitivity | 5 | 5 | 点補完伝播上限 |
| Mapper.tri_re_max_angle_error | 5 | 5 | 点再三角測量 max 誤差 |
| Mapper.tri_re_min_ratio | 0.2 | 0.2 | 点再三角測量最小比率 |
| Mapper.tri_re_max_trials | 1 | 1 | 点再三角測量最大試行 |
| Mapper.tri_min_angle | 1.5 | 1.5 | 有効点最小角度 |
| Mapper.tri_ignore_two_view_tracks | 1 | 1 | 2-view Track 無視 |
Discussion