第 12 章 深度估计 (Depth Estimation)
核心结论
-
对极几何(§12.1):两视图几何约束;基础 / 本质矩阵;视差与深度的反比关系。
-
稀疏对应(§12.2):特征点匹配 + 三角化 → 稀疏深度图。
-
稠密对应(§12.3):像素级匹配;立体匹配(SGM / SGBM / 深度学习)。
-
局部方法(§12.4):滑动窗口 / 块匹配;快速但深度边缘模糊。
-
全局优化(§12.5):MRF / 图割 / SGM;精度高但慢。
-
深度学习方法(§12.6):RAFT-Stereo / CREStereo / FoundationStereo;当前 SOTA。
-
多视图立体 (MVS)(§12.7):多张图像重建稠密深度;COLMAP / OpenMVS。
-
单目深度估计(§12.8):从单图估计深度;DPT / MiDaS / Depth Anything。
|
本章主旨
本章是"深度估计章"——从图像恢复每个像素的深度。深度是 3D 重建 / 自动驾驶 / AR 的核心;理解后才能选对算法(传统立体匹配 vs 深度学习 vs MVS vs 单目深度)。 |
一、核心概念
本章围绕 8 个核心概念展开:对极几何 → 稀疏 → 稠密 → 局部 → 全局 → 深度学习 → MVS → 单目深度。
| 概念 | 定义 + 重要性 | 实现提示 |
|---|---|---|
对极几何 |
两视图约束;视差与深度反比。 |
§12.1;立体匹配的理论基础。 |
稀疏对应 |
特征点匹配 + 三角化;稀疏深度图。 |
§12.2;SfM / SLAM 副产品。 |
稠密对应 |
像素级匹配;立体匹配 SGM / SGBM。 |
§12.3;3D 重建 / AR / 自动驾驶。 |
局部方法 |
滑动窗口 / 块匹配;快速但边缘模糊。 |
§12.4;实时应用。 |
全局优化 |
MRF / 图割 / SGM;精度高但慢。 |
§12.5;高精度需求。 |
深度学习 |
RAFT-Stereo / CREStereo;当前 SOTA。 |
§12.6;GPU 实时高精度。 |
多视图立体 (MVS) |
多张图像重建稠密深度;COLMAP。 |
§12.7;离线 3D 重建。 |
单目深度估计 |
从单图估计深度;DPT / MiDaS / Depth Anything。 |
§12.8;无标定深度。 |
二、详细笔记
2.1 对极几何与视差 (Epipolar Geometry & Disparity)
What:两视图的几何约束;视差(左右像素 x 差)与深度反比。
Why:立体匹配的理论基础;理解后才能设计匹配算法。
How:
视差-深度关系(§12.1):
-
Z:深度;f:焦距;B:基线(两相机距离);d:视差。
|
视差与深度的关系
|
When:立体匹配;3D 重建;自动驾驶;AR。
Example:双目相机(基线 10 cm,焦距 1000 像素)→ 100 米深度对应 0.1 像素视差。
2.2 稀疏对应 (Sparse Correspondence)
What:特征点匹配 + 三角化得到稀疏深度图。
Why:SfM / SLAM 副产品;高效但稀疏。
How:
稀疏深度获取(§12.2):
-
特征检测:SIFT / ORB(§7)。
-
跨图匹配:特征描述子最近邻。
-
本质矩阵估计:RANSAC + 5 点法。
-
三角化:每对匹配点 → 3D 点。
|
稀疏 vs 稠密深度
|
When:SfM;SLAM;3D 重建初始化。
Example*:cv2.triangulatePoints;COLMAP 增量 SfM 输出稀疏点云。
2.3 稠密立体匹配 (Dense Stereo Matching)
What:像素级对应 → 稠密视差图 → 深度图。
Why:自动驾驶 / AR / 机器人需要稠密深度。
How:
经典立体匹配算法(§12.3-§12.5):
-
块匹配:滑动窗口;SAD / SSD / NCC;快速但边缘模糊。
-
SGM / SGBM:半全局;扫描线优化;平衡精度 / 速度。
-
图割:全局最优;慢但精度高。
深度学习立体匹配(§12.6):
-
RAFT-Stereo(2021):迭代优化;当前 SOTA。
-
CREStereo(2022):级联递归。
-
FoundationStereo(2024):基础模型。
|
立体匹配的"3 难"
|
When:自动驾驶(双目 / 多目立体);AR 深度感知;3D 扫描。
Example*:cv2.StereoSGBM_create();RAFT-Stereo 仓库;Open3D 提供多视图立体。
2.4 多视图立体 (Multi-View Stereo, MVS)
What:用多张(>2)图像重建稠密深度。
Why:多视角减少遮挡 / 误匹配;MVS 比双目立体更鲁棒。
How:
MVS 流程(§12.7):
-
深度图初始化:SfM 稀疏点 + 单应扩展。
-
光度一致性:把图像投影到当前视图 + 比较。
-
正则化:相邻像素深度平滑。
-
深度融合:多视图深度融合成稠密点云。
|
MVS 的开源工具
|
When:文物 3D 数字化;街景 3D 重建;电影特效;手机 3D 扫描。
Example*:colmap patch_match_stereo;openMVS;Meshroom GUI。
2.5 单目深度估计 (Monocular Depth Estimation)
What:从单张图像估计每个像素的深度——无需立体 / SfM。
Why:单目相机成本低;很多场景只有单目(老照片 / 视频)。
How:
深度学习方法(§12.8):
-
DPT(2021):Vision Transformer 编码 + 渐进解码。
-
MiDaS(2022):混合数据集训练;零样本泛化强。
-
Depth Anything(2024):大规模合成数据预训练 + 伪标签微调;SOTA。
-
Metric3D v2(2024):真实度量深度(非相对)。
|
单目深度的不确定性
|
When:单目相机 AR / 自动驾驶;老照片 3D 化;视频深度估计。
Example*:pip install timm + MiDaS / Depth Anything 模型;transformers 库。
三、关键图表
视觉图表
四、思维导图
mindmap
root((第 12 章 深度估计))
对极几何
视差深度
基础矩阵
稀疏对应
特征匹配
三角化
稠密匹配
块匹配
SGM
图割
深度学习
RAFTStereo
CREStereo
MVS
多视图
COLMAP
单目深度
MiDaS
DepthAnything
五、重点与易错点
-
视差与深度反比:立体相机几何核心公式。
-
SGM 是经典 SOTA:实时(10+ FPS)+ 较好精度;OpenCV 直接可用。
-
RAFT-Stereo 是深度学习 SOTA:GPU 实时;优于传统方法。
-
单目深度尺度模糊:模型输出"近 / 远"易;"几米"难;需额外先验。
-
Depth Anything 是单目深度 SOTA(2024):零样本泛化强;MIT-HAN-Lab 开源。
-
MVS 需要 SfM 初始化:用 SfM 稀疏点 + 单应扩展。
-
深度学习需要 GPU:CPU 推理慢;适合服务端 / 自动驾驶。
-
跨章衔接:第 11 章 SLAM 提供稀疏深度;第 13 章 3D 重建用稠密深度 / MVS;第 14 章 IBR 用深度做新视角合成。