Bundler 及 PMVS 常见问题&解决方法

Bundler是Noah Snavely开发的一套基于SfM原理、能够利用无序图片重建三维模型的系统。CMVS+PMVS是Yasutaka Furukawa博士写的一套强大系统,能够以Bundler的输出作为输入,二者搭配使用,能够重建出稠密的点云模型。下面是我总结的这整套系统在实际编译、运行中的常见问题,并给出相应解决方法,希望对大家有所帮助。

(注:本文Bundler在cygwin下编译运行。)

问题1.

问题描述:编译时,在cygwin中执行make之后,bin目录下并没有生成bundler.exe, Bundle2PMVS.exe等可执行文件。

分析解决:一般都是cygwin安装不完全导致这个问题。只需要重新安装cygwin,安装到下图所示界面时,将All后面的Default改为Install即可。

cygwin下载地址(官网百度云Cygwin离线包13.08.24.7z

问题2如下图:

问题描述:无法找到相机CCD传感器宽度信息。初次使用自己拍摄的照片兴致勃勃测试程序效果的时候,一般都会遇到这个问题。而没有CCD宽度信息,就无法计算点云的三维坐标,再继续跑下去也是白搭。

解决方法:①先确定你的相机型号,然后到网上查找该相机的CCD参数。比如www.dpreview.com。需要注意的是,程序要求的CCD宽度并不是说只能用CCD相机,CMOS相机也是一样的,CMOS感应器宽度就是所需的CCD宽度。

② 查到CCD/CMOS宽度信息后,在bin目录下找到extract_focal.pl配置文件,使用notepad++之类的记事本程序打开,按照相应格式把你的相机传感器宽度信息加进去。注意格式要严格按照规定:

"[Camera make] [Camera model]" => [Sensor width]

(即"[相机制造商] [相机型号]" => [传感器宽度])。比如我们的相机是"NIKON CORPORATION NIKON D7100"      => 23.5

另,至于如何确定相机制造商Camera make和型号Camera
model,可以把你拍摄的一张照片放到bin文件目录中,打开cmd控制台,通过jhead程序进行确认,如下图,我的照片是myphoto.jpg:

完成上述设定之后,就解决了这个问题。原则上来说,使用手机拍照也可以,只要能够找到传感器宽度并添加到配置文件中。

问题3如下图:

问题描述:提取特征点时出现Ran out of memory的错误,内存不足。

分析解决:这是因为你的照片尺寸太大了,建议安装
美图看看 修改图片尺寸,一般设置长为2000,保持宽度比即可。这时一般每幅图可以找到2000左右个keypoints。另外美图看看还能够批量修改图片名、图片文件格式等,能够节省不少功夫。

问题4如下图:

问题描述:在提取特征点时,无法找到 .pgm图片文件。

分析解决:SIFT程序在提取特征点时需要 .pgm格式的图片,因此需要安装软件
ImageMagick 。装好之后,bundler在进行特征点提取时,就会自动调用该程序,将 .jpg图片转换为 .pgm。

问题5如下图:

问题描述:为什么按照要求到/result/pmvs目录下,对prep_pmvs.sh文件中的 "BUNDLER_BIN_PATH"进行赋值之后,输入上述命令运行却出现如图所示的错误?

分析解决:修改prep_pmvs.sh要以下几点需要注意:

① 千万不要使用Windows自带的记事本编辑任何文本文件。原因是Microsoft开发记事本的团队使用了一个非常弱智的行为来保存UTF-8编码的文件,他们自作聪明地在每个文件开头添加了0xefbbbf(十六进制)的字符,你会遇到很多不可思议的问题,比如,网页第一行可能会显示一个“?”,明明正确的程序一编译就报语法错误,等等,都是由记事本的弱智行为带来的。建议你下载Notepad++代替记事本,不但功能强大,而且免费!

② 比如我的修改后为:BUNDLER_BIN_PATH=/cygdrive/e/bundle/bin,每个人放的位置不同需作相应调整。注意等于号后不留空格,使用cygwin运行程序的还要加上/cygwin/的前缀。

问题6如下图:

问题描述:使用多幅照片,执行时却只有寥寥几幅有效,只得到很少的点。

分析解决:这是因为拍摄的照片中,照片的差异过大,无法匹配。bundler,也就是SfM原理要求照片之间存在足够大的重叠部分,每一个点最好至少在3幅照片中可见。因此在拍摄照片时,每转过15°,至少拍摄一幅照片。另外,照片尽量拍好一些,要清晰明亮。

问题7. 运行正常,最终得到的模型却质量很差。

分析解决:同问题6,都是照片质量有待提高。

以上是我总结的几个问题,希望能帮到大家。大家若有其他问题,或针对上述问题有更好的解决方法,欢迎在下方留言,一起讨论。

附:

1. Snavely的Github页面也有不少提示信息,另外他也总结了一些常见问题,与本文互为补充,大家可以参考借鉴。

2. Bundler安装编译步骤可参考我另一篇博文。

时间: 2024-10-01 05:58:46

Bundler 及 PMVS 常见问题&解决方法的相关文章

NHibernate常见问题及解决方法

NHibernate常见问题及解决方法 曾经学过NHibernate的,但是自从工作到现在快一年了却从未用到过,近来要巩固一下却发现忘记了许多,一个"in expected: <end-of-text> (possibly an invalid or unmapped class name was used in the query)."错误查了好半天终于查到了.这篇文章是我转载的NHibernate的常见错误... hbm.xmlNHibernate文件中版本号可能引起的

Android项目:proguard混淆之常见问题及解决方法汇总

1.使用proguardgui混淆器对jar包进行混淆,出现EXCEPTION FROM SIMULATION错误: [2014-07-08 14:29:55 - Test024_HouseBox_v02_jar] Dx  EXCEPTION FROM SIMULATION: [2014-07-08 14:29:55 - Test024_HouseBox_v02_jar] Dx local variable type mismatch: attempt to set or access a va

mysql5.6配置同步复制的新方法以及常见问题的解决方法

mysql5.6新增一种不用设置log_bin文件和log位置的方法,之前我们都需要查看master机器信息(show master status),然后在slave设置 master_host='10.163.213.228',master_user='repl',master_password='sangfordb',master_log_file='mysql-bin.000015',master_log_pos=193952; 使用mysql5.6后可以不用这种方法配置了,只要设置my.

AppFuse 3常见问题与解决方法

很长一段时间没做SSH项目了,最近抽空看了一下升级到3.x的appfuse,对新版本使用过程中出现的一些问题进行了排查,汇总如下,以备后用.本文原文出处: http://blog.csdn.net/bluishglc/article/details/38640715 严禁任何形式的转载,否则将委托CSDN官方维护权益! 起步 使用appfuse的第一步自然是通过archetype:generate生成项目.这本不是一问题,官方的QuickStart:http://appfuse.org/disp

WebServices生成发布过程及常见问题的解决方法

春夏秋冬走健康之路看四季养生网 健康饮食 养生问题 母婴保健 养生小常识 3.下一步,我们需要将Myservice文件夹拷贝到C:\Inetpub\wwwroot目录下(重要).如下图所示  然后依次右击“我的电脑”->“管理”->“服务和应用程序”->“Internet信息服务(IIS)管理器”打开IIS管理器,或者在控制面板中,通过“管理工具”打开“Internet信息服务(IIS)管理器”,如下图所示 展开“网站”节点,右键点击“默认网站”节点,依次选择“新建”->“虚拟目录

银河麒麟操作系统常见问题及解决方法(四)

银河麒麟操作系统常见问题及解决方法(四)                                     ——激活问题   银河麒麟操作系统是国防科大唯一授权给天津麒麟信息技术有限公司的国产Linux操作系统,支持x86架构,唯一支持飞腾CPU. 银河麒麟操作系统作为国内等级最高的操作系统,源自国家“十五”科技重大专项研究成果.经过十余年的发展,形成了服务器.桌面.实时.云.存储五大系列操作系统产品,以及高性能计算.云计算和云桌面等产品. 由于银河麒麟操作系统的广泛应用,用户体验过程中难

银河麒麟操作系统常见问题及解决方法(一)

银河麒麟操作系统常见问题及解决方法(一) 银河麒麟操作系统是国防科大唯一授权给天津麒麟信息技术有限公司的国产Linux操作系统,支持x86架构,唯一支持飞腾CPU. 银河麒麟操作系统作为国内等级最高的操作系统,源自国家"十五"科技重大专项研究成果.经过十余年的发展,形成了服务器.桌面.实时.云.存储五大系列操作系统产品,以及高性能计算.云计算和云桌面等产品. 由于银河麒麟操作系统的广泛应用,用户体验过程中难免会遇到一些问题,接下来就银河麒麟操作系统的安装问题及版本问题送上解决方法(以下

FusionCharts使用问题及解决方法(二)-FusionCharts常见问题大全

在上文中,我们介绍了FusionCharts常见问题(FAQ)的解决方法,本文将一同讨论FusionCharts使用者面临的一些复杂问题的解决方法. 如何启用JavaScript调试模式? 要启用JavaScript调试模式,你将需要写下面的几行代码: FusionCharts.debugMode.enabled(true); 此外,你还需要指定"debugMode" 输出的位置.如果你还想在浏览器的JavaScript控制台中查看错误,你需要写入一下几行代码: FusionChart

FusionCharts使用问题及解决方法(四)-FusionCharts常见问题大全

在前3篇文章中,我们总结了FusionCharts图表的一些常见问题(FAQ)及解决方法,本文继续讨论FusionCharts使用者常见的一些复杂的报错及解决方法. 问题描述:使用FusionCharts时,我想在一个给定的时间间隔内自动在服务器端生成图表,将最新生成的图表以电子邮件方式发出去? 解决方法:请注意,目前为止FusionCharts 不支持直接通过邮件发送图表.但是FusionCharts图表组件允许你将图片导出为图像并保存在服务器上.因此,你可以编写你自己的脚本,然后自动地将保存