Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
1
Help us understand the problem. What is going on with this article?
@misoragod

VisualSFM

More than 1 year has passed since last update.

VisualSFMの概要

インストール

以下install-vsfm.shの内容

インストールのおおまかな流れ

  1. CUDAのインストール(オプション)
  2. 要求パッケージのインストール
  3. VisualSFMのインストール
  4. SiftGPUのインストール
  5. Multicore Bundle Adjustment(a.k.a. “pba”)のインストール
  6. PMVSのインストール
  7. Graclus1.2のダウンロードとインストール
  8. CMVSのインストール

CUDA

ここの記事のCUDAの説明がわかり易い。
https://qiita.com/Keech/items/381495ed90e012d69f1a

マシーンのCUDAを使えるGPUが搭載されていればCUDAをインストールする、
Install Nvidia CUDA if you have an CUDA capable Nvidia GPU (optional) CUDA documentation -> https://docs.nvidia.com/cuda/ Check compatibility -> https://developer.nvidia.com/cuda-gpus
Download the CUDA toolkit -> http://developer.nvidia.com/cuda/cuda-downloads

$ sudo dpkg -i cuda-repo-ubuntu1604_9.1.85-1_amd64.deb
$ sudo apt-key adv --fetch-keys 
$ http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub
$ sudo apt update
$sudo apt install cuda nvidia-cuda-dev nvidia-cuda-toolkit

Maybe add this to your ~/.bashrc

$ export PATH=/usr/local/cuda/bin:$PATH
$ export LD_LIBRARY_PATH=/usr/local/cuda/lib:$LD_LIBRARY_PATH

Install dependencies

要求パッケージのインストール

$ sudo apt install libgtk2.0-dev libglew-dev libdevil-dev libboost-all-dev libatlas-cpp-0.6-dev libatlas-dev imagemagick libatlas3-base libcminpack-dev libgfortran3 libmetis-edf-dev libparmetis-dev freeglut3-dev libgsl-dev glew-utils

Download and extract VisualSFM

ここからVisualSFMをダウンロードする。
http://ccwu.me/vsfm/index.html

$ wget http://ccwu.me/vsfm/download/VisualSFM_linux_64bit.zip
$ unzip VisualSFM_linux_64bit.zip
$ rm VisualSFM_linux_64bit.zip

Download and install SiftGPU in the appropriate directory

SiftGPUのダウンロードとインストール
https://github.com/pitzer/SiftGPU

$ cd ~/vsfm
$ wget https://github.com/pitzer/SiftGPU/archive/master.zip
$ unzip master.zip
$ rm master.zip
$ mv SiftGPU-master SiftGPU
$ cd ~/vsfm/SiftGPU
$ make
$ cp ~/vsfm/SiftGPU/bin/libsiftgpu.so ~/vsfm/bin

Download and install Multicore Bundle Adjustment (A.K.A'pba') in the appropriate directory

$ cd ~/vsfm
$ wget http://grail.cs.washington.edu/projects/mcba/pba_v1.0.5.zip
$ unzip pba_v1.0.5.zip
$ rm pba_v1.0.5.zip
$cd ~/vsfm/pba
$ make
$ cp ~/vsfm/pba/bin/libpba.so ~/vsfm/bin/

オプションと言いながらもCUDAをインストールしてないとcuda.hが無いって言われてエラーになる。

 g++ -o bin/out/pba.o src/pba/pba.cpp -I/usr/local/cuda/include -L/usr/local/cuda/lib64 -fPIC -L/usr/lib64 -L/usr/lib -L./bin -O2 -Wall -Wno-deprecated -pthread  -march=native - mfpmath=sse -fpermissive -c
 g++ -o bin/out/CuTexImage.o src/pba/CuTexImage.cpp -I/usr/local/cuda/include -L/usr/local/cuda/lib64 -fPIC -L/usr/lib64 -L/usr/lib -L./bin -O2 -Wall -Wno-deprecated - pthread  -march=native -mfpmath=sse -fpermissive -c
 src/pba/CuTexImage.cpp:29:18: fatal error: cuda.h: No such file or directory compilation terminated.
 makefile:45: recipe for target 'bin/out/CuTexImage.o' failed
 make: *** [bin/out/CuTexImage.o] Error 1

こうしないとダメ。
$ make -f makefile_no_gpu
$ cp ~/vsfm/pba/bin/libpba_no_gpu.so ~/vsfm/bin/
$ mv  ~/vsfm/bin/libpba_no_gpu.so ~/vsfm/pba/bin/libpba.so 

Try using the following commands if the make command failed
makeに失敗した場合は以下のコマンドを実行し再度make
you’ll need to edit two source code files. In “pba/src/pba”, edit “SparseBundleCU.h” and
“pba.h” by adding this one line to the top of each file:
SparseBundleCU.hとpba.hにの先頭に#include を追加する。

$ echo -e "#include <stdlib.h>\n$(cat ~/vsfm/pba/src/pba/SparseBundleCU.h)" >~/vsfm/pba/src/pba/SparseBundleCU.h
$ echo -e "#include <stdlib.h>\n$(cat ~/vsfm/pba/src/pba/pba.h)" > ~/vsfm/pba/src/pba/pba.h

