Bundler,PMVS,CMVS的编译与使用

(转载请注明来自Sk8er的博客专栏) Bundler是Noah Snavely博士写的Structure from Motion的工具包。它能够通过对某个场景不同角度的多张图片生成稀疏点的三维信息,并且估计每一幅图片的相机参数(内参和外参)。Bundler属于SFM的范畴。 PMVS和CMVS(CMVS是PMVS的改进版,里面包含PMVS)是Yasutaka Furukama博士写的已知一组图片和图片对应的相机参数生成dense reconstruction (稠密的三维模型)。 那么结合SFM和Dense Reconstruction,我们就可以生成自己需要的三维模型了。上面两个工具包的配置说简单也简单说麻烦也麻烦。这里结合我看到别人的配置方法做的补充和说明(我的参考里面丢失了很多细节)。如果按照我的步骤一步步走下去,一定可以配置成功。注意我是基于Windows7+Cygwin64完成的(我参看的配置方法:)。

Bundler的配置:

(output_path),才成功的。), 安装时选择全部安装, 大约要用掉16G硬盘空间.(2) 下载并解压Bundler源码bundler-v0.4-source.tar.gz(下载地址:), 假设Bundler的安装位置在/bundler(3) 编译Bundler

fprintf(f_scr, "mv pmvs/%s.rd.jpg %s/visualize/%08d.jpg\n", 修改为fprintf(f_scr, "mv %s.jpg %s/visualize/%08d.jpg\n"。原因后面第(6)步大家会知道。

$ cd /bundler$ make(在编译到BundlerApp.h文件第620行, 出现错误: 不能直接调用构造函数’SkeletalApp::BundlerApp’)该头文件在/bundler/src目录中, 注释掉该行, 继续make, 可以通过编译此次make共生成bundler.exe, Bundle2PMVS,exe, BundleVis.exe, KeyMatchFull.exe, RadialUndistort.exe, libANN_char.dll, 都放置在/bundler/bin目录下。(4) 下载SIFT(下载地址:~lowe/keypoints/siftDemoV4.zip), 解压后将其中的siftWin32.exe拷贝到/bundler/bin, 这个siftWin32.exe会被Bundler调用作为特征点探测器。(5) 运行Bundler Bundler里面有两个examples,里面存放了若干不同视角的图片,我们使用其中的一个example ET。$ cd /bundler$ mkdir result(创建一个放置运行结果的目录)$ cd result$ ./RunBundler.sh examples/ET(注: ../examples/ET指明用于进行多视角重建的图像所在目录)此时已经运行完Bundler, 在./bundle/bundle.out文件里有重建的稀疏点3D坐标和相机参数, 具体说明参见/bundler/readme.txt。这样/bundler会生成两个文件夹/bundle和/prepare。(6) 将Bundler的输出转换为CMVS-PMVS2的输入(此步骤可选, 如果还要使用Dr. Furukawa的PMVS2软件进行稠密重建的话) Bundler会生成一个Bundle2PMVS.exe用于将Bundler生成的结果转化成CMVS要求的输入。注意这里的操作一定是在bundler的根目录下面。否则后面生成的目录文件会有错$ ./bin/Bundle2PMVS.exe prepare/list.txt bundle/bundle.out(7) 完成最后的转换$ ./pmvs/prep_pmvs.sh 在pmvs目下生成txt, visualize, models目录和bundle.rd.out, list.rd.txt, vis.dat, pmvs_options.txt文件, 这些都是PMVS2的输入。pmvs子目录的文件如下图:

(6)-(7)的截图:

CMVS-PMVS的配置:

Yasutaka Furukama网站上提供的CMVS是基于Linux上的比较。好在有个人将它转成了可以在Windows下运行的文件,见。(1) 下载CMVS-PMVS并解压缩。发现里面有一个binariesWin-Linux文件夹,,里面有配置好的基于Linux,Win32,和Win64的可执行程序(多么的人性化呀)。(2) 进入/Win64-vs2010文件夹,建一个文件夹叫ET。将上面配置好的文件夹/pmvs考到这个ET里面。下面执行3行命令行就可以生成我们最后想要得到的稠密网格模型啦(坚持就是胜利)。可以参考/Win64-vs2010里面的Readme.txt。>cmvs.exe ET/pmvs/maximage[=100] CPU[=4]>genOption.exe ET/pmvs/ >pmvs2.exe ET/pmvs/ option-0000(注意地址后面要加/)这样,我们发现/pmvs/models/文件夹多了几个文件,其中*.ply文件为3D模型文件用下面的软件可以查看。

稠密网格的显示: 强烈建议使用MeshLab:,GUI做的很好。非常方便使用。(1) 创建一个新的New Empty Project。(2) File->InputMesh,进入/ET/pmvs/models(没有忘记这个文件夹怎么来的吧?),读入里面的模型文件就大功告成啦!发一张结果图:由这几张图片

生成

的这一半更多地赢取上帝掌握的那一半。

Bundler,PMVS,CMVS的编译与使用

相关文章:

你感兴趣的文章:

标签云: