【三维重建-算法解析】MVS(Multi-View Stereo,多视图立体)
文章目录
- 一、MVS 是什么?
- 二、MVS 的典型流程
- 三、核心原理与方法
- 1. 特征匹配与图像几何关系
- 2. 深度假设与代价计算
- 3. PatchMatch MVS:随机搜索与传播策略
- 4. 深度图融合(Depth Map Fusion)
- 四、深度学习时代的 MVS:神经网络的加入
- 代表方法
- 五、经典 MVS 工具链与开源项目
- 六、MVS 的挑战与发展趋势
- 七、总结
- 参考资料
一、MVS 是什么?
MVS(Multi-View Stereo,多视图立体) 是三维重建领域的核心技术之一。它的目标是:
在已知多个视角的相机位姿和图像的情况下,恢复场景中每个像素的三维结构(深度或点云)。
简单来说:
- 输入: 多张图像 + 每张图像的相机参数(外参与内参)
- 输出: 稠密点云或深度图
MVS 通常位于三维重建流程的 中后阶段,其前端通常由 SfM(Structure from Motion) 提供相机姿态与稀疏点云,后端 MVS 再将这些稀疏点扩展为稠密的三维结构。
二、MVS 的典型流程
一个完整的 MVS 管线通常包括以下步骤:
输入:多张已配准图像(及相机参数)
↓
1 图像匹配(Feature Matching)
2 深度假设生成(Depth Hypothesis)
3 代价计算(Matching Cost Computation)
4 代价聚合(Cost Aggregation)
5 深度优化与选择(Depth Refinement)
6 稠密点云融合(Depth Map Fusion)
↓
输出:稠密点云或表面模型
下面我们逐步展开。
三、核心原理与方法
1. 特征匹配与图像几何关系
MVS 的前提是已知每个相机的位姿,因此可以通过 极线约束(Epipolar Constraint) 将匹配搜索限制在一条极线上,从而减少计算量。
对于每个像素 ( p ) 在参考图像中,我们希望找到在其他图像中的对应点 ( p’ ),满足几何一致性。
2. 深度假设与代价计算
在每个像素处,MVS 会假设一系列可能的深度 ( d ),并根据该深度将该点反投影到三维空间,再投影到其他图像上,计算颜色一致性代价。
常见的代价函数包括:
- NCC(Normalized Cross-Correlation)
- ZNCC(Zero-mean NCC)
- SSIM(Structural Similarity)
- L1 / L2 光度误差
数学表达式(以 NCC 为例):
[
C(p, d) = 1 - \frac{\sum_i (I_r§ - \bar{I}_r)(I_i(p_i) - \bar{I}_i)}{\sqrt{\sum_i (I_r§ - \bar{I}_r)^2 \sum_i (I_i(p_i) - \bar{I}_i)^2}}
]
3. PatchMatch MVS:随机搜索与传播策略
近年来最主流的传统算法之一是 PatchMatch MVS(PM-MVS),其灵感来自图像修复算法 PatchMatch。
核心思想:
- 随机初始化深度与法线
- 基于邻域传播优化深度
- 利用视角一致性筛选匹配
优点:
- 收敛速度快
- 并行性强
- 精度高
代表实现:
- COLMAP MVS
- OpenMVS
- ACMM / ACMH / ACMP 系列算法
4. 深度图融合(Depth Map Fusion)
每张参考图像都会生成一个深度图,为了得到一致的稠密三维结构,需要将这些深度图融合。
常见方法:
- 基于投票的融合(如 COLMAP)
- 基于 TSDF(Truncated Signed Distance Function) 的体素融合
- 基于点云置信度的加权平均
最终输出为稠密点云,后续可用 Poisson Surface Reconstruction 等方法生成网格。
四、深度学习时代的 MVS:神经网络的加入
自 2018 年 MVSNet 提出后,MVS 进入了深度学习阶段。
主要思路:使用卷积网络直接学习从多视角图像到深度体积(Depth Volume)的映射。
代表方法
方法 | 发表年份 | 核心思路 | 特点 |
---|---|---|---|
MVSNet | 2018 | 构建 cost volume + 3D CNN 回归深度 | 首个端到端网络 |
R-MVSNet | 2019 | 记忆优化 + 可变深度采样 | 支持高分辨率 |
CVP-MVSNet | 2020 | 逐级 coarse-to-fine 深度预测 | 速度与精度平衡 |
PatchMatchNet | 2021 | 引入 PatchMatch 思想 | 轻量快速 |
GeoMVSNet / CasMVSNet | 2021+ | 分层金字塔式网络 | 多尺度鲁棒 |
五、经典 MVS 工具链与开源项目
以下是常用的 MVS 工具与框架:
工具 | 类型 | 说明 |
---|---|---|
COLMAP | 传统 MVS | 最流行的 SfM + MVS 工具 |
OpenMVS | 传统 MVS | 高性能、可扩展 |
MVE | 传统 MVS | 学术界常用 |
MVSNet / CasMVSNet / PatchMatchNet | 深度学习 MVS | 高精度端到端方法 |
Nerf / Nerfacto | 神经重建 | 与 MVS 结合趋势显著 |
六、MVS 的挑战与发展趋势
挑战 | 说明 |
---|---|
纹理缺乏 | 在无特征区域(如白墙)中难以匹配 |
遮挡与反射 | 多视角间出现遮挡或镜面反射时误差大 |
计算复杂度高 | 深度估计体积庞大、计算代价高 |
跨模态适应性差 | 不同光照、相机参数下匹配稳定性低 |
未来趋势:
- 融合深度学习与几何约束(Hybrid MVS)
- 神经体积表示(Neural Radiance Field, NeRF)
- 实时 MVS(Real-time MVS)
- 大规模场景重建(City-level Reconstruction)
七、总结
阶段 | 关键词 | 技术代表 |
---|---|---|
传统几何时代 | PatchMatch, ZNCC | COLMAP, OpenMVS |
深度学习时代 | Cost Volume, 3D CNN | MVSNet, CasMVSNet |
神经重建时代 | Implicit Fields, NeRF | Instant-NGP, Nerfacto |
一句话总结:
MVS 是连接“相机几何”与“真实三维世界”的桥梁,
它让我们从二维图像中,真正“看见”了三维世界。
参考资料
- Yao et al., MVSNet: Depth Inference for Unstructured Multi-view Stereo, CVPR 2018.
- Schönberger et al., COLMAP: A General-purpose Structure-from-Motion and MVS Pipeline, CVPR 2016.
- Galliani et al., Massively Parallel Multi-View Stereo Reconstruction by Surface Normal Diffusion, ICCV 2015.
- Zhang et al., PatchMatchNet: Learned Multi-View PatchMatch Stereo, CVPR 2021.
- OpenMVS 官方文档: https://cdcseacave.github.io/openMVS