以前に紹介したOpenMVGと同様、COLMAPもSfMというアルゴリズムを用いて写真画像から三次元点群データを生成するツールです。このCOLMAPはバイナリ提供されているのですが、GitHubにソースコードも公開されています。今日はこのCOLMAPをVisual Studio 2017を用いてWindows 10 64bit用モジュールのビルドに挑戦してみたいと思います。
COLMAPのビルド方法はここを参考にしました。
COLMAPのビルドに入る前にCGALをインストールしておく必要があります。 ここを参考にCGALをインストールしていきます。
まず、Qt5をインストールします。ここからダウンロードします。私の場合は qt-opensource-windows-x86-5.12.1.exe をダウンロードして実行しました。注意すべき画面だけを説明しますので、それ以外の画面は省略します。
私は特に何も入力せず[Skip]をクリックしました。
Qt5のインストール先ディレクトリを指定します。私の場合は、上記のように"C:\Qt\Qt5.12.1"を指定しました。
インストールするコンポーネントを指定します。今回はVisual Studio 2017 64bitでCOLMAPをビルドしたいので、"MSVC 2017 64bit"のみを指定しました。
次に、Boostをインストールします。ここからインストーラをダウンロードします。私の場合は、boost_1_69_0-msvc-14.1-64.exe をダウンロードして実行しました。
Boostをインストールするフォルダを指定します。私の場合は、"C:\lboost\"フォルダを指定しました。インストールが終わったら下記の環境変数を設定します。
- BOOST_LIBRARYDIR=C:\lboost\lib64-msvc-14.1
- BOOST_INCLUDEDIR=C:\lboost
- PATHに "C:\lboost\lib64-msvc-14.1" を追加
そして、CGALのインストールです。ここからCGALのインストーラをダウンロードします。私の場合は、CGAL-4.13-Setup.exe をダウンロードして実行しました。
特に設定は変えずにそのまま[Next]をクリックしました。
64bitを選択します。
インストール先フォルダを指定します。私はデフォルトのまま"C:\dev\CGAL-4.13" を指定しました。
インストール中に上記のようなエラーが出た場合は、手動で環境変数PATHに "C:\dev\CGAL-4.13\auxiliary\gmp\lib" を追加してください。
インストールが終わったらCMake-guiを起動します。source code に "C:\dev\CGAL-4.13"、build 先に "C:\dev\CGAL-4.13\build" を指定して、[configure]をクリックします。
generatorに"Visual Studio 15 2017 Win64"を選択します。
上記のように無事に「Configuration done」と表示されたら、次に[generate]をクリックします。
上記のように無事に「Generating done」と表示されたら[open project]をクリックします。しばらくするとVisual Studio 2017が起動します。デフォルトで選択されている"ALL_BUILD"をビルドするので、特に何も設定を変えずにメニューから[ビルド]-[ソリューションのビルド]を実行して、ビルドを開始します。念のため「Debug」と「Release」の両方でビルドをします。
エラーもなく無事にビルドが終了すれば、環境変数PATHに "C:\dev\CGAL-4.13\build\bin" を追加します。
以上でCGALのインストールは完了です。それでは、ようやく、ここからCOLMAPのビルドに入ります。まず、事前準備が3点あります。
- CMakeの実行ファイルにパスが通っていることを確認します。通っていない場合は、環境変数PATHにCMakeの実行ファイルへのパスを追加します。デフォルトでは"C:\Program Files\CMake\bin"になっています。CMakeをインストールする際、推奨ではパスを通さない方なので、パスの追加は必要な場合が多いと思います。
- Pythonをインストールしておいてください。PythonスクリプトでCMakeを実行するためです。私の場合はAnaconda(https://www.anaconda.com/distribution/)をインストールすることでPythonを導入しています。
- ビルド中もインターネットに接続した状態にしておいてください。PythonスクリプトでCMakeを実行中にEigenなどのダウンロードと展開が実行されます。
実際のビルド作業に入ります。まず、COLMAPのGit(https://colmap.github.io/install.html)からC:\Git にクローンします。
Pythonを実行するためにAnaconda Promptを起動して、カレントディレクトリを C:\Git\colmapに移動します。
そして、Anaconda Promptにて以下コマンドを実行すると、CMake実行が始まります。--cuda_path にはCUDA Toolkitのインストール先ディレクトリを指定します。最新のものでなければVisual Studio 2017に対応していない可能性があるので注意してください。
python .\scripts/python/build.py --build_path "C:/Git/colmap/build" --colmap_path "C:/Git/colmap" --boost_path "C:/lboost/lib64-msvc-14.1" --qt_path "C:/Qt/Qt5.12.1/5.12.1/msvc2017_64" --cuda_path "C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v10.1" --cgal_path "C:/dev/CGAL-4.13/build" --cmake_generator "Visual Studio 15 2017 Win64"
実行には30分程度かかりました。
以上でやっとCMakeが完了です。無事にエラーも無く終わることを祈ります。
Visual Studioのソリューションファイルは "C:\Git\colmap\build\colmap\__build__\COLMAP.sln"に生成されていますので、ダブルクリックしてVisual Studioを開きます。デフォルトで選択されている"ALL_BUILD"のままでReleaseビルドを選択します。[ビルド]-[ソリューションのビルド]を実行します。エラーが発生せずビルドが完了したら、ソリューションウィンドウで"INSTALL"を選択し、右クリックで[ビルド]を実行します。
"C:\Git\colmap\build\__install__\COLMAP.bat" をテキストエディタで開きます。以下の修正を行い上書き保存します。
変更前: set PATH=%SCRIPT_PATH%\lib;%PATH%
変更後: set PATH=%SCRIPT_PATH%\lib;%SCRIPT_PATH%\lib64\lapack_blas_windows;%PATH%
新たにコマンドプロンプトを起動して、カレントディレクトリを "C:\Git\colmap\build\__install__" に移動します。そこで "COLMAP.bat" を実行すればCOLMAPが起動します。
以上でCOLMAPのビルドは完了です。