深度感知基础:深度图像、点云、视差、深度图与RGB-D数据的基本概念与表示方法

深度感知技术是连接二维视觉与三维世界的桥梁。在物体尺寸测量与体积计算任务中,我们最终需要的是物体在物理空间中的真实几何信息,而这一切都建立在对深度数据基本概念的准确理解之上。本章将系统梳理深度图像、点云、视差、深度图与RGB-D数据这五类核心概念的定义、数学表示、相互转换关系以及工程应用中的存储与处理要点。理解这些基础表示方法,是后续进行相机标定、深度恢复、点云配准和体积计算的前提。

深度感知数据表示体系与转换关系 视差图 (Disparity) d = x_left - x_right 单位:像素 (pixel) 与深度成反比 需已知基线B和焦距f 深度图 (Depth Map) Z = f·B / d 单位:毫米 (mm) 每个像素存深度值 16bit 或 32bit float 深度图像 2D矩阵,行列索引 像素值 = 深度距离 与相机内参强相关 可视为深度图的可视化 RGB-D 数据 对齐的彩色图 + 深度图 分辨率需一致 常用于深度学习 可融合颜色与几何 点云 (Point Cloud) N×3 或 N×6 矩阵 (x, y, z) 或 (x,y,z,r,g,b) 无序、稀疏、密度不均 需体素滤波/下采样 转换关系 深度图 + 内参 → 点云 点云投影 → 深度图 视差 → 深度 → 点云 RGB-D → 彩色点云 Z=fB/d 可视化 +彩色图 反投影 核心公式:Z = f·B / d | x = (u - cx)·Z / fx | y = (v - cy)·Z / fy 其中 (u,v) 为像素坐标,(cx,cy) 为主点,fx,fy 为归一化焦距

2.1 视差与深度图:从双目几何到距离估计

核心原理:视差(Disparity)是双目立体视觉中最基础的中间量。当两个水平放置的相机同时观察同一三维点时,该点在左右图像中的像素横坐标存在差异,这个差异值即为视差 d = x_left - x_right。在理想的双目系统中,视差与物体深度 Z 满足反比关系:Z = f·B / d,其中 f 为相机焦距(像素单位),B 为左右相机光心之间的基线距离。这一公式的物理意义在于:物体越近,视差越大;物体越远,视差趋近于零。深度图(Depth Map)则是将每个像素的视差值通过上述公式换算为物理距离后,形成的一张与原始图像分辨率相同的单通道图像,每个像素值直接代表该位置到相机平面的垂直距离。

工程表示与存储:深度图通常以 16 位无符号整数(单位毫米)或 32 位浮点数(单位米)存储。16 位格式可表示 0~65535mm 的范围,适合室内场景;32 位浮点则用于需要更高精度或更大量程的场景。在 OpenCV 中,深度图常用 CV_16UC1 或 CV_32FC1 类型。需要注意的是,深度图中的无效像素(如遮挡区域、反光表面)通常用 0 或 NaN 表示,处理时必须先进行掩码操作。

经验提醒:在双目系统中,视差计算的质量直接决定深度精度。实际工程中,视差图往往存在空洞和噪声,建议先对视差图进行中值滤波或置信度评估,再转换为深度图。此外,基线 B 越大,近距精度越高,但盲区也越大;基线越小,量程越大但精度下降。

2.2 深度图像:二维矩阵中的三维信息

核心原理:深度图像(Depth Image)本质上是一个二维矩阵,其行列索引对应图像像素坐标 (u, v),矩阵元素值代表该像素位置处的深度距离。与灰度图不同,深度图像的像素值不是光照强度,而是几何距离。深度图像与相机内参矩阵 K 紧密关联——通过内参可以将深度图像反投影为三维点云。内参矩阵 K 包含焦距 fx、fy 和主点 cx、cy,这些参数决定了像素坐标与相机坐标之间的映射关系。

反投影计算流程:给定深度图像上一点 (u, v) 及其深度值 Z,其在相机坐标系下的三维坐标 (X, Y, Z) 可通过以下步骤计算:

  1. 计算归一化坐标:x_norm = (u - cx) / fx,y_norm = (v - cy) / fy
  2. 乘以深度值:X = x_norm × Z,Y = y_norm × Z
  3. Z 值保持不变,得到三维点 (X, Y, Z)

这一过程称为反投影(Back-projection),是深度图转点云的核心操作。反之,将三维点投影到图像平面则称为投影(Projection),用于点云转深度图或彩色图对齐。

数据类型维度像素含义典型位深适用场景
视差图2D (H×W)像素横坐标差16bit int双目匹配中间结果
深度图2D (H×W)物理距离 (mm/m)16bit / 32bit尺寸测量、避障
深度图像2D (H×W)深度值可视化8bit 灰度显示、调试
点云N×3 或 N×6三维坐标 (x,y,z)float32体积计算、建模
RGB-DH×W×4颜色+深度8bit+16bit深度学习、SLAM

