Ubuntu16.04安装bundler+PMVS

一.Bundler下载与安装

1.Bundler工具包下载

(1)Bundler下载

Bundler源代码现在在GitHub上托管,下载地址: GitHub:bundler_sfm ,也可以在官网上查看相关信息:Bunlder官网

(2)SIFT下载

Bundler工具包需要利用SIFT进行特征提取,下载地址:SIFT

2.Bundler编译安装

可以参考官网文档:安装文档,安装过程中可能会出现一些问题,记录如下:

(1)Bunlder编译

只需要进入Bunlder根目录并执行make即可

cd bundler_sfm
make

编译过程中可能会出现"error trying to exec 'f951': execvp: No such file or directory"问题,解决方法:

sudo apt-get install gfortran

可能出现以下问题:

image

解决方法:

sudo apt-get install libjpeg-dev

可能出现以下问题:

image

解决方法:

sudo apt-get install libblas-dev liblapack-dev

(2)SIFT执行文件

解压下载的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共享文件配置

依据官网文档,我们需要将/libANN_char.so加入到系统库中

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

执行以下命令即可:

sudo cp ./lib/libANN_char.so /lib

3.测试

利用Bundler自带的example中的图片进行测试,以kermit为例:

cd ./examples/kermit
../../RunBundler.sh

最终会生成很多文件。其中bundle文件夹下的bundler.out中存储了重建的稀疏3D坐标和相机参数。内容的具体格式参见README.md

image

4.Bundle2PMVS转换

利用Bundler得到场景的稀疏点云后可以利用PMVS进行稠密点云重建,在此之前需要将Bundler的输出转换为CMVS-PMVS2的输入格式。Bundler自带了转换工具:bin目录下的Bundle2PMVS:

../../bin/Bundle2PMVS prepare/list.txt bundle/bundle.init.out

执行完毕后有如下提示:

image

此时在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官网上提供的PMVS链接已经失效,PMVS2和CMVS的官网地址分别为: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中添加YOURINCLUDEPATHYOURLDLIBPATH路径。

make depend
make

可能出现以下错误:

image

解决方法:

修改../base/numeric/mylapack.cc文件

Update ../base/numeric/mylapack.cc
From:
extern "C" {
#include
#include
};

To:
extern "C" {
//#include
//#include
#include
};
#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

image

修改好后再编译,编译好后测试:

cd program/main
./pmvs2 ../../data/hall/ option.txt

(2)CMVS安装

安装过程参考官方文档:CMVS文档

1)安装依赖软件和依赖库

  • Bundler

  • PMVS2

  • Graclus 下载完后根据个人系统版本,修改Makefile.in文件中的COPTIONS选项

COPTIONS = -DNUMBITS=32     #32位机器
COPTIONS = -DNUMBITS=64     #64位机器

修改完后在终端执行make命令进行编译。编译完成后将libmetis.alibmultilevel.a两个文件放到PMVS2的Makefile文件中YOUR_LDLIB_PATH设置的路径下。

2)CMVS安装

进入PMVS2目录,备份Makefile文件

cd ./pmvs-2
mv program/main/Makefile program/main/Makefile.bak

将下载好的CMVS工具包解压并将文件覆盖PMVS的文件,然后修改Makefile文件:拷贝program/main/Makefile.bak文件中的YOUR_INCLUDE_PATHYOUR_LDLIB_PATH,设置YOUR_INCLUDE_METIS_PATH为Graclus的目录:

YOUR_INCLUDE_METIS_PATH = -I/home/st/app/graclus1.2/metisLib

注意前面加上"-I"。另外,下载的CMVS中的Makefile文件中有几行(10,13,16行)说明内容需要手动注释掉(前面加#号即可)。修改完Makefile文件后make即可。

如果出现以下错误:

image

解决方法:修改../base/cmvs/bundle.cc文件

Add this to ../base/cmvs/bundle.cc
#include

修改好后重新make,如果出现以下错误:

image

解决方法:修改genOption.cc文件

Add this to genOption.cc
#include

修改好后重新make即可。

安装成功后将会得到pmvs2、cmvs、genOption三个二进制文件。

3.PMVS使用

以PMVS工具包自带的data/hall为例,进入program/main目录

默认指令:

./pmvs2 ../../data/hall/ option.txt

如果机器内存不是很大的话,可以分两步执行:

./pmvs2 ../../data/hall/ option.txt-0000
./pmvs2 ../../data/hall/ option.txt-0001

如果机器内存足够的话,可以尝试下面的指令获得稠密点云:

./pmvs2 ../../data/hall/ option-highres.txt

结果将会保存在文件夹hall/models下,默认指令下,将会得到三个文件:outputs.option.txt.plyoption.txt.patchoption.txt.pset

4.CMVS使用

参考CMVS官方文档

5.稠密点云的可视化

利用PMVS进行稠密重建得到的outputs.option.txt.ply可以用可视化软件MeshLab进行显示。

三.参考内容

  • Ubuntu 16.04下安装Bunlder和PMVS(CMVS)

  • 如果有其他的问题,可以访问FAQ

你可能感兴趣的:(Ubuntu16.04安装bundler+PMVS)