在CYGWIN下编译和运行软件Bundler ,以及PMVS,CMVS的编译与使用

摘要:
它包含PMVS),这是由古冢康隆博士撰写的。使用一组已知图片和与图片对应的相机参数来生成更密集的构造(密集的3D模型)。0770)被修改为mkdir(output_path),而不是博客所说的mkdir(output/path),它使用大约16G的硬盘空间(2)下载并解压缩Bundler源代码Bundler-v0.4-source.tar.gz(下载地址:

本人按照

http://blog.csdn.net/zzzblog/article/details/17166869

http://oliver.zheng.blog.163.com/blog/static/1424115952011915113138431/这两篇文章运行,发现在我的电脑上有些地方运行不对。所以我按照我能运行的步骤重新写一下。

本人电脑是WIN8,64位操作系统。交代完毕,下面开始。(红色部分是需要特别注意的地方,以及我认为需要改进的地方,加上更多的图,方便使用)

 Bundler是Noah Snavely博士写的Structure from Motion的工具包。它能够通过对某个场景不同角度的多张图片生成稀疏点的三维信息,并且估计每一幅图片的相机参数(内参和外参)。Bundler属于SFM的范畴。
       PMVS和CMVS(CMVS是PMVS的改进版,里面包含PMVS)是Yasutaka Furukama博士写的已知一组图片和图片对应的相机参数生成dense reconstruction (稠密的三维模型)。
        

Bundler的配置:

        Bundler的配置有两种途径:1)通过makefile;2)通过VS。这里我不建议用VS配置。因为VS配置出来的少了一个Bundle2Vis.exe。而且代码几个错误需要改,比较麻烦,如果一定想在VS下配置,请参考:http://blog.csdn.net/halfwet/article/details/6973918。但是在Bundler2PMVS中,我将//mkdir(output_path,0770)修改成mkdir(output_path)而不是博客所说的_mkdir(output_path),才成功的。
