MVS框架开源整理
MVS框架开源整理
可视化程度比较好的meshlab,更适合OS X平台的MVE,以及能够配套使用的完整库OpenMVG和OpenMVS
Incremental 方向的论文:
要追溯重建思想的话就到Marr的奠基理论,以及分层重建思想了最早最著名的奠基工作,没记错的话是偶像男神Marc Pollefeys’ research page
自标定算法开始成熟后,摆脱人肉重建的曙光出现,全自动的创世机器有望完成,后续跟进了很多研究,可以看一下引用这篇文章的研究
后面就是完全开源、稳定的Bundler(Modeling the World from Internet Photo Collections ,Prof. Noah Snavely)。Bundler即使到了现在依然有做baseline的精度和鲁棒性,作为最早开源的代码之一,对SfM的发展起到了至关重要的作用,后续的很多伟大工作无不受其影响;
后续出现的诸如VisualSFM(Towards Linear-Time Incremental Structure from Motion, ChangChang Wu) , COLMAP(Structure-from-Motion Revisited)都是比较出名的Project;
有意思的几个工作:Building Rome in a Day ,Building Rome on a Cloudless Day,Reconstructing the world in six days还有很多了。
增量式的瓶颈在于image matching和Bundle Adjustment,为了加速和提升精度,在算法和并行化上都有非常多的改进。
Global方向的论文:
增量式的典型问题就是一张/几张加进去太慢,且误差会累积,导致相机轨迹飘移(slam里也一样,[loop closure](https://www.zhihu.com/search?q=loop closure&search_source=Entity&hybrid_search_source=Entity&hybrid_search_extra={“sourceType”%3A"answer"%2C"sourceId"%3A274752863})),所以就出来了全局式,
算旋转算位移,再总体优化,总之BA出场的次数被降低,从二阶锥规划开始逐渐兴起。
- Shape and motion from image streams under orthography: a factorization method
- A factorization based algorithm for multi-image projective structure and motion
- Multiple-View geometry under the L∞Norm
- A Global Linear Method for Camera Pose Registration
- Global Motion Estimation from Point Matches
- Global Fusion of Relative Motions for Robust
- Accurate and Scalable Structure from Motion
- Discrete-continuous optimization for large-scale structure from motion
全局式避免了drift的问题(更respect global shape of the graph)速度快(只需solve 两个global synchronization+一次BA),但是劣对错误的image matches鲁棒性较差,且错误难以修正 (error会沿着pipeline累积)。
**如何解决全局式重建的劣势:**即如何在存在大量错误的image matches 情况下依然较为准确地estimate camera pose。近几年的大方向包括两类
**第一类:**通过loop consistency来remove ouliers, 代表文章有
ECCV-2014 ------1d version of loop consistency (location synchronization)
cvpr-2010 -------loop consistency + [bayesian network](https://www.zhihu.com/search?q=bayesian network&search_source=Entity&hybrid_search_source=Entity&hybrid_search_extra={“sourceType”%3A"answer"%2C"sourceId"%3A519131008}) (主要用于 rotation (SO3) sychronization)
ICCV-2015 ------- 这篇paper并没有[remove outliers](https://www.zhihu.com/search?q=remove outliers&search_source=Entity&hybrid_search_source=Entity&hybrid_search_extra={“sourceType”%3A"answer"%2C"sourceId"%3A519131008}), 而是直接update fundamental matrices 使得其满足consistency constraints
**重点谈谈第二类:**后来人们开始考虑一些更优美的解决方法—直接从formulation下手。我们知道如果image match 出了错,那么后面的camera rotation estimation 和 location estimation 都会出问题。这两个estimation本身都是很基本但是nontrivial的数学问题:
Bundler: Structure from Motion (SfM) for Unordered Image Collections
是否开源:是
文档:小规模(5k左右),无详细接口说明
兼容性:虽然已发布windows版本,但开发和测试主要集中在Linux平台
主要特性:bundler是比较早的incremental SfM的工作,是这几个里最早的,起初源于一个旅客照片浏览系统,比如不同人不同角度 时间拍的斗兽场照片,重建出斗兽场的稀疏点云。输入多视角图像,输出稀疏点云并估计相机参数。与Colmap类似,Bundler速度更快(30-40min)。虽然精度和点云密度不如colmap和visualSFM高,但本系统可以计算相机参数,因此可放入下面的CMVS系统中进行后处理。
OpenMVG: open Multiple View Geometry
是否开源:是
文档:大规模,分8个章节。
兼容性:三大平台
主要功能:openMVG是global SfM的一个实现,基于作者的两篇global重建文章。openMVG (Open Multiple View Geometry):开源多视角立体几何库,这是一个 cv 界处理多视角立体几何的著名开源库,信奉“简单,可维护”,提供了一套强大的接口,每个模块都被测试过,尽力提供一致可靠的体验。
VisualSFM: A Visual Structure from Motion System
是否开源:否
文档:小规模 (5k词左右)
兼容性:兼容OS X/Windows/Linux,linux下依赖环境还挺多,麻烦没必要
主要特性:完成从图像到稠密点云的重建过程,值得注意的是,VSFM系统的输出可以放入CMP-MVS(Multi-View Reconstruction Preserving Weakly-Supported Surfaces, CVPR 2011),MVE(by Michael Goesele’s research group),SURE(by Mathias Rothermel and Konrad Wenzel), MeshRecon(by Zhuoliang Kang)等系统中进行后处理。VisualSFM是Changchang Wu的工作,基于incremental SfM的方法,里面有他的PBA和siftGPU包。稠密点云精度比较高,但构建速度较慢
Colmap: a general-purpose Structure-from-Motion (SfM) and Multi-View Stereo (MVS) pipeline with a graphical and command-line interface.
是否开源:是
文档:有详细说明,共13章节
兼容性:兼容OS X/Windows/Linux
主要特性:输入多视角图像,输出稀疏点云并估计相机参数,后续步骤需基于CUDA实现。
CMVS: Clustering Views for Multi-view Stereo
是否开源:是
文档:小规模,无接口说明
兼容性:有windows版本,linux为命令行版本
主要特性:将SfM系统的输出(稀疏点云)作为本系统的输入,本系统可将输入图像分解成一组可管理大小的图像集群。之后可以使用MVS软件独立并且并行地处理每个集群。本系统应该与SfM软件(例如Bundler)和MVS软件(例如PMVS2)结合使用。
PMVS(patch-based multi-view stereo) 是 Yasutaka Furukama 博士写的已知由一组图片和图片对应的相机参数生成 dense reconstruction (稠密的三维模型)的算法。
CMVS(Clustering Views for Multi-view Stereo) 是 PMVS 的改进版,里面包含PMVS。
MVE: a complete end-to-end pipeline for image-based geometry reconstruction.
是否开源:是
文档:中等规模,有示例,有管线说明。
兼容性:windows/OS X均可运行,文档说更推荐用OS X系统。
主要特性:包含了SfM, 点云重建,表面重建。包含了SfM实现,也有MVS,surface reconstruction以及texture mapping的实现,可以完整的做从rgb到带纹理的mesh的重建,里面还可以调用openMVG和VSFM。
MVS-Texturing: 3D Reconstruction Texturing
是否开源:是
文档:小规模,有用法说明。
兼容性:命令行程序
主要特性:能够完成大规模图像输入的纹理映射。特别是能够在缩放、模糊、遮挡物、曝光变化的情况下完成高质量的纹理映射。最后的效果比较干净
OpenMVS: open Multi-View Stereo reconstruction library
是否开源:是
文档:中等规模,分5节,逻辑比较顺畅。
兼容性:三大平台均可编译
主要功能:稠密点云重建、表面重建、表面细化、纹理映射。
Meshlab: the open source system for processing and editing 3D triangular meshes.
是否开源:是
兼容性:兼容OS X/Windows/Linux
主要特性:从稠密点云进行表面重建,并完成纹理映射。
附加:可选取感兴趣的区域(Region of Interest, ROI)进行编辑,比如降低面片数量、删除区域外的稀疏点等。此外,诸多其他系统的点云结果可在本系统内查看。


