文章目录
-
- 文章说明
- 参考来源
- 名词解释
-
- 1. 什么是 Bundler
- 2. 什么是 PMVS
- 3. 什么是 CMVS
- 关系说明
- Bundler 配置
-
- 配置方法
-
- 通过 Makefile 配置步骤
- 通过 VS 配置步骤
- Bundler 的输出转为 CMVS-PMVS 的输入
- CMVS-PMVS 生成稠密点云
-
- 1. 下载 CMVS-PMVS 并解压
- 2. 下载 Meshlab 并安装
- 资源打包下载
文章说明
本文是在前人的基础上,发现若干问题后予以纠正而重写的博文。
操作系统: windows 10 ( x64 )
参考来源
- 小勺挖泰山:windows7下实现Bundler并通过cygwin编译运行以及pmvs、cmvs的使用(1)
- 小勺挖泰山:windows7下实现Bundler并通过cygwin编译运行以及pmvs、cmvs的使用(2)
- 小勺挖泰山: CMake+vs2010实现对CMVS-PMVS源代码的编译运行,以及实现与bundler之间的相互调用
- 小勺挖泰山: 运行Bundler前的准备之Cygwin的下载和安装
- halfwet: Bundler 在 Windows下的安装、配置和使用
- lxiaoxiaot:bundler_0.4在windows下的编译
- mengfanteng: Bundler,PMVS,CMVS的编译与使用
- 烂土豆Oliver的博客(涉及重标定):在CYGWIN下编译和运行SfM(Structure from Motion)软件Bundler
- Terumii:Bundler 及 PMVS 常见问题&解决方法
- 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 配置步骤
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:
执行完毕后,在 bundler-v0.4-source/bin 目录下生成:
- BundleVis.exe
- bundler.exe
- Bundle2PMVS,exe
- KeyMatchFull.exe
- RadialUndistort.exe
- libANN_char.dll
操作截图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:
操作截图4:
此时已经运行完 Bundler,在 result-kermit 文件夹下有 prepare 文件夹、bundle 文件夹 以及其他若干文件。在 result-kermit/bundle/bundle.init.out 文件里有重建的稀疏点3D坐标和相机参数。
操作截图5:
操作截图6:
通过 VS 配置步骤
见下篇博文
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:
完成后,在 pmvs 目录下生成以下文件夹和文件:
- models 文件夹
- txt 文件夹
- visualize 文件夹
- bundle.rd.out
- …jpg
- list.rd.txt
- pmvs_options.txt
- prep_pmvs.sh
- vis.dat
操作截图8:
CMVS-PMVS 生成稠密点云
1. 下载 CMVS-PMVS 并解压
下载链接:https://github.com/pmoulon/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:
完成后,在 /bundler-v0.4-source/pmvs/models 文件夹下会生成 option-0000.ply 文件,接下来便可以用 Meshlab 浏览该文件。
操作截图11:
2. 下载 Meshlab 并安装
下载链接:http://www.meshlab.net/
安装完成后,点击 File->Import Mesh,读入 option-0000.ply 文件即可。
操作截图12:
待上传… :)
资源打包下载
点击下载涉及到的所有文件