基于深度学习的MVS学习笔记(05.04-05.05)

发布于:2024-05-06 ⋅ 阅读:(26) ⋅ 点赞:(0)

1. MVS方法与分类

1.1 问题界定:多目和单目双目

  • 单目深度估计:拟合一个函数将图像【RGB输入】映射到深度图【浮点输出】
  • 双目深度估计:双目回归视差,可以进一步求像素距离相机光心的深度
  • 多视点三维重建
    • 单目只能找到“相对的”相对关系
    • 双目理论上可以获取深度,但不同视角下深度可能不一致
    • 多目可以综合考虑,交叉验证

在特征提取上可以参考单目方法,在特征匹配和聚合上可以参考双目方法

1.2 MVS重建方法分类

方法 缺点
直接点云重建 point cloud based 一般采用点云传播的方式逐步让模型变得稠密 难以并行化,重建时间长
基于体素的方法 volumetric based 将3D空间划分为体素,在全局坐标系下判断每个体素的占用,能很好的通过正则化并行化。一般采用divide-and-conquer或八叉树等进行高分辨率重建 由于内存消耗,一般只能处理小分辨率的场景
基于深度图融合 depth map fusion based 将MVS问题解耦为逐视点的深度估计+最终融合所有视点图得到3D模型 对于大基线角度和遮挡区域由于几何一致性会导致较差的质量

大基线角度:拍摄角度变换太大导致两张图差别很大

2. MVS流程

2.1 前序步骤:SfM

SfM 从运动中恢复结构【从图片中恢复/得到稀疏的点云+相机的参数】

2.2 核心问题建模:平面扫描算法

Plane Sweeping平面扫描【得到深度图】

  • 将空间划分成不同的深度假设平面,选择最好的深度假设平面 -> 恢复丢失的深度

  • 在物体表面的点,不同相机看到的应该是一样的(在物体上) -> 某种特征&某种度量

  • 由于SfM求得了相机参数,因此可以相互投影(Homograpy) -> 深度统一

2.3 后续步骤:深度图滤波与融合

已经估计出深度图,进行滤波和融合

像素点P,像素点P对应的深度D§,将参考视角下的P投影到源视角得到P’ -D(P‘),投影到很多源视角下

  • P和P‘距离比较进【像素点】
  • D§和D(P‘)距离比较近【深度图】
  • 至少在N个视点上满足,则认可这个点

这就是几何一致性滤波

另外常见的光度一致性滤波

得到过滤后的深度图就可以进行融合,目前关于融合方面的工作比较成熟

3. 基于深度学习的MVS方法

3.1 数据集介绍

DTU:用于训练和测试

针对MVS专门拍摄处理的高精度室内物体数据集,利用可调节照明的ABB机械臂进行多视点拍摄

  • 由124个不同场景组成
  • 每个物体共拍摄49个不同的视角
  • 每个视角共有7种不同的亮度
  • 每张图像分辨率为1600x1200

Tanks and Temples:用于泛化测试

大型室外场景数据集

  • 光照变化大
  • GT使用工业激光扫描仪获得
  • 场景存在大规模光照变化
  • 不能进行训练

BlendedMVS:用于finetune

  • 由113个场景组成
  • 覆盖小尺度和大尺度场景
  • 高精度合成数据

ETH3D:用于大规模重建

  • 包含25个高分辨率场景和10个低分辨率场景
  • 视点数量和分辨率非常庞大
  • 存在很多大面积弱纹理和遮挡区域
  • 一般作为传统方法的benchmark

3.2 评估指标介绍

准确率

召回率/完整性

3.3 MVSNet系列论文列表

代码仓库

https://github.com/waisvid/Awesome-MVS

基于深度学习:https://github.com/XYZ-qiyh/Awesome-Learning-MVS