重建我的3D世界【代码开源】【连载-3】【Colmap和OpenMVG对比】

重建我的3D世界系列的第二篇,我提到关于SFM部分是选择Colmap还是OpenMVG的问题,并决定实践出真知。Colmap官网就提供了带有界面的测试程序,用起来很方便,我下载了3.6版本,地址是colmap 3.6
而OpenMVG则可以较为容易的编译,它不提供带界面程序,有控制台程序可以测试,结果可以导入Colmap的界面程序中可视化。

0. 前言

本次测试总体来说是属于浅层次的测试,我只简单从场景重建的直观效果、重建效率、重投影误差、图像姿态恢复完整度等来评价。实际上一些更专业的评价指标,如场景的点云或控制点和真值的差值、位姿和真值的差值等,没有在本实验进行评价,所以很遗憾的提醒大家这并不是一份专业的测试,最终结果也可能并不那么专业或者准确,还请见谅。

1. 数据选择

在程序都部署妥当后,首先就要进行测试数据的选择,我这里根据数据的类型选择了6组数据,数据量不大(都不超过1000张,数据量太大了测试起来太费时),场景有所区别,有农田有建筑;有室外有室内;有无人机拍图也有数码相机拍图。

需要额外说明的是,为了契合我们的主题,就是希望能用一些简单的设备重建周围的3D世界,所以我也拍摄了两组手机图片集,来测试下SFM的效果,其一是一只跑步鞋,其二是一个恐龙模型。

下面是所有数据的一个概览:

数据名称影像数尺寸相机类型场景描述有无GPS
Small Buildings364592x3056无人机(AscTecFalcon 8)建筑
Urban1135472x3648无人机(senseFly)农田,建筑,裸地
Person-hall3305616x3744数码相机(Canon)建筑、树木、近景
Graham-hall7115316x3744数码相机(Canon)室内,近景
Shoe424032x3024手机(三星S20+)生活用品
Dinosaur554032x3024手机(三星S20+)模型
Small Buildings
Urban
Person-hall
Graham-hall
Shoe
Dinosaur

2. 测试环境

所有测试都在我的台式机上进行,配置如下

平台型号
CPUIntel I7-8700K 3.7GHz
GPUNVIDIA GTX 1080 8G

3. 参数设置

Colmap全部使用默认参数,在特征匹配时采用小型词汇树,适用于少于1000的图像集。下载地址:vocab_tree_flickr100K_words32K
在这里插入图片描述
OpenMVG全部使用默认参数,在无法识别传感器型号时,提供初始焦距 max ⁡ ( w , h ) ∗ 1.2 \max(w,h)*1.2 max(w,h)1.2。控制台的具体调用方式请参考:openMVG softwares & tools。并将生成的结果用OpenMVG自带的工具转成Colmap的SFM格式在Colmap程序中显示。

两者都采用 增量式SFM ,且都没有使用GPS辅助SFM,虽然有的数据有带GPS且OpenMVG提供了辅助GPS的SFM,但由于Colmap没有这个模块,所以为公平起见,测试中它们都没有使用。

为了验证,中间会有部分测试数据使用Agisoft Metashape跑了一遍,Agisoft Metashape的前身是Agisoft Photoscan,以SFM见长。

4. 测试结果

1 Small Buildings 36p 4592x3056

Colmap
步骤时间(分)
特征提取 Feature Extraction0.094
特征匹配 Feature Matching1.723
光束法平差Bundle adjustment0.996
SFM总时间2.813
重投影误差平均0.89
重建图像数 / 稀疏点数36 / 20972

在这里插入图片描述

OpenMVG
步骤时间(分)
特征提取 Feature Extraction1.867
特征匹配 Feature Matching0.583
光束法平差Bundle adjustment1.067
SFM总时间3.517
重投影误差平均0.28
重建图像数 / 稀疏点数36 / 69791

在这里插入图片描述
这个数据两者差别不是很大,OpenMVG重建效率稍微低一些,生成了更多的稀疏点,平均重投影误差也更小。

2 Urban 113p 5472x3648

Colmap
步骤时间(分)
特征提取【Feature Extraction】1.195
特征匹配 【Feature Matching】7.414
光束法平差Bundle adjustment2.898
SFM总时间11.507
重投影误差平均1.07
重建图像数 / 稀疏点数113 / 73691

在这里插入图片描述

场景看上去有些弯曲,为了验证,我用商业软件Agisoft Metashape也跑了一遍,耗时102.344秒(1.706分),效率非常高,重建图像113张,共173095稀疏点,结果如下:
在这里插入图片描述
场景是平的,可以判断出Colmap重建出的场景是有一点漂移(Drift)的。但需要说明的是,Metashape是有辅助GPS,而Colmap未使用GPS辅助。

OpenMVG
步骤时间(分)
特征提取 Feature Extraction8.200
特征匹配 Feature Matching23.13
光束法平差Bundle adjustment12.13
SFM总时间43.46
重投影误差平均0.37
重建图像数 / 稀疏点数113/ 408068

