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出场的次数被降低,从二阶锥规划开始逐渐兴起。

  1. Shape and motion from image streams under orthography: a factorization method
  2. A factorization based algorithm for multi-image projective structure and motion
  3. Multiple-View geometry under the L∞Norm
  4. A Global Linear Method for Camera Pose Registration
  5. Global Motion Estimation from Point Matches
  6. Global Fusion of Relative Motions for Robust
  7. Accurate and Scalable Structure from Motion
  8. 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)进行编辑,比如降低面片数量、删除区域外的稀疏点等。此外,诸多其他系统的点云结果可在本系统内查看。