投稿

ラベル(SfM)が付いた投稿を表示しています

COLMAPでキャリブレーション済みのデータを使う

イメージ
COLMAPで三次元復元を行う際に既知のカメラパラメータを利用する方法についてメモしておく。多くの場合、SfMでカメラパラメータも含めて推定することで十分だが、例えばCMUの Panoptic dataset のようにカメラキャリブレーション結果が提供されているようなものに対して、COLMAPを適用してみたい場合は提供されているカメラパラメータを利用する方が良い場合がある。実際に、Panoptic datasetでCOLMAPを実行するとマッチングが上手くいかず推定に失敗する場合が多くある。 既知のカメラパラメータを利用する方法については、COLMAPのFAQの中で回答があるので、ここにある通りにcamera.txt, images.txt, point3D.txtを準備すると良い。 Reconstruct sparse/dense model from known camera poses https://colmap.github.io/faq.html#reconstruct-sparse-dense-model-from-known-camera-poses 以下はCOLAMPで画像群を読み込み、特徴点の対応関係の取得まで終わっている(マッチング結果のデータベースhogehoge.dbがある)ことを前提としている。 camera.txtの生成 camera.txtには各カメラのカメラモデルおよびカメラ内部パラメータを記載する。フォーマットは以下の通り。 カメラID カメラモデル 解像度x 解像度y fx fy cx cy 歪パラメータ 内部パラメータの表現については利用するカメラモデルに依存するので、以下のURLを参照しながら必要に応じて使い分ける。 Camera Models https://colmap.github.io/cameras.html camera_models.h https://colmap.github.io/cameras.html image.txtの生成 image.txtには各画像に対応するカメラ外部パラメータを記載する。フォーマットは以下の通り。 画像ID qw qx qy qz tx ty tz カメラID 画像ファイル名 ここで(qw, qx, qy, qz)は3次元回転のクウォータニオン表現で(tx, ty, tz)は...

Photogrammetry (COLMAP + OpenMVS)

イメージ
 以前、Meshroomを使って複数枚の画像から三次元復元を行うPhotogrammetryを行った。 Photogrammetry:  https://moitkfm.blogspot.com/2019/08/photogrammetry.html 今回は、COLMAPとOpenMVSを使ってPhotogrammetryを行ってみる。というのも、以下の記事にあるように、カメラポーズの復元と疎な復元をCOLMAPで行い、密な復元をOpenMVSで行うという組み合わせが復元されるモデルの品質を向上させるためにはよさそうなため。これは、COLMAPはStructure-from-Motionのライブラリであり、疎な復元に特化しており、逆にOpenMVSは既知のカメラポーズを入力としたMulti-View Stereoに特化したライブラリだからだと思う。 COLMAP、OpenMVSはどちらもビルド済みの実行ファイルが公開されているので、上記のパイプラインを試すのはとても簡単。 COLMAPの実行ファイル:  https://github.com/colmap/colmap/releases OpenMVSの実行ファイル: https://github.com/cdcseacave/openMVS_sample/releases/tag/v0.7a また、COLMAPとOpenMVSを使ったパイプラインについては、以下のページにバッチファイルが公開されている。 COLMAP + OpenMVS scripts: https://peterfalkingham.com/2018/04/01/colmap-openmvs-scripts-updated/ ただし、27行目の"--export_path"となっている部分は"--output_path"と修正する必要がある。修正したスクリプトは以下の通り。12行目、15行目、18行目のCOLMAPとOpenMVSへのパス、作業ディレクトリへのパスは各自の環境に併せて修正する必要がある。 ::These parameters are specific to computer ::Store current Directory: set...

COLMAP開発環境の準備

イメージ
これまでVisualSfMを使っていたが、SfMツールのデファクトスタンダードとなりつつあるCOLMAPに乗り換えてみることにした。ちなみに、COLMAPはECCV2020で PAMI Mark Everingham Prize を受賞している。 COLMAP:  https://colmap.github.io/index.html COLMAPは比較的最近のアルゴリズムも実装されており、聞く話によるとVisualSfMよりも安定した復元が可能らしい。 COLMAPはビルド済みの実行ファイルも公開されているため、すぐに試すこともできる。 COLMAP binaries: https://github.com/colmap/colmap/releases ただ、色々とカスタマイズして利用したいので、今回はVisual StudioでCOLMAPライブラリを利用できるようにすることを目指す。 開発環境(Windows10, Visual Studio 2019)の構築手順は以下の通りとなっている。基本的には、COLMAPのDocumentにあるvcpkgを使ったインストール手順に従えば良い( https://colmap.github.io/install.html )。(vcpkgを使わずにビルドしようとしたが色々と依存関係を解決するのが難しく断念した) vcpkgのインストール git clone https://github.com/microsoft/vcpkg cd vcpkg bootstrap-vcpkg.bat vcpkg integrate install vcpkg install yasm-tool:x86-windows COLMAPのインストール vcpkg install colmap[cuda]:x64-windows COLMAPのDocumentには手順1の"vcpkg install yasm-tool:x86-windows"が無いが、自分の環境ではこれが無いとビルドエラー(Error: Building package gmp:x64-windows failed with: BUILD_FAILED)でインストールが正常に完了しなかった。また、手順2は結構時間がかかるので、完了するまで気長に待つ必要がある。...