当前位置:首页 > Windows程序 > 正文

【转】win7 64位配置bundler

2021-05-24 Windows程序

一。什么是Bundler

Bundler是一个采用C和C++开发的称为SfM(struct-from-motion)的系统,实现了根据用户提供的无序的图像序列,生成稀疏的三维点云模型。它能够利用无序的图片集合(例如来自网络的图片)重建出3D的模型。最早的版本被用在Photo Tourism的项目上。

Photo Tourism系统可以交互式浏览和探索大型非结构化场景照片集合。系统有一个基于图像的建模前端,它会自动计算每一张照片的角度,以及稀疏模型对应的场景和形象的三维模型。

技术分享

图1.Photo Tourism

Bundler的输入是一些图像、图像特征以及图像匹配信息,输出则是一个根据这些图像反应的场景的3D重建模型,伴有少量识别得到的相机以及场景几何信息。系统借用一个由Lourakis 和Argyros提供的称为Sparse Bundle Adjustment的开发包的修改版,一点一点递增地重建出图像场景。Bundler已经成功的应用在许多网络相册系统,尤其是一些建筑相册里。

二。过程如下:

1.访问 ~snavely/bundler/ 下载bundler-v0.4-source.zip并解压。

2.在windows平台下,使用visual studio2010打开bundler-v0.4-source目录下的vc++目录中的工程文件:Bundler.sln;

然后按顺序逐个编译bundler所需的依赖库,

有:5point、ann_1.1_char、cblas、getopt、imagelib、jpeg、matrix、sba-1.5、sfm-driver、f2c、clapack、cminpack等。

编译f2c时,会给出无法找到#include "sysdep1.h"文件的错误 以及会提示无法找到#include "arith.h"文件的错误。

解决方法:进入f2c的目录,

1>将sysdep1.h0文件名修改为sysdep1.h;

2>将signal1.h0文件名修改为signal1.h;

3>新建一个arith.h文件,在文件里添加如下内容即可:

#define IEEE_8087
#define Arith_Kind_ASL 1
#define Long int
#define Intcast (int)(long)
#define Double_Align
#define X64_bit_pointers
#define QNaN0 0x0
#define QNaN1 0xfff80000

这时,编译f2c,便成功了。

接下来编译keyMatchFull和Bundler项目,一切顺利。:-)

为了进行获得稠密的三围重建效果,利用Bundler提供的Bundle2PMVS和RadialUndistort工具,生成稠密重建PMVS软件所需的参数。

编译Bundlr2PMVS时,在Bundle2PMVS.cpp文件中会出现“未知的标识符mkdir”的错误。

解决方法

1>在文件的开头添加#include <direct.h>,

2>将mkdir替换为_mkdir,如下所示:

//mkdir(output_path, 0770);

_mkdir(output_path);

至此,Bundle2PMVS编译成功。

编译RadialUndistort时,在RadialUndistort.cpp文件中会出现“无法识别的标识符index” 以及 无法打开jpeglib.h。

解决方法:1>修改代码如下所示:

//char *space = index(buf, ‘ ‘);
//if (space) *space = 0;

std::string str(buf);
int space_pos = str.find(‘ ‘);
str.at(space_pos) = 0;

files.push_back(str);

2>修改LoadJPEG.cpp的头文件为#inlcude "jpeglib.h",然后添加jpeglib.h的路径如下:

技术分享

至此,RadialUndistort编译成功。

3.在成功执行Bundler前,我们需要做几步准备工作:

(1)将需要的文件复制到指定目录

Bundler生成完成后,需要将bundler-v0.4-source\vc++\Debug\目录下的Bundler.exe、Bundle2PMVS.exe、KeyMatchFull.exe、RadialUndistort.exe、jpeg.dll、ann_1.1_char.dll文件统统考到bundler-v0.4-source\bin\目录下。

(2)下载和安装Cygwin

Cygwin是许多自由软件的集合,最初由Cygnus Solutions开发,用于在各种版本的Microsoft Windows上运行UNIX类系统。由于Bundler默认是通过在Unix环境下执行shell脚本来启动Bundler的,因为在Windows环境下需要安装Cygwin以执行shell脚本。

Cygwin的下载地址:

Cygwin的安装过程:

技术分享

图10.选择下一步

技术分享

图11.选择Install from Internet

技术分享

图12.选择下载目录

技术分享

图13.选择连接方式 Use Internet Explorer Proxy Settings

技术分享

图14.这里弹出的警告一定要选择“确定”

技术分享

图15.选择需要的安装包

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/70447.html