2.3 点云:无序的三维坐标集合

核心原理:点云(Point Cloud)是三维空间中离散点的集合,每个点包含三维坐标 (x, y, z),可选地包含颜色 (r, g, b)、法向量、强度等信息。与深度图的规则网格结构不同,点云是无序的——点的排列顺序不携带空间信息,且密度分布不均匀。这一特性使得点云处理算法(如最近邻搜索、体素滤波)与图像处理算法有本质区别。在物体体积计算中,点云是最终用于拟合、分割和测量的数据形态。

点云获取与预处理:点云可通过深度图反投影、激光雷达扫描、结构光或 ToF 相机直接获取。原始点云通常包含离群点和噪声,需经过以下预处理流程:

  • 统计滤波:去除远离主体分布的孤立点(如飞溅噪声)
  • 体素下采样:用体素网格均匀化点云密度,减少计算量
  • 地面分割:使用 RANSAC 平面拟合去除地面点,保留目标物体
  • 欧式聚类:按距离将点云分割为不同物体实例
案例拆解:假设使用 Intel RealSense D435 相机测量一个纸箱的体积。相机输出 640×480 的 RGB-D 数据。首先将深度图反投影为点云(约 30 万点),经过体素下采样(体素边长 5mm)后点云缩减至约 8 万点。接着用 RANSAC 拟合地面平面(距离阈值 10mm),移除地面点后剩余纸箱点云约 2 万点。最后通过欧式聚类(邻域半径 20mm)提取纸箱点云,计算其包围盒尺寸为 412mm × 305mm × 265mm,体积约 0.0334 m³。实测纸箱尺寸为 410×300×260mm,误差在 2% 以内,满足物流计费需求。

2.4 RGB-D 数据:颜色与几何的融合

核心原理:RGB-D 数据是同一时刻、同一视角下对齐的彩色图像与深度图像的组合。其中 RGB 图像提供纹理和颜色信息,深度图提供几何距离信息。RGB-D 数据的核心价值在于:颜色信息辅助物体识别与语义分割,深度信息提供精确的几何尺度,两者结合可实现更鲁棒的物体检测与尺寸估计。在深度相机(如 Kinect、RealSense)中,RGB 传感器与深度传感器通常存在物理偏移,因此出厂前需进行联合标定,将深度图对齐到彩色图坐标系(或反之)。

对齐与融合方法:对齐过程使用相机外参(旋转矩阵 R 和平移向量 t)将深度图重投影到彩色相机坐标系。具体步骤为:

  1. 将深度图反投影为三维点云(使用深度相机内参)
  2. 通过外参将点云变换到彩色相机坐标系:P_color = R × P_depth + t
  3. 使用彩色相机内参将变换后的点投影到彩色图像平面,得到对齐后的深度图

对齐后的 RGB-D 数据可直接用于训练卷积神经网络(如 PointNet++、RGB-D 语义分割模型),也可生成彩色点云(XYZRGB)用于可视化与三维重建。

常见误区:初学者常混淆深度图与视差图。视差图是中间量,依赖相机基线参数;深度图是物理量,可直接用于测量。另外,RGB-D 数据中的深度图与彩色图分辨率可能不同(如深度图 640×480,彩色图 1920×1080),必须统一分辨率后才能进行像素级融合。切勿直接使用未对齐的 RGB-D 数据进行尺寸测量,否则会产生系统性偏差。

2.5 数据表示对比与选型指南

在实际项目中,选择哪种深度数据表示方式取决于任务需求。下表从数据量、精度、处理复杂度三个维度进行对比:

表示方式数据量精度特点处理复杂度推荐场景
视差图小 (H×W×2B)受匹配算法影响低立体匹配算法调试
深度图中 (H×W×2~4B)毫米级(近距离)低尺寸测量、避障
点云大 (N×12~24B)取决于传感器高体积计算、三维重建
RGB-D大 (H×W×4B)综合精度高中深度学习、SLAM

选型建议:若仅需测量物体长宽高,使用深度图配合内参即可完成;若需计算不规则物体的体积(如堆叠的碎石),必须使用点云进行表面重建;若需在复杂背景下识别物体并测量,则优先选择 RGB-D 数据。在工业视觉中,通常将深度图与点云结合使用——深度图用于快速 ROI 提取,点云用于精确拟合。

总结复盘:本章的核心逻辑链为:视差图 → 深度图 → 深度图像 → 点云 → RGB-D。视差是原始观测,深度是物理量,深度图像是可视化形式,点云是几何处理载体,RGB-D 是融合数据。掌握这五种表示之间的转换关系(尤其是深度图与点云的双向转换),是后续章节进行相机标定、点云配准和体积计算的基础。建议读者在本地使用 Open3D 或 PCL 库,将一张深度图转换为点云并可视化,以加深对数据表示的理解。