国交省の推進する i-Construction(http://www.mlit.go.jp/tec/i-construction/index.html )における、いわゆる ICT 土木の施策のひとつとしてドローン測量が注目されています。測量対象とする土木工事現場に GCP(Ground Control Point)と呼ばれるマーカーを置いて、上空からドローンで撮影し、その写真を SfM ツールと言われるツールで解析して 3 次元点群データを生成します。SfM(Structure for Motion)ツールとして市販の有名どころは PhotoScan や Pix4Dなどがあります。今回はオープンソースの SfM ツールのひとつである OpenMVG(https://github.com/openMVG/openMVG)を Visual Studio 2017 でビルドして、実際に写真を解析してみたいと思います。
それでは、環境作りから始めます。まず、以下のモジュールを入手してインストールしておきます。()内は私の環境にインストールしたモジュール バージョンです。また、解析に GPU を使いたい場合は、あらかじめ NVIDIA のホームページから CUDA のライブラリを取得してインストールしておきます。
● CMake(cmake-3.8.0-win64-x64.msi)
● TortoiseGit(TortoiseGit-2.4.0.2-64bit.msi)
インストールが終わったら、次に OpenMVG のソース コードなどを GitHub から取得先します。取得するフォルダーを「C:Git」とします。エクスプローラで C: を開き、[Git] フォルダーのアイコンを右クリックして [Git Clone] を実行します。開いたダイアログで URL に「https://github.com/openMVG/openMVG.git」を入力し [OK] をクリックするとクローンが始まります。
次にフォルダー「c:GitOpenMVG」をエクスプローラーで右クリックして [TortoiseGit]-[Submodule update] を実行します。 これでソース コードの取得は完了です。
次に CMake を実行して、Visual Studio 2017 のプロジェクトを自動生成します。スタート メニューから [CMake]-[CMake(cmake-gui)] を起動します。CMake の画面が起動します。
[Where is the source code:] のところに OpenMVG のソース コードが格納されているフォルダーを入力します。ここでは「C:GitOpenMVGsrc」と入力します。同様に [Where to build the binaries:] のところにビルド先として指定したフォルダーを入力します。ここでは「C:GitOpenMVGbuild」と入力します。
![]()
次に [Configure] をクリックすると、コンパイラを選択する画面が表示されるので適切な Visual Studio を選択します。ここでは Visual Studio 2017 を使うので「Visual Studio 15 2017 Win64」を選択します。Visual Studio 2015 の場合は「Visual Studio 14 2015 Win64」を選択します。 選択したら [Finish] をクリックすると Configure が開始されます。CMake 下方の画面に進捗中の状況が表示されますので、ここに「Configuration done」が表示されるのを待ちます。
ここで、GPU を使って解析をしたい場合は、一度 Configure が終わったタイミングで、下図のように BUILD_CUDA_LIB にチェックを入れて、もう一度 [Configure] をクリックして、もう一度 Configure を実行します。GPU を使わない場合は、何もせず次に進みます。
![]()
Configure が完了したら、次に [Generate] をクリックし、同様に画面に「Generation done」が表示されるのを待ちます。
![]()
これで Visual Studio でビルドする準備が整いました。
それでは、Visual Studio のプロジェクトを開いてみます。CMake の [Open Project] ボタンをクリックするか、「C:GitOpenMVGbuildopenMVG.sln」をダブルクリックして Visual Studio のプロジェクトを開きます。 初回は何千というソースの初期化が必要なため起動が完了するまでに 1 分程度かかります。
![]()
GPU を使う場合は、ビルドするモジュール毎に設定が必要です。ソリューション エクスプローラー画面の [OpenMVG]-[software]-[openMVG_main_ComputeFeatures] を右クリックして、[ ビルドの依存関係 ]-[ ビルドのカスタマイズ ] を選択します。 ビルドのカスタマイズ画面が表示されるので CUDA にチェックを入れます。同様に、[openMVG_main_ComputeMatches]、[openMVG_main_IncrementalSfM]、[openMVG_main_ComputeSfM_DataColor] も設定します。
![]()
あとは、通常の Visual Studio プロジェクトと同様にビルドをすれば OK です。[ ビルド ]-[ ソリューションのビルド ] で全体をビルドします。ビルドにはかなり時間がかかります。環境によっては 30 分程度かかる場合もあります。
![]()
それでは、今回はここまでとさせていただき、次回は、ビルドしたモジュールを使って実際に 3 次元点群データを生成する手順を説明したいと思います。 |