在这里插入图片描述
OpenMVG重建的场景同样有弯曲的趋势,弯曲程度看上去比Colmap会好一点,但是没有达到Metashape的水平(鉴于Metashape用了GPS辅助而OpenMVG没有,这样的结果可以接受)。

OpenMVG重建时间是显著长于Colmap的(近4倍),即使算法已经使用了多线程,CPU也基本处于忙碌状态。

3 Person-hall 330p 5616x3744

Colmap
步骤时间(分)
特征提取【Feature Extraction】1.169
特征匹配 【Feature Matching】36.197
光束法平差Bundle adjustment22.108
SFM总时间59.474
重投影误差平均0.75
重建图像数 / 稀疏点数330 / 179134

效果看上去还是不错的,结构恢复的比较规整。我们同样用Agisoft Metashape跑一遍,因为相片本身就没有GPS,所以我们看看没有GPS时Metashape表现如何:

同样很稳健的重建结果,耗时509.577秒(8.493分),效率非常高,重建图像330张,生成稀疏点226761。

OpenMVG
步骤时间(分)
特征提取 Feature Extraction29.91
特征匹配 Feature Matching247.78
光束法平差Bundle adjustment130.38
SFM总时间408.07
重投影误差0.26
重建图像数 / 稀疏点数330/ 900759

OpenMVG对该场景的重建直观效果和Colmap及Metashape都比较相近,只是接近7小时的时间实在是太“漫长”了。

4 Graham-hall 711p 5616x3744

Colmap
步骤时间(分)
特征提取【Feature Extraction】2.317
特征匹配 【Feature Matching】25.141
光束法平差Bundle adjustment48.798
SFM总时间76.256
重投影误差平均0.97
重建图像数 / 稀疏点数691/ 171956

效果还是不错的,

OpenMVG

鉴于上一组330张耗时近7小时,这组实验就不做了。
在这里插入图片描述




PS. 以下两组为了更加直观的观察重建的效果,对于Shoe数据和Dinosaur数据,我用Colmap重建出了密集点云。

5 Shoe 42p 4032x3024

Colmap
步骤时间(分)
特征提取【Feature Extraction】0.085
特征匹配 【Feature Matching】1.112
光束法平差Bundle adjustment0.259
SFM总时间1.456
重投影误差平均0.68
重建图像数 / 稀疏点数38 / 5059

在这里插入图片描述

OpenMVG
步骤时间(分)
特征提取 Feature Extraction1.63
特征匹配 Feature Matching0.37
光束法平差Bundle adjustment0.32
SFM总时间2.32
重投影误差平均0.24
重建图像数 / 稀疏点数39/ 19794

在这里插入图片描述
此数据两者看不出太大差别,OpenMVF的重投影误差会更小一些。

Colmap重建稠密点云如下:

步骤时间(分)
立体匹配【Stereo】33.727
点云融合 【Fusion】1.494

在这里插入图片描述

6 Dinosaur 55p 4032x3024

步骤时间(分)
特征提取【Feature Extraction】0.096
特征匹配 【Feature Matching】1.098
光束法平差Bundle adjustment0.488
SFM总时间1.682
重投影误差平均0.91
重建图像数 / 稀疏点数55 / 10383

在这里插入图片描述

OpenMVG
步骤时间(分)
特征提取 Feature Extraction2.00
特征匹配 Feature Matching0.05
光束法平差Bundle adjustment0.40
SFM总时间2.45
重投影误差平均0.34
重建图像数 / 稀疏点数55/ 15796

在这里插入图片描述
此数据两者看不出太大差别,OpenMVF的重投影误差依然会更小一些。

Colmap重建稠密点云如下:

步骤时间(分)
立体匹配【Stereo】48.093
点云融合 【Fusion】1.945

在这里插入图片描述

5 总结

Colmap

在没有GPS辅助的情况下,Colmap对小场景(<1000 photos)的重建质量还是不错的,基本都能完整且正确的恢复场景结构,除了一组地面数据产生了一些场景漂移,但我想若辅以GPS信息,这个问题会被很好的解决。

默认参数下的效率偏低,和商业软件Metashape相比差距很大,Colmap文档里描述默认参数目标是进行中高质量的重建,所以效率或许可以用通过一些参数设置来改善,但也可能在一定程度上牺牲精度。

除了SFM,Colmap的稠密重建也是非常慢的,主要在立体匹配上消耗了大量的时间,效果还算可以,点云比较薄,但对弱纹理的支持一般,当然这也是通用重建难题。由于没有像OpenMVS对网格进行优化,所以最后重建的网格不够精细和光滑。

OpenMVG

同样,在没有GPS辅助的情况下,对小场景的重建质量都还不错。经过“漫长”的重建过程,重投影误差比Colmap要小,且漂移现象也要略好一点。

整个SFM Pipeline效率确实非常低,以至于博主放弃了700多张的数据测试,近7小时重建330张是无法接受的。

