1. Bundler简介
Bundler是一个采用C和C++开发的称为sfm(struct-from-motion)的系统,它能够利用无序的图片集合(例如来自网络的图片)重建出3D的模型。最早的版本被用在Photo Tourism的项目上。项目的官方网站在此:http://phototour.cs.washington.edu/。
Bundler的输入是一些图像、图像特征以及图像匹配信息,输出则是一个根据这些图像反应的场景的3D重建模型,伴有少量识别得到的相机以及场景几何信息。系统借用一个由Lourakis 和Argyros提供的称为Sparse Bundle Adjustment的开发包的修改版,一点一点递增地重建出图像场景。Bundler已经成功的应用在许多网络相册系统,尤其是一些建筑相册里。
Bundler 的源代码可以在这里下载:http://phototour.cs.washington.edu/bundler/。其最新的版本为bundler-v0.4-source.zip。
2. Bundler的编译
下载到Bundler的源代码之后,我们首先要对其进行编译。在bundler-v0.4-source\vc++\文件夹下有Visual Studio2005创建的工程Bundler.sln,当然我们也可以使用更高的版本进行编译。
在编译过程中,我们会遇到以下问题,解决方法转自:http://blog.csdn.net/lxiaoxiaot/article/details/6721247。
在编译f2c时,会给出无法找到#include"sysdep1.h"文件的错误。进入f2c的目录,将sysdep1.h0文件名修改为sysdep1.h即可。
同时将signal1.h0文件名修改为signal1.h。再次编译f2c库时,会提示无法找到#include"arith.h"文件的错误,同时在f2c目录下并没有名字为arith.h的文件,这时可以新建一个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