深度估计是计算机视觉中的重要任务,它涉及从二维图像中获取三维深度信息。要理解深度估计,需要掌握计算机视觉和深度学习领域的一系列基础知识。下面我们详细介绍这些知识点。
一、计算机视觉基础
1.1. 针孔相机模型
相机模型,是指采用一个几何模型来描述三维世界中的坐标点映射到二维图像平面的过程。其中,最简单的模型就是针孔相机模型。
针孔相机模型中一共涉及到四个坐标系,分别为:
- 世界坐标系(world)
- 相机坐标系(camera)
- 图像坐标系(image)
- 像素坐标系(pixel)
相机模型描述的就是这四个坐标系中间的转换关系。

为了获得更好的成像结果,相机前方加了透镜。透镜的加入会对成像过程中光线的传播产生新的影响,这种影响我们称之为畸变。结合畸变的纠正,我们就可以找到相机坐标系中某点在像素平面上的正确位置。
小提示: 理解四个坐标系之间的转换关系是掌握针孔相机模型的核心,建议动手画一遍投影流程图。
常见问题: 什么是畸变?如何纠正?
- 畸变是由于透镜的光学特性导致图像发生变形,主要有径向畸变和切向畸变。纠正方法通常利用标定得到的畸变参数,通过重映射或数学公式将畸变点校正到理想位置。
1.2. 对极几何
对极几何是研究立体视觉中重要的理论,描述了两张图片之间存在的几何对应关系。

本质矩阵和基本矩阵就反映了两个视图的对极几何约束。如果知道一副图像中的某个点和基本矩阵,就能求得另一张图像上的对应点所在的对极线,这样就约束了两视角下图像中的空间位置关系。
我们可以将左右相机的坐标系旋转至在同一平面(共面),并计算视差图。

根据视差,我们就可以估计像素与相机之间的距离,也就是深度。
小提示: 对极几何常用于立体匹配和运动恢复结构(SfM),理解本质矩阵和基本矩阵的区别有助于后续学习。
常见问题: 视差与深度的关系是什么?
- 在双目立体视觉中,视差越大,物体离相机越近;视差越小,物体越远。深度与视差成反比关系,通过相机基线长度和焦距可以精确计算。
1.3. 图像重构原理
图像重构是图像领域的重要应用,也是3D视觉中重要的一个知识点。在基于深度学习的深度估计方法中,会采用图像重构损失来作为其中的约束条件,如自监督学习方法。
常见的方法有两种:
- 前向warping:将源图像中的像素根据深度映射到目标图像位置。
- 反向warping:从目标图像出发,根据深度找到源图像中对应的像素点。
正向Warping
反向Warping
小提示: 反向warping通常更常用,因为它能避免输出图像中间出现空洞。
常见问题: 前向warping和反向warping哪个效果更好?为什么?
- 反向warping效果更好,因为它从目标图像坐标系出发,每个输出像素都能找到对应的输入像素,不会产生空洞。前向warping则可能导致多个输入像素映射到同一个输出位置,或有些输出位置没有输入。
二、深度学习基础
2.1. 相关网络模型
在深度估计中,常用的网络模型有:
- ResNet:其思想是使用恒等映射直接将前一层传到更深的网络层,解决梯度消失问题。
- UNet:深度估计中一个比较常用的网络结构,包括下采样和上采样过程,适合像素级预测任务。
- Autoencoder:可以用来提取图像的特征,其训练方式是无监督的。
ResNet结构示意
UNet结构示意
小提示: 在深度估计任务中,UNet及其变体(如Monodepth2使用的编码器-解码器结构)非常常见,因为其能保留空间信息。
常见问题: 为什么深度估计常使用UNet而不是更深的ResNet?
- 深度估计需要输出与原图相同尺寸的深度图,UNet通过跳跃连接保留了高分辨率特征,而ResNet主要用于分类任务,输出是低分辨率特征图,需要额外上采样模块。
2.2. 深度估计中的损失函数
损失函数是深度学习中的重要环节,如何设计或选择合适的损失函数,是深度学习的关键。深度估计中,比较常见的损失函数有:
- 用于计算图像重构误差 / 图像相似度:如L1损失、SSIM损失等,衡量重建图像与原始图像的差异。
- 用于计算像素梯度的平滑度:如边缘感知平滑损失,鼓励深度图在物体内部平滑,在边缘处保持锐利。
- 交叉熵损失函数:用于有监督学习,当深度值被离散化为类别时使用。
小提示: 自监督深度估计通常组合使用重构损失和平滑度损失,监督方法则常用L1或L2损失。
常见问题: 重构损失是否可以直接使用像素差(MSE)?
- 可以,但MSE对异常值敏感,且无法保留图像结构信息。实际中常用L1损失结合SSIM来更好地衡量图像相似度。
2.3. 深度估计的评价指标
深度估计的评价指标有很多,常见的包括:
- AbsRel:绝对相对误差,衡量预测深度与真实深度的平均相对偏差。
- SqRel:平方相对误差,放大较大误差的影响。
- RMSE:均方根误差,常用于评估整体精度。
- 其他指标如δ1、δ2、δ3(阈值准确率)等也经常使用。

小提示: 在对比不同算法时,通常关注AbsRel和RMSE两个指标,同时结合阈值准确率综合评价。
常见问题: 为什么有时AbsRel很小但RMSE很大?
- AbsRel是相对误差,对远距离物体误差不敏感;RMSE是绝对误差,对大尺度误差惩罚更重。若模型在近距离精度高但远距离偏差大,就会出现AbsRel小、RMSE大的情况。
深度估计的理论基础涵盖了相机成像几何、立体视觉约束、图像重建以及深度神经网络。掌握这些知识将帮助你更好地理解和设计深度估计算法。
