三维重建综述及最新进展

三维重建综述

  • 总概览图如下图所示:
    三维重建一直是计算机视觉领域比较热门的研究方向。目前三维重建已经广泛应用于自动驾驶,机器人,AR,工业制造等各个领域。
    三维重建综述及最新进展_第1张图片

传统方法

  • 基于深度相机(RGBD)三维重建
    随着各种面向普通消费者的深度相机(depth camera)的出现,基于深度相机的三维扫描和重建技术得到了飞速发展。以微软的Kinect,华硕的XTion以及英特尔的RealSense等为代表的深度相机造价低廉,体积适当,操作方便,并且易于研究者和工程师进行开发。
    • 深度相机主要分为结构光和TOF,目前比较主流的就是TOF相机。以Kinect为例Kinect v1是采用结构光方案,Kinect v2采用TOF方案。
    • 最经典的RGBD重建算法即为帝国理工的Newcombe等人在2011年提出的KinectFusion。之后又出现了 Kintinuous,ElasticFusion,ElasticReconstruction,DynamicFusion,InfiniTAM,BundleFusion,Real-time Indoor Scene Reconstruction with RGBD and Inertia input(基于IMU代码未开源,仅开源数据集)等非常优秀的工作。有一篇综述对各个算法详细介绍:http://www.zollhoefer.com/papers/EG18_RecoSTAR/paper.pdf
    • 目前综合效果比较好的就是BundleFusion,BundleFusion效果如下图:三维重建综述及最新进展_第2张图片
  • MVS 基于图像的三维重建
    • 从一系列图像中重建3D模型即基于rgb的建模(刚体重建)。
    • 基本原理:多视立体视觉(三角测量法)
    • 基本 pipeline
      • 图像获取:可以是网上搜集的照片也可以是任意相机拍摄的照片;

      • 位姿计算(相机内外参):一般采用SFM/Slam来进行计算,常用的SFM框架如下:

        • Bundler ([Snavely 2010; Snavely et al. 2008]):增量式sfm.专为大场景位姿计算设计,是比较老的sfm的实现,为处理大量照片采用增量式加载照片。在这个过程中,BA调整是用来优化相机的姿态和 通过最小化重投影误差来确定地标位置。这个一般 这种方法被称为增量SfM。
        • COLMAP:[Schönberger 2016]也采用增量式方法,集成了额外的验证,外点滤除,模型选择等技术,鲁棒性更高
        • MVE:一个完整的重建系统集成了sfm,mvs与Bundler类似,在管线中每一步集成了多个变量。
        • OpenMVG:[Moulon et al. 2016]集成了增量式与全局的sfm全面、积极维护 开放源码的多视图几何库
        • Theia:[Sweeney 2016]开源库,提供最新的增量式和全局式的sfm实现
        • VisualSFM:[Wu 2011]高度优化的增量式sfm集成了多个工程的idea 。
      • 几何建模:重建图像中场景的几何信息,常用重建框架如下:

        • CMPMVS:可以处理弱纹理的表面
        • MVE:包含sfm,mvs完整框架
        • OpenMVS:开源库提供了生成稠密点云的算法可以与多个sfm配合使用。
        • PMVS:Patch-based multi-view stereo (PMVS) [Furukawa 2011]开创性MVS管线
        • SMVS: Shading-aware multi-view stereo (SMVS) [Langguth et al. 2016]
      • 纹理贴图:给几何模型(一般三角网格表示)赋予真实的颜色材质信息。
        三维重建综述及最新进展_第3张图片

      • 与classical stereo区别

        • 经典的立体视觉是处理两个不同视角的图片。MVS处理多个不同视角图片,提高了鲁棒性。
        • MVS处理数以百万计的照片能有效地重建大场景如整个城市、国家等。
      • 综合性能效果等,目前比较好的基于图像的重建方案:colmap+openmvs。openMVS效果如下图:
        三维重建综述及最新进展_第4张图片

基于学习的方法

  • 基于单帧图像的模型重建
    • 目前有很多单帧深度恢复的,但是单帧深度恢复存在尺度一致性问题无法拿来重建整个模型,在这里暂不讨论。主要还是讨论端到端单帧图像直接得到完整几何模型算法。
    • 单帧人体重建
      • 人体重建主要分基于SMPL和非SMPL,基于SMPL的都有一个显著的特征就是重建的模型跟真人相差比较大。非SMPL的目前效果相对还不错是pifuHD,模型精细度真实度更高,但是没有纹理。
    • 单帧物体重建
      • 由于数据集的限制(大多数据是CAD模型渲染得到的),真实场景的模型恢复效果一般。比如if-net网络等。
    • 单帧人脸重建

  • 双目(stereo)或多视(mvs )重建
    • 基于学习的stereo
      • GCNet介绍了利用3D 代价 volume 正则化来实现立体重建,用soft argmin回归最终的视差图。PSMNet加了一个空间金字塔池化 并用3D沙漏网络来正则化。DeepPruner提出了一个没有可学习参数的可微分的Patch模块,丢弃大部分视差,然后建立一个轻量级的代价体,并用3D CNN来正则化。相反,我们不适用任何代价volume,而是将原始的patch思想用deep learn来实现。xu [37] 提出了基于稀疏点的尺度内代价聚合方法,使用了变形卷积。
    • 基于学习的MVS
      • 基于体素的方法[20,21]由于体素表示的缺点只能用来进行小尺度的建模。相反,基于plane-sweep stereo[9],最近有许多工作[6,28,39,42]使用深度图来重建场景,他们通过warp多个视图的特征来构建代价体,并用用3D CNN正则化,回归出深度。因为3d cnn非常耗时和耗内存,他们通常使用下采样代价体。
      • 为了减少内存,R-MVSNet[43]用GRU序列化正则化的2d代价,但是以牺牲了运行时间。目前基于Deep learning的方法构建的3D Cost Volume需要3D卷积来做cost aggregation消耗显存非常大,为了节省内存一般最终输出的depth/disparity map限制为输入的1/4。目前研究的目标是提高效率同时建立高分辨率的深度图。CasMVSNet[17]提出了基于特征金字塔的级联代价体,从粗糙到精细构建深度图。UCS-Net [7]提出了级联自适应thin volumes,为了自适应构建采用基于方差的不确定度估计。CVP-MVSNet [41]形成了一个图像金字塔,也构建了代价体金字塔。
      • 除了级联代价体之外,PVSNet [40]学习预测每个原图像的可见性。一个抗噪声训练策略被用于处理干扰的views。 Fast-MVSNet [44]构建了一个稀疏代价体来学习一个稀疏的深度图然后用高分辨率RGB图像和2DCNN来稠密化它。
      • 为了加速Patch传播,PatchMatchNet采用了一个级联结构,在计算高分辨率的depth上降低内存和时间的消耗。它继承了经典的patchmatch的有效性,同时也旨在提高深度学习的性能,它的泛化能力更强,一致性比较好不会出现模型分层现象。

你可能感兴趣的:(三维重建MVS,计算机视觉,深度学习)