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を使わずにビルドしようとしたが色々と依存関係を解決するのが難しく断念した)

  1. vcpkgのインストール
    git clone https://github.com/microsoft/vcpkg cd vcpkg bootstrap-vcpkg.bat vcpkg integrate install vcpkg install yasm-tool:x86-windows
  2. 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は結構時間がかかるので、完了するまで気長に待つ必要がある。

後は、適当にVisual Studioのプロジェクトを作成し、プロジェクトのプロパティで以下のようにvcpkgの設定がなっていれば適宜必要なライブラリなどをリンクしてくれる。

上記の手順で、実際にCOLMAPのインストールページにある以下のサンプルを実行することができた。
#include <cstdlib>
#include <iostream>

#include <colmap/util/option_manager.h>
#include <colmap/util/string.h>

int main(int argcchar** argv) {
  colmap::InitializeGlog(argv);

  std::string input_path;
  std::string output_path;

  colmap::OptionManager options;
  options.AddRequiredOption("input_path", &input_path);
  options.AddRequiredOption("output_path", &output_path);
  options.Parse(argc, argv);

  std::cout << colmap::StringPrintf("Hello %s!""COLMAP") << std::endl;

  return EXIT_SUCCESS;
}

コメント

このブログの人気の投稿

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

5点アルゴリズムによるカメラ位置・姿勢の推定

2D-3D対応からのカメラ位置・姿勢の推定