参考になったページ
http://www.10flow.com/2012/08/15/building-visualsfm-on-ubuntu-12-04-precise-pangolin-desktop-64-bit/

Download, hack and install PMVS in the appropriate directory

PMVSのダウンロードとインストール
http://www.di.ens.fr/pmvs/documentation.html

$ cd ~/vsfm
$ wget http://www.di.ens.fr/pmvs/pmvs-2.tar.gz
$ tar xvzf pmvs-2.tar.gz
$ rm pmvs-2.tar.gz

$ cd ~/vsfm/pmvs-2/program/main/
$ cp ~/vsfm/pmvs-2/program/main/mylapack.o ~/vsfm/pmvs-2/program/main/mylapack.o.backup
$ make clean
$ cp ~/vsfm/pmvs-2/program/main/mylapack.o.backup ~/vsfm/pmvs-2/program/main/mylapack.o
$ make depend
$ make

Download and install Graclus1.2

Graclus1.2のダウンロードとインストール
http://www.cs.utexas.edu/users/dml/Software/graclus.html

$ cd ~/vsfm
$ wget http://www.cs.utexas.edu/users/dml/Software/graclus1.2.tar.gz
$ tar xvzf graclus1.2.tar.gz
$ rm graclus1.2.tar.gz
$ sed -i 's/COPTIONS = -DNUMBITS=32/COPTIONS = -DNUMBITS=64/' ~/vsfm/graclus1.2/Makefile.in
$ cd ~/vsfm/graclus1.2/ <----ここにcdしてmakeしないとダメ。
$ make

Download, hack and install CMVS in the appropriate directory

CMVSのダウンロードとインストール
http://www.di.ens.fr/cmvs/documentation.html

$ cd ~/vsfm
$ wget http://www.di.ens.fr/cmvs/cmvs-fix2.tar.gz
$ tar xvzf cmvs-fix2.tar.gz
$ rm cmvs-fix2.tar.gz

$ cp ~/vsfm/pmvs-2/program/main/mylapack.o ~/vsfm/cmvs/program/main/

$ echo -e "#include <vector>\n#include <numeric>\n$(cat ~/vsfm/cmvs/program/base/cmvs/bundle.cc)" > ~/vsfm/cmvs/program/base/cmvs/bundle.cc
$ echo -e "#include <stdlib.h>\n$(cat ~/vsfm/cmvs/program/main/genOption.cc)" > ~/vsfm/cmvs/program/main/genOption.cc
$ sed -e '/Your INCLUDE path*/ s/^#*/#/' -i ~/vsfm/cmvs/program/main/Makefile
$ sed -e '/Your metis directory*/ s/^#*/#/' -i ~/vsfm/cmvs/program/main/Makefile
$ sed -e '/Your LDLIBRARY path*/ s/^#*/#/' -i ~/vsfm/cmvs/program/main/Makefile

$ sed -i "s:YOUR_INCLUDE_METIS_PATH =*:YOUR_INCLUDE_METIS_PATH = -I$HOME/vsfm/graclus1.2/metisLib:" ~/vsfm/cmvs/program/main/Makefile
$ sed -i "s:YOUR_LDLIB_PATH =*:YOUR_LDLIB_PATH = -L$HOME/vsfm/graclus1.2:" ~/vsfm/cmvs/program/main/Makefile


$ cd ~/vsfm/cmvs/program/main
$ make
graclus1.2のインストールする際、~/vsfm/graclus1.2/にcdしてからmakeすれば 
multilevelとmetisのエラーは無くなる。

multilevelとmetisというライブラリが必要らしい。
g++ -c -O2 -Wall -Wno-deprecated -DNUMBITS=64 -I/home/miyamoto/vsfm/graclus1.2/metisLib -fopenmp -DNUMBITS=64 ../base/cmvs/graclus.cc
g++ -L/home/miyamoto/vsfm/graclus1.2 -lXext -lX11 -ljpeg -lm -lpthread -llapack -fopenmp -lmultilevel -lmetis -lm -o cmvs cmvs.o patch.o camera.o image.o photo.o photoSetS.o bundle.o
graclus.o -L/home/miyamoto/vsfm/graclus1.2 -lXext -lX11 -ljpeg -lm -lpthread -llapack - fopenmp -lmultilevel -lmetis -lm

/usr/bin/ld: cannot find -lmultilevel
/usr/bin/ld: cannot find -lmetis
collect2: error: ld returned 1 exit status
Makefile:49: recipe for target 'cmvs' failed
make: *** [cmvs] Error 1

$ cp ~/vsfm/cmvs/program/main/cmvs ~/vsfm/bin
$ cp ~/vsfm/cmvs/program/main/pmvs2 ~/vsfm/bin
$ cp ~/vsfm/cmvs/program/main/genOption ~/vsfm/bin


$ cd ~/vsfm
$ make

Maybe add this to your ~/.bashrc

$ export PATH=$PATH:$HOME/vsfm/bin
$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/vsfm/bin

使い方

https://qiita.com/takaaki5564/items/f6c3c8fe659c44a3e191
http://bluebirdofoz.hatenablog.com/entry/2017/11/07/022646
http://hamakun.web.fc2.com/UAV_Ortho.pdf

1
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
1
Help us understand the problem. What is going on with this article?