写真から3Dモデルを作製する (3): VisualSFMのコンパイルの詳細
コンパイルの際に参考にしたサイト、
これを見ればバッチリコンパイルできるのだが、ま、英語だし、折角なので、軽くまとめておく。
はじめる前に
使用するOSは、Ubuntu 64bit。パッケージは無いので、自分でコンパイルしなければならない。ソースコードを編集しなければならない場所もある。コンパイルにHDD容量を2GB程度使うことになる。
下準備
ホームに、vsfmというディレクトリをつくり、全てそこで作業する。作業後もそこから直接実行することになる。
ライブラリなどのダウンロード
- VisualSFM: ダウンロード先 (VisualSFM_linux_64bit.zip, 4.9 MB)とインストール方法
- SiftGPU: ダウンロード先 (SiftGPU-V382.zip, 5.3 MB)とインストール方法
- Multicore Bundle Adjustment: ホームページとダウンロード先 (pba_v1.0.4.zip, 1021 KB)
- PMVS-2: ダウンロード先 (pmvs-2.tar.gz, 315 MB)とインストール方法
- CMVS: ダウンロード先 (cmvs-fix2.tar.gz, 232 MB)とインストール方法
- Graclus 1.2: ホームページでメールアドレスを入力して送付してもらう
コンパイルに必要なライブラリ、ツールなど
前もってインストールしておく。
$ 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
VisualSFMのコンパイル
こいつのコンパイルは定石どおり。
$ cd ~/vsfm $ unzip /tmp/VisualSFM_linux_64bit.zip $ cd vsfm $ make
SiftGPUのコンパイル
コンパイルして、~/vsfm/vsfm以下にコピーしておく。
$ cd ~/vsfm $ unzip /tmp/SiftGPU-V382.zip $ cd SiftGPU $ make $ cp bin/libsiftgpu.so ../vsfm/bin
Multicore Bundle Adjustment (libpba)のコンパイル
ちょいと面倒くさい。zipファイルを解いて、ソースファイルの先頭に次の一行を追加する。
#include
編集するファイルは、“SparseBundleCU.h”と“pba.h”。編集したら、GPU無しでコンパイルする。
$ make -f makefile_no_gpu $ cp bin/libpba_no_gpu.so ../vsfm/bin/libpba.so
PMVS-2のコンパイル、ちょいとワザあり
PMVS-2の64-bit Linux用バイナリがあるにはあるんだが、動かない。多分こんなエラーが出る。
./pmvs2: error while loading shared libraries: libjpeg.so.62: cannot open shared object file: No such file or directory
元々やや古いRed Hat上でコンパイルされたもので、オブジェクトを見つけられないのだ。かと言って、いちからmakeし直すことも出来ない。lapackのライブラリが含まれており、ややこしいのだ。そこで、lapackのライブラリはコンパイルし直さずに、残りをコンパイルする。以下の様に、mylapack.oを取り置きしておいてからmakeし直す。
$ cd ~/vsfm $ tar xvfz pmvs-2.tar.gz $ cd pmvs-2/program/main/ $ cp mylapack.o mylapack.o.backup $ make clean $ cp mylapack.o.backup mylapack.o $ make depend $ make
CMVSのコンパイル、ちょいとワザあり
ややこしいぞ。先ずはCMVSを展開する。そして、そこに先ほどのPMVS-2からmylapack.oを持ってくる。
$ cd ~/vsfm $ tar xf /tmp/cmvs-fix2.tar.gz $ cp pmvs-2/program/main/mylapack.o cmvs/program/main/
CMVSのソースファイル“cmvs/program/base/cmvs/bundle.cc”の先頭に次の二行を追加する。
#include#include
“cmvs/program/main/genOption.cc”の先頭に次の行を追加する。
#include
CMVSのMakefile (cmvs/program/main/Makefile)の10行から17行を次の様に編集する。もちろん、ユーザ名の部分は適宜置き換える。
#Your INCLUDE path (e.g., -I/usr/include) YOUR_INCLUDE_PATH = #Your metis directory (contains header files under graclus1.2/metisLib/) YOUR_INCLUDE_METIS_PATH = -I/home/username/vsfm/graclus1.2/metisLib #Your LDLIBRARY path (e.g., -L/usr/lib) YOUR_LDLIB_PATH = -L/home/username/vsfm/graclus1.2
コンパイルして、出来上がったバイナリをVisualSFMのディレクトリへコピーする。
$ cd ~/vsfm/cmvs/program/main $ make $ cp cmvs ~/vsfm/vsfm/bin $ cp pmvs2 ~/vsfm/vsfm/bin $ cp genOption ~/vsfm/vsfm/bin
パスの設定、起動
最後にパスを設定して起動する。
export PATH=$PATH:/home/username/vsfm/vsfm/bin export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/username/vsfm/vsfm/bin
ターミナルから起動できる。
$ VisualSFM&