Bundler->CMVS-PMVS的配置和使用

转载:http://www.voidcn.com/article/p-mrgfbhyl-bpv.html


 文章说明

本文是在前人的基础上,发现若干问题后予以纠正而重写的博文。

操作系统: windows 10 ( x64 )

· 参考来源

  1. 小勺挖泰山:windows7下实现Bundler并通过cygwin编译运行以及pmvs、cmvs的使用(1)
  2. 小勺挖泰山:windows7下实现Bundler并通过cygwin编译运行以及pmvs、cmvs的使用(2)
  3. 小勺挖泰山: CMake+vs2010实现对CMVS-PMVS源代码的编译运行,以及实现与bundler之间的相互调用
  4. 小勺挖泰山: 运行Bundler前的准备之Cygwin的下载和安装
  5. halfwet: Bundler 在 Windows下的安装、配置和使用
  6. lxiaoxiaot:bundler_0.4在windows下的编译
  7. mengfanteng: Bundler,PMVS,CMVS的编译与使用
  8. 烂土豆Oliver的博客(涉及重标定):在CYGWIN下编译和运行SfM(Structure from Motion)软件Bundler
  9. Terumii:Bundler 及 PMVS 常见问题&解决方法
  10. Terumii:Bundler及PMVS的配置与使用(简易版)

· 名词解释

1. 什么是 Bundler ?

— Bundler是一个采用C和C++开发的称为sfm(struct-from-motion)的系统,它能够利用无序的图片集合重建出3D的模型。

— Bundler 的输入是一些图像、图像特征以及图像匹配信息

— Bundler 的输出则是一个根据这些图像反应的场景的3D重建模型,伴有少量识别得到的相机以及场景几何信息

— 系统借用一个由Lourakis 和Argyros提供的称为 SBA(Sparse Bundle Adjustment)的开发包的进行修改。

2. 什么是 PMVS?

— PMVS(patch-based multi-view stereo) 是 Yasutaka Furukama 博士写的已知由一组图片和图片对应的相机参数生成 dense reconstruction (稠密的三维模型)的算法。

3. 什么是 CMVS?

— CMVS(Clustering Views for Multi-view Stereo) 是 PMVS 的改进版,里面包含PMVS


· 关系说明

Bundler 构建的是稀疏点云,CMVS-PMVS 构建的是稠密点云


· Bundler 配置

配置方法:

1. 通过 Makefile 
2. 通过 VS

注意:前者易编译,但操作麻烦,且不能修改源码;后者能够修改源码,便于研究。

通过 Makefile 配置步骤:

通过 VS 配置见下篇博客 …

    1. 下载 CYGWIN 并安装,安装时不用全部安装,安装以下六项即可(目的:准备 Make 工具)

  • Devel
  • Perl
  • Python
  • Graphics
  • GSL(通过 search 搜索,搜索到后点击使其成为 install 状态)
  • Vim(通过 search 搜索,搜索到后点击使其成为 install 状态)

    2. 下载 bundler-v0.4-source 并解压(目的:准备 Bundler 工具包)

        我的安装位置:C:\Users\dell\Desktop\bundler-v0.4-source

    3. 编译 bundler-v0.4-source (目的:编译执行)

注意1:安装前打开 bundler-v0.4-source\src\Bundle2PMVS.cpp ,将 217 行的

fprintf(f_scr, "mv pmvs/%s.rd.jpg %s/visualize/%08d.jpg\n"

改为:

fprintf(f_scr, "mv %s.jpg %s/visualize/%08d.jpg\n"

注意2:安装前打开 bundler-v0.4-source\src\BundlerApp.h. ,将 620行的该行注释掉:

// SkeletalApp::BundlerApp;

打开下载好的 cygwin ,然后执行以下操作:

cd /bundler-v0.4-source(cd后有空格) 
make(开始编译)

操作截图1: 
操作截图1

执行完毕后,在 bundler-v0.4-source/bin 目录下生成:

  1. BundleVis.exe
  2. bundler.exe
  3. Bundle2PMVS,exe
  4. KeyMatchFull.exe
  5. RadialUndistort.exe
  6. libANN_char.dll

操作截图2: 
操作截图2

    4. 下载 siftDemoV4 .zip并解压(目的:准备 SIFT 特征检测)

解压后将其中的siftWin32.exe拷贝到/bundler/bin,这个siftWin32.exe 会被 Bundler 调用作为特征点探测器。

    5. 运行 Bundler (目的:生成稀疏点云)

注意:Bundler里面有两个examples, ET 和 kermit ,我们以 kermit 为模版操作。

cd /bundler-v0.4-source 
mkdir result-kermit 
cd result-kermit 
../RunBundler.sh ../examples/kermit(.sh 后有空格,前后都是..,两个.)


注意:以下操作都在 result-kermit 下操作!!!


操作截图3: 
操作截图3

操作截图4: 
操作截图4

此时已经运行完 Bundler,在 result-kermit 文件夹下有 prepare 文件夹bundle 文件夹 以及其他若干文件。在 result-kermit/bundle/bundle.init.out 文件里有重建的稀疏点3D坐标和相机参数。

操作截图5: 
操作截图5

操作截图6: 
操作截图6


· Bundler 的输出转 CMVS-PMVS 的输入

依旧是在 result-kermit 目录下:

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

此时在 /bundler-v0.4-source/result-kermit 下 生成 pmvs 文件夹,然后这里需要进行一步修改,修改 /bundler-v0.4-source/result-kermit/pmvs/prep_pmvs.sh 的 BUNDLER_BIN_PATH

BUNDLER_BIN_PATH=/cygdrive/C/Users/dell/Desktop/bundler-v0.4-source/bin(注意是反斜杠 /,=后边不能有空格)

执行以下操作:

pmvs/prep_pmvs.sh

操作截图7: 
操作截图7

完成后,在 pmvs 目录下生成以下文件夹和文件:

  • models 文件夹
  • txt 文件夹
  • visualize 文件夹
  • bundle.rd.out
  • ……jpg
  • list.rd.txt
  • pmvs_options.txt
  • prep_pmvs.sh
  • vis.dat

操作截图8: 
操作截图8


· CMVS-PMVS 生成稠密点云

    1. 下载 CMVS-PMVS 并解压。

下载完毕后,将 CMVS-PMVS-master\binariesWin-Linux\Win64-VS2010 文件夹内的东西全部拷贝至 result-ET 文件夹下,文件包括:

  • cmvs.exe
  • genOption.exe
  • msvcp100.dll
  • msvcr100.dll
  • pmvs2.exe
  • Readme.txt
  • ws2_32.dll

然后,win + R 打开运行,输入 cmd ,进入 /bundler-v0.4-source/result-kermit ,输入

cmvs ../pmvs/(cmvs 后有空格)

操作截图9: 
这里写图片描述

完成后,继续输入:

genOption pmvs/ 
pmvs2 pmvs/ option-0000(注意 option-0000前有空格)

操作截图10: 
操作截图10

完成后,在 /bundler-v0.4-source/pmvs/models 文件夹下会生成 option-0000.ply 文件,接下来便可以用 Meshlab 浏览该文件。

操作截图11: 
操作截图11

    2. 下载 Meshlab 并安装。

安装完成后,点击 File->Import Mesh,读入 option-0000.ply 文件即可。 
操作截图12: 
待上传… :)


· 资源打包下载

点击下载涉及到的所有文件




猜你喜欢

转载自blog.csdn.net/cyem1/article/details/80624092
今日推荐