OpenMVG效率低的其中一个原因是特征提取默认采用CPU版本的SIFT,即使经过多线程加速,效率也无法和Colmap的GPU版本SIFT相比。另一个原因是默认使用枚举法建立特征匹配对,匹配对数目非常多且冗余,而Colmap选用的是词汇树,一种可以快速建立适当数量匹配对的方法,会有更少的匹配对。

选择

基于已有的测试结果,我倾向于使用Colmap而非OpenMVG来完成SFM,效率优势非常明显,且在结构恢复的完整度和准确度上也无明显劣势。

Tips

  1. 在SFM中,GPS是很重要的辅助信息,一方面可以用于恢复尺度信息;另一方面可以有效防止场景漂移;此外还可以在筛选匹配像对时作为辅助信息,间接提高匹配效率。
  2. 提高特征提取算法的效率可以有效提高SFM的效率,一般来说基于GPU的算法会更有优势。
  3. 有效减少图像匹配像对数同样可以有效提高SFM的效率,基于词汇树的图像检索方法可以通过图像相似度快速进行候选匹配像对筛选,有效减少匹配对,提高匹配效率。另一个有效的策略是在使用词汇树策略时可以在降采样分辨率上进行。

大家有什么建议或者见解欢迎在评论区留言!欢迎点赞收藏哦!
在这里插入图片描述

工程源码地址:TellusBuilder

感兴趣的同学,建议先点上 starwatch ,当然想基于我的工作自己往后做的也欢迎 Fork 啊。**
在这里插入图片描述

关注博主哦!

博主简介:
李迎松(知乎:李迎松)
武汉大学 摄影测量与遥感专业博士
主方向立体匹配、三维重建
2019年获测绘科技进步一等奖(省部级)

三维☁分享❤开源✿
GitHub: https://github.com/ethan-li-coding

个人微信:(加我邀请入群)

  • 71
    点赞
  • 83
    收藏
    觉得还不错? 一键收藏
  • 24
    评论
### 回答1: 很高兴能够为您服务。ColmapOpenMVS是两种三维重建技术,Colmap使用稠密图估计技术来提取图像的结构和视差图,而OpenMVS则使用深度估计技术,它使用更复杂的算法来处理图像,可以提高重建的准确度。 ### 回答2: COLMAPOpenMVS是两种常用的三维重建软件工具,它们在图像处理、特征匹配、三维点云生成等方面有着各自的特点。 COLMAP是一个开源三维重建软件,主要用于结构化重建。它能够使用大量的图像来构建三维场景,并生成高质量的点云和稠密地图。COLMAP使用视觉几何技术,包括特征提取、特征匹配和相机姿态估计等,以及三角测量和非线性优化等算法来进行三维重建COLMAP的特点是准确性高、稠密度好,但对于大规模场景处理速度较慢,对于计算资源有一定要求。 OpenMVS是一个用于多视图密集重建开源软件。它基于图像处理和计算几何算法,能够从来自不同角度的图像中生成细致的三维模型。OpenMVS的特点是处理速度快、对于大规模数据处理也比较高效。它通过多视图稠密重建、稀疏点云三角化和纹理映射等算法来实现三维重建OpenMVS适用于需要对大规模数据进行快速重建的情况。 综上所述,COLMAPOpenMVS都是常用的三维重建软件工具,它们在特点和适用场景上有些区别。COLMAP适用于对结构化场景进行准确重建,而OpenMVS适用于对大规模数据进行快速重建。选择使用哪种软件工具应根据具体的需求和项目要求来决定。同时,COLMAPOpenMVS都有各自的优点和局限性,可以根据具体情况选择使用或结合使用,以得到更好的三维重建结果。 ### 回答3: ColmapOpenMVS是两种用于三维重建的计算机视觉工具。其中,Colmap是一个用于密集三维重建和相机定位的开源软件包,而OpenMVS是一个用于稠密三维重建的工具。 Colmap主要用于从一组相片生成稀疏重建结果,并且可以使用这些结果进行稠密三维重建。它使用SIFT或者其他特征提取算法来提取图像中的特征点,并通过这些特征点来计算相机的姿势。然后,Colmap通过对特征点进行三角化,重建相机姿势和特征点的3D位置来生成稀疏点云。接下来,可以使用这些点云来生成稠密的三维重建结果。Colmap具有较高的精度和鲁棒性,适用于从大规模图像集合中进行三维重建OpenMVS是一个专门用于稠密三维重建的工具。它接受稀疏点云和图像作为输入,然后通过将图像投影到点云上来生成稠密点云。OpenMVS采用了特定的密集重建算法,可以精确地重建物体的表面形状和纹理信息。此外,OpenMVS还提供了更多的后处理和可视化工具,以优化和改进重建结果。 ColmapOpenMVS具有各自的特点和优势。Colmap对于从大型图像集合中进行稀疏重建非常强大,而OpenMVS则更专注于产生高质量的稠密重建结果。两者可以搭配使用,通过先用Colmap生成稀疏点云,再输入给OpenMVS生成稠密点云,从而实现更全面和精细的三维重建

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值