2015年07月05日
Visual SFM で遊ぶ - Ubuntuに導入編
こんばんわ。
Structure from Motion (SfM) ってご存知でしょうか。
対象物を様々な方向から撮影して対象物の3次元形状を復元したり、
撮影したカメラの位置を導出したりできる技術です。
その実装として Visual SFM と呼ばれるソフトウェアがあります。
非常のお気軽に SfM ができるということで、
使ってみることにしました。
Windows の方は下記サイトから Windows 用の zip をダウンロードして解凍すれば実行できるそうです。
VisualSFM 公式ページ
でも、 Ubuntu だとちょっとお気軽じゃなかったので、
それについて書きます。
参考サイト: Building Visual SFM on Ubuntu 12.04 (Precise Pangolin) Desktop 64-bit
環境:
CPU : Intel Core i7 - 870 @ 2.93GHz
Memory : 8GB
GPU : GeForce GTS 450
OS : Ubuntu 15.04 MATE
CUDA v7.0 導入済み
1. 必要なパッケージ
・VisualSFM より VisualSFM_Linux_64bit.zipをダウンロード
・SiftGPU より SiftGPU-V400.zip をダウンロード
・Multicore Bundle Adjustment より pba_v1.0.5.zip をダウンロード
・CMVS-PMVS より、ソースをダウンロードするため、
$ git clone https://github.com/pmoulon/CMVS-PMVS.git
を実行
・依存しているパッケージをインストール
$ sudo apt-get install libgtk2.0-dev libglew1.6-dev libglew1.6 libdevil-dev libboost-all-dev libatlas-cpp-0.6-dev libatlas-dev imagemagick libatlas3gf-base libcminpack-dev libgfortran3 libmetis-edf-dev libparmetis-dev freeglut3-dev libgsl0-dev
2. VisualSFM をビルド
VisualSFM を解凍して make します。
$ unzip VisualSFM_linux_64bit.zip
$ cd vsfm
$ make
3. SiftGPU をビルド
CUDA が無い場合
SiftGPU を解凍してそのまま make します。
$ unzip SiftGPU-V400.zip
$ cd SiftGPU
$ make
make したら、 bin/libsiftgpu.so を、
VisualSFM の bin ディレクトリ( vsfm/bin )にコピーします。
CUDA が有る場合
SiftGPU を解凍して、まずはSiftGPU/makefileを書き換えます。
$ unzip SiftGPU-V400.zip
$ cd SiftGPU
12行目にある
siftgpu_enable_cuda = 0
となっている部分を、
siftgpu_enable_cuda = 1
にします。
また、17行目の
CUDA_INSTALL_PATH が、 CUDA をインストールしたパスになっているか確認します。
最後に、20行目の
#siftgpu_cuda_options = -arch sm_13
を、先頭の文字のコメントアウトを外して、使用しているグラボの Compute Capability に合った
引数に書き換えます。
私の環境である GTS 450 は Compute Capability が 2.1 なので、
siftgpu_cuda_options = -arch sm_21
とします。
Compute Capability は NVIDIA のページから確認できます。
書き換えたら
$ make
で make します。
make したら、 bin/libsiftgpu.so を、
VisualSFM の bin ディレクトリ( vsfm/bin )にコピーします。
4. Multicore Bundle Adjustment をビルド
SfMのコアとなる Bundle Adjustment のビルドを行います。
CUDA が無い場合
$ unzip pba_v1.0.5.zip
$ cd pba
$ make -f makefile_no_gpu
make したら、 bin/libpba.so を、
VisualSFM の bin ディレクトリ( vsfm/bin )にコピーします。
CUDA が有る場合
$ unzip pba_v1.0.5.zip
$ cd pba
$ make
make したら、 bin/libpba.so を、
VisualSFM の bin ディレクトリ( vsfm/bin )にコピーします。
5. CMVS - PMVS のビルド
密な SfM をしてくれる CMVS - PMVS をビルドします。
先ほど git clone した CMVS - PMVS に移動して、cmake して make します。
(cmake がない人は $ sudo apt-get install cmake してください)
$ cd CMVS-PMVS/program
$ cmake .
$ make
CMVS-PMVS/program/main の中にある実行ファイル
cmvs と genOption と pmvs2 をすべて
VisualSFM の bin ディレクトリ( vsfm/bin )にコピーします。
6. Visual SFM が起動するはず
vsfm/bin の中に実行ファイルとして
・VisualSFM
・cmvs
・pmvs2
・genOption
が入っており、ライブラリとして
・libpba.so
・libsiftgpu.so
が入っています。
ここにパスを通してから VisualSFMを起動します。
$ export PATH=$PATH: < path-to-vsfm > /vsfm/bin
$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH: < path-to-vsfm > /vsfm/bin
$ ./VisualSFM
これで起動できました。
Windows だったら解凍しておしまいのところ、
Ubuntu だとちょこっと大変ですね。
次回はVisual SFMで実際に遊んでみます。
Posted by CANEY at 21:02│Comments(0)
│Linux