什么是深度图(Depth Map)

一句话:

深度图是一张和彩色图同样大小的 "距离地图",

每个像素存的不是颜色,而是 "这个位置对应的物体离相机有多远"。


一、通俗理解

普通彩色图:每个像素存 (R, G, B) 三个值,记录 "这个位置是什么颜色"。

深度图:每个像素存 1 个距离值,记录 "这个位置的物体离相机有多远"。

plaintext

彩色图像素 (200, 150) = (255, 0, 0)  → 这个位置是红色
深度图像素 (200, 150) = 1500        → 这个位置的物体离相机1500mm = 1.5米

你可以把深度图想象成一张 "地形图":越亮的地方越近,越暗的地方越远(或者反过来,取决于可视化方式)。


二、深度图的数据格式

最常用:uint16(16 位无符号整数),单位毫米

表格

像素值 含义
0 无效深度(匹配失败 / 超出量程 / 被遮挡)
500 距离 500mm = 0.5 米
1500 距离 1500mm = 1.5 米
10000 距离 10000mm = 10 米
65535 uint16 最大值,约 65 米(通常用不到这么远)
  • OpenCV 中格式:CV_16UC1(16 位无符号,单通道);
  • 这是 Realsense、OpenNI、ROS 等绝大多数框架的默认格式。

另一种:float32(32 位浮点数),单位米

表格

像素值 含义
0.0 或 NaN 无效深度
0.5 0.5 米
1.5 1.5 米
  • PCL 点云库、部分研究代码常用;
  • 精度更高,但占用内存是 uint16 的两倍。

三、深度图长什么样

原始深度图(直接显示)

  • 因为值通常是 0~10000,而显示范围是 0~255,所以直接看几乎全黑
  • 只有非常近的物体(<255mm)能看到一点灰度。

伪彩色可视化(常用)

把深度值映射成彩虹色:

  • 近处 → 红 / 黄 / 暖色;
  • 远处 → 蓝 / 紫 / 冷色;
  • 无效值 → 黑色。

plaintext

近处的桌子 → 红色/黄色
远处的墙   → 蓝色/紫色
天空/失效  → 黑色

你在 Realsense Viewer、ROS Rviz 里看到的彩色深度图,都是伪彩色映射后的效果,不是深度图的原始数据。


四、深度图从哪来

表格

来源 原理
双目立体匹配 左右图像匹配→视差→Z=f×B/d
结构光 投射编码图案→图案变形解码→三角测距
ToF 发射调制光→测相位差 / 飞行时间→距离
激光雷达投影 3D 点云按角度投影到 2D 平面→深度图
单目深度估计 AI 模型从彩色图回归深度(估计值,非物理测量)

前三种是物理测量,有绝对尺度;最后一种是AI 估计,精度低、可能无尺度。


五、深度图和点云的关系

深度图可以直接转成 3D 点云,公式:

plaintext

对深度图每个像素 (u, v),深度值 Z:
X = (u - cx) × Z / fx
Y = (v - cy) × Z / fy
Z = Z

其中 (fx, fy) 是焦距,(cx, cy) 是主点(相机内参)。

plaintext

深度图 (H×W 个距离值) → 点云 (H×W 个三维点)

反过来,点云也可以投影回深度图(按视角渲染)。

深度图是2D 组织的 3D 数据—— 既有图像的规则网格结构(方便用 CNN 处理),又有 3D 距离信息(方便做几何计算)。这是它最大的价值。


六、深度图的用途

表格

用途 说明
障碍物检测 深度值小于阈值 = 近处有障碍物
3D 重建 深度图 + 彩色图→带纹理的 3D 模型
视觉伺服 / 抓取 知道物体 3D 位置,引导机械臂
背景分割 按深度抠图(近处 = 前景,远处 = 背景)
SLAM / 导航 深度图转点云,做建图定位
人机交互 手势识别、人体姿态(知道手的 3D 位置)
AR/VR 把虚拟物体放在真实空间的正确深度位置

七、深度图 vs 彩色图 vs 视差图

表格

图类型 每个像素存什么 有没有颜色 有没有距离
彩色图 R, G, B
深度图 距离值 (mm/m)
视差图 视差值 (像素) 间接(可转深度)
RGBD 图 R, G, B, Depth

RGBD 就是 "彩色图 + 深度图" 的组合,每个像素既有颜色又有距离,是深度相机最常用的输出形式。


八、一句话总结

深度图就是一张 "距离地图",和彩色图同样大小,每个像素存的是该位置物体到相机的距离(通常 uint16 毫米,0 = 无效)。它来自双目 / 结构光 / ToF 等物理测量,可以直接转成 3D 点云,是连接 2D 图像和 3D 世界的桥梁 —— 既有图像的规则结构,又有 3D 的几何信息。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