(1) 下载并安装CYGWIN(下载地址: http://cygwin.com), 安装时选择全部安装, 大约要用掉16G硬盘空间.
(2) 下载并解压Bundler源码bundler-v0.4-source.tar.gz(下载地址:http://phototour.cs.washington.edu/bundler/), 假设
Bundler的安装位置在/bundler
(3) 编译Bundler
    在编译之前请大家在/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"。原因后面第(6)步大家会知道。

$ cd E:/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(下载地址: http://www.cs.ubc.ca/~lowe/keypoints/siftDemoV4.zip), 解压后将其中的siftWin32.exe拷贝到/bundler/bin, 这个siftWin32.exe会被Bundler调用作为特征点探测器。
(5) 运行Bundler
         Bundler里面有两个examples,里面存放了若干不同视角的图片,我们使用其中的一个example kermit。
$ cd  E:/bundler
$ mkdir result(建立result文件夹,存放输出结果)

$ cd result(进入result文件夹)
$ ../RunBundler.sh ..examples/kermit (注: ../examples/kermit指明用于进行多视角重建的图像所在目录)此时已经运行完Bundler, 在./bundle/bundle.out文件里有重建的稀疏点3D坐标和相机参数, 具体说明参见/bundler/readme.txt。
这样/bundler会生成两个文件夹/bundle和/prepare。

在CYGWIN下编译和运行软件Bundler ,以及PMVS,CMVS的编译与使用第1张

(注意红线里的“..”的个数,这里面涉及到目录问题)

在CYGWIN下编译和运行软件Bundler ,以及PMVS,CMVS的编译与使用第2张

(6) 将Bundler的输出转换为CMVS-PMVS2的输入
         Bundler会生成一个Bundle2PMVS.exe用于将Bundler生成的结果转化成CMVS要求的输入。注意这里的操作一定是在bundler的根目录下面。否则后面生成的目录文件会有错
$ ../bin/Bundle2PMVS.exe prepare/list.txt bundle/bundle.out(前面也是两个点,看下图红线以内,第一次我就是少了一个点,出错了)

在CYGWIN下编译和运行软件Bundler ,以及PMVS,CMVS的编译与使用第3张
       此时生成了pmvs子目录, 编辑里边的prep_pmvs.sh(用到工具EditPlus 3,网上可以搜到), 指明BUNDLE_BIN_PATH路径来寻找RadialUndistort.exe和Bundle2Vis.exe。注意我们用的是Cygwin所以改BUNDLE_BIN_PATH要注意目录的格式,比如我的Bundler在E盘根目录,那么BUNDLER_BIN_PATH=/cygdrive/e/bundler/bin(地址不能有空格
(7) 完成最后的转换$ ./pmvs/prep_pmvs.sh
      在pmvs目下生成txt, visualize, models目录和bundle.rd.out, list.rd.txt, vis.dat, pmvs_options.txt文件, 这些都是PMVS2的输入。pmvs子目录的文件如下图:

在CYGWIN下编译和运行软件Bundler ,以及PMVS,CMVS的编译与使用第4张

CMVS-PMVS的配置:

         Yasutaka Furukama网站上提供的CMVS是基于Linux上的比较。好在有个人将它转成了可以在Windows下运行的文件,见http://francemapping.free.fr/Portfolio/Prog3D/CMVS.html
(1)  下载CMVS-PMVS并解压缩。发现里面有一个binariesWin-Linux文件夹,里面有配置好的基于Linux,Win32,和Win64的可执行程序,将CMVS-PMVS-master\binariesWin-Linux\Win64-VS2010文件夹中的文件全部拷贝到之前的result文件夹目录下(下图这些文件)。
在CYGWIN下编译和运行软件Bundler ,以及PMVS,CMVS的编译与使用第5张

打开cmd

1.进入E盘(E:)

2.进入bundler/result文件夹下(cd E:\bundler\result)

3.输入cmvs pmvs/

在CYGWIN下编译和运行软件Bundler ,以及PMVS,CMVS的编译与使用第6张

4.输入genOption pmvs/(这一步不知道做什么的。。。)

5.pmvs2 pmvs/ option-0000(注意option之前的空格键)

在CYGWIN下编译和运行软件Bundler ,以及PMVS,CMVS的编译与使用第7张


这样,我们发现/pmvs/models/文件夹多了几个文件,其中*.ply文件为3D模型文件用下面的软件可以查看。

 在CYGWIN下编译和运行软件Bundler ,以及PMVS,CMVS的编译与使用第8张

稠密网格的显示:

      我们这里使用的是MeshLab:http://meshlab.sourceforge.net/
(1) 创建一个新的New Empty Project。
(2) File->ImportMesh,进入E:\bundler\result\pmvs\models,读入里面的模型文件(如图所示)

在CYGWIN下编译和运行软件Bundler ,以及PMVS,CMVS的编译与使用第9张

下一篇写写关于3D运动学的一些基础知识

如果看到这里你还没有很完美的获得预期的结果,由于我很久没有做这方面的工作,大家可以加群:336246221进行咨询讨论

免责声明:文章转载自《在CYGWIN下编译和运行软件Bundler ,以及PMVS,CMVS的编译与使用》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇编译器扩展deprecatedSTM32学习笔记(八) SPI总线(操作外部flash)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

完美解决php无法上传大文件代码

之前仿造uploadify写了一个HTML5版的文件上传插件,没看过的朋友可以点此先看一下~得到了不少朋友的好评,我自己也用在了项目中,不论是用户头像上传,还是各种媒体文件的上传,以及各种个性的业务需求,都能得到满足。小小开心了一把。   但无论插件再怎么灵活,也难以应付所有的需求,比如,你要上传一个2G的文件。以现在我们的网速,恐怕再快也得传半小时。要命...

freemarker动态生成word并将生成的word转为PDF,openoffice转换word乱码

之前项目有个需求,需要先动态生成word内容,然后再预览生成word的内容(不能修改).整理一下,方便以后使用. 网上参考了好多大神的博客.具体也忘了参考谁的了,如有侵权,请告知修改. 思路一: 将目标word文件另存为xml文件,将里面的需要动态生成的内容用freemarker的表达式${}替换. 用freemarker生成word的工具类,动态生成wo...

Tornado web 框架

Tornado web 框架 其实很简单、深度应用一、简介     Tornado 是 FriendFeed 使用的可扩展的非阻塞式 web 服务器及其相关工具的开源版本。这个 Web 框架看起来有些像web.py 或者 Google 的 webapp,不过为了能有效利用非阻塞式服务器环境,这个 Web 框架还包含了一些相关有用工具及优化。     Tor...

Hadoop HDFS命令行操作

1、列出所有命令 hdfs dfs -help 2、查看某个一个命令的详细 hdfs dfs -help -put 3、ls 查看HDFS系统中文件和目录,例如查看根目录 hdfs dfs -ls /  列出所有目录和文件 hdfs dfs -ls -R /  4、put 将本地文件上传道HDFS系统中 hdfs dfs -put test.txt...

svn 本地仓库使用

下载TortoiseSVN官网地址:http://tortoisesvn.net/downloads.html当前版本为1.7.7 下载:TortoiseSVN-1.7.7.22907-win32-svn-1.7.5.msi 下载完成后安装 此时我们就可以在右键菜单中看到如图所示菜单选项了。 创建档案仓库 创建档案仓库,即是创建存储档案的地方,Torto...

logback的使用和logback.xml详解,在Spring项目中使用log打印日志

logback的使用和logback.xml详解 一、logback的介绍  Logback是由log4j创始人设计的另一个开源日志组件,官方网站: http://logback.qos.ch。它当前分为下面下个模块:  logback-core:其它两个模块的基础模块  logback-classic:它是log4j的一个改良版本,同时它完整实现了sl...