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的官网地址分别为:PMVSCMVS

下载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 <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

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 <numeric>

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

image

解决方法:修改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

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

./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进行显示。

三.参考内容

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,907评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,987评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,298评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,586评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,633评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,488评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,275评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,176评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,619评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,819评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,932评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,655评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,265评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,871评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,994评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,095评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,884评论 2 354

推荐阅读更多精彩内容

  • 版权所有,转载请注明出处 一. 简介 Bundler和PMVS(CMVS)是进行三维重构中非常有用的一套工具包,B...
    mac在路上阅读 6,969评论 0 6
  • 小程序 1 创建项目 我们需要通过开发者工具,来完成小程序创建和代码编辑。 开发者工具安装完成后,打开并使用微信扫...
    zhangyu_2943阅读 248评论 0 0
  • 键盘控制方向 1.主光源删掉,新建一个Plane,一个Cube,一个Point Light,Point Light...
    唯一的one阅读 290评论 0 0
  • 与艾玛交流后,任申在心中做出了数个推论,并逐一确认。虽然艾玛也不清楚【主神】的情况,任申总觉得那应该是某类外星人,...
    ginsan阅读 404评论 0 2
  • 昨天晚上七点左右,天色渐暗但还没有完全黑下来,我一个人站在在街边等同事,她开车去了,街上很多店铺都关门了,但还是人...
    诸里夫人阅读 371评论 0 0