一.Bundler下載與安裝
1.Bundler工具包下載
(1)Bundler下載
Bundler源代碼現(xiàn)在在GitHub上托管南捂,下載地址: GitHub:bundler_sfm 璧亚,也可以在官網(wǎng)上查看相關(guān)信息:Bunlder官網(wǎng)
(2)SIFT下載
Bundler工具包需要利用SIFT進行特征提取蔼两,下載地址:SIFT
2.Bundler編譯安裝
可以參考官網(wǎng)文檔:安裝文檔,安裝過程中可能會出現(xiàn)一些問題,記錄如下:
(1)Bunlder編譯
只需要進入Bunlder根目錄并執(zhí)行make即可
cd bundler_sfm
make
編譯過程中可能會出現(xiàn)"error trying to exec 'f951': execvp: No such file or directory"
問題,解決方法:
sudo apt-get install gfortran
可能出現(xiàn)以下問題:
解決方法:
sudo apt-get install libjpeg-dev
可能出現(xiàn)以下問題:
解決方法:
sudo apt-get install libblas-dev liblapack-dev
(2)SIFT執(zhí)行文件
解壓下載的SIFT工具包,將"sift"文件拷貝到文件夾/bundler_sfm/bin
中(bundler根目錄下的bin文件夾)
安裝SIFT運行所需要的依賴包霹娄,詳細參見GitHub上的issue#36
安裝命令:
sudo apt-get install libc6-dev-i386
(3)jhead安裝
sudo apt-get install jhead
安裝完成后將jhead文件拷貝至./bin
目錄下
sudo cp /usr/bin/jhead ./bin
(4)ANN共享文件配置
依據(jù)官網(wǎng)文檔,我們需要將/libANN_char.so
加入到系統(tǒng)庫中
Finally, once Bundler is compiled, copy the approximate nearest neighbors (ANN) shared library at BASE_PATH/bin/libANN_char.so (Linux/cygwin) or BASE_PATH/bin/ann_1.1_char.dll (Windows VS2005) to a location in your LD_LIBRARY_PATH
執(zhí)行以下命令即可:
sudo cp ./lib/libANN_char.so /lib
3.測試
利用Bundler自帶的example中的圖片進行測試鲫骗,以kermit為例:
cd ./examples/kermit
../../RunBundler.sh
最終會生成很多文件犬耻。其中bundle文件夾下的bundler.out
中存儲了重建的稀疏3D坐標和相機參數(shù)。內(nèi)容的具體格式參見README.md
4.Bundle2PMVS轉(zhuǎn)換
利用Bundler得到場景的稀疏點云后可以利用PMVS進行稠密點云重建执泰,在此之前需要將Bundler的輸出轉(zhuǎn)換為CMVS-PMVS2的輸入格式枕磁。Bundler自帶了轉(zhuǎn)換工具:bin目錄下的Bundle2PMVS:
../../bin/Bundle2PMVS prepare/list.txt bundle/bundle.init.out
執(zhí)行完畢后有如下提示:
此時在bundler_sfm/examples/kermit
目錄下會生成pmvs
子目錄,將pmvs
目錄中的prep_pmvs.sh
中的BUNDLER_BIN_PATH
修改為bundler的bin文件夾的路徑术吝,例如:
BUNDLER_BIN_PATH=/home/st/app/bundler_sfm/bin
修改完成后運行:
sh pmvs/prep_pmvs.sh
得到txt计济,visualize,models目錄和bundle.rd.out, list.rd.txt, vis.dat, pmvs_options.txt等文件排苍,這些文件就可以作為PMVS的輸入了沦寂。
二.PMVS/CMVS下載與安裝
1.PMVS/CMVS下載
Bundler官網(wǎng)上提供的PMVS鏈接已經(jīng)失效,PMVS2和CMVS的官網(wǎng)地址分別為:PMVS和CMVS
下載pmvs-2-fix0.tar.gz
下載cmvs-fix2.tar.gz(243Mb)
2.PMVS/CMVS安裝
(1)PMVS安裝
安裝過程參考官方文檔:PMVS文檔
Compilation
We suggest on using the binary distribution, but if you choose to compile the source codes, try the following.
1.Make sure you have all the libraries listed above in your system.
2.Go to directory "program/main"
3.Add INCLUDE and LDLIBRARY paths to Makefile
4.make depend
5.make
編譯之前淘衙,安裝依賴庫:
sudo apt-get install libgtk2.0-dev libdevil-dev libboost-all-dev libatlas-cpp-0.6-dev libatlas-dev imagemagick libcminpack-dev libgfortran3 libmetis-edf-dev libparmetis-dev freeglut3-dev libgsl0-dev
sudo apt-get install libgsl0-dev libblas-dev libatlas-dev liblapack-dev liblapacke-dev
進入program/main
目錄传藏,在Makefile中添加YOURINCLUDEPATH
和YOURLDLIBPATH
路徑。
make depend
make
可能出現(xiàn)以下錯誤:
解決方法:
修改../base/numeric/mylapack.cc文件
Update ../base/numeric/mylapack.cc
From:
extern "C" {
#include <clapack/f2c.h>
#include <clapack/clapack.h>
};To:
extern "C" {
//#include <clapack/f2c.h>
//#include <clapack/clapack.h>
#include <lapacke.h>
};
#define integer int
修改../base/numeric/mylapack.h文件
Update ../base/numeric/mylapack.h
From:
static void lls(std::vector& A, std::vector& b, long int width, long int height);
static void lls(std::vector& A, std::vector& b, long int width, long int height);To:
static void lls(std::vector& A, std::vector& b, int width, int height);
static void lls(std::vector& A, std::vector& b, int width, int height);
注意:liblapack.so.3需要鏈接到/usr/lib/下的liblapack.so.3彤守,libblas.so.3需要鏈接到/usr/lib/下的libblas.so.3毯侦,不然編譯會警告:找不到libgfortran.so.1
修改好后再編譯,編譯好后測試:
cd program/main
./pmvs2 ../../data/hall/ option.txt
(2)CMVS安裝
安裝過程參考官方文檔:CMVS文檔
1)安裝依賴軟件和依賴庫
Bundler
PMVS2
Graclus 下載完后根據(jù)個人系統(tǒng)版本具垫,修改Makefile.in文件中的
COPTIONS
選項
COPTIONS = -DNUMBITS=32 #32位機器
COPTIONS = -DNUMBITS=64 #64位機器
修改完后在終端執(zhí)行make命令進行編譯叫惊。編譯完成后將libmetis.a
和libmultilevel.a
兩個文件放到PMVS2的Makefile文件中YOUR_LDLIB_PATH
設(shè)置的路徑下。
2)CMVS安裝
進入PMVS2目錄做修,備份Makefile文件
cd ./pmvs-2
mv program/main/Makefile program/main/Makefile.bak
將下載好的CMVS工具包解壓并將文件覆蓋PMVS的文件,然后修改Makefile文件:拷貝program/main/Makefile.bak
文件中的YOUR_INCLUDE_PATH
和 YOUR_LDLIB_PATH
抡草,設(shè)置YOUR_INCLUDE_METIS_PATH
為Graclus的目錄:
YOUR_INCLUDE_METIS_PATH = -I/home/st/app/graclus1.2/metisLib
注意前面加上"-I"饰及。另外,下載的CMVS中的Makefile文件中有幾行(10,13,16行)說明內(nèi)容需要手動注釋掉(前面加#號即可)康震。修改完Makefile文件后make即可燎含。
如果出現(xiàn)以下錯誤:
解決方法:修改../base/cmvs/bundle.cc文件
Add this to ../base/cmvs/bundle.cc
#include <numeric>
修改好后重新make,如果出現(xiàn)以下錯誤:
解決方法:修改genOption.cc文件
Add this to genOption.cc
#include <cstdlib>
修改好后重新make即可腿短。
安裝成功后將會得到pmvs2屏箍、cmvs绘梦、genOption三個二進制文件。
3.PMVS使用
以PMVS工具包自帶的data/hall為例赴魁,進入program/main目錄
默認指令:
./pmvs2 ../../data/hall/ option.txt
如果機器內(nèi)存不是很大的話卸奉,可以分兩步執(zhí)行:
./pmvs2 ../../data/hall/ option.txt-0000
./pmvs2 ../../data/hall/ option.txt-0001
如果機器內(nèi)存足夠的話,可以嘗試下面的指令獲得稠密點云:
./pmvs2 ../../data/hall/ option-highres.txt
結(jié)果將會保存在文件夾hall/models下颖御,默認指令下榄棵,將會得到三個文件:outputs.option.txt.ply
、option.txt.patch
潘拱、option.txt.pset
4.CMVS使用
參考CMVS官方文檔
5.稠密點云的可視化
利用PMVS進行稠密重建得到的outputs.option.txt.ply可以用可視化軟件MeshLab進行顯示疹鳄。
三.參考內(nèi)容
如果有其他的問題,可以訪問FAQ