2. 3D视觉基础:点云数据、深度图、视差图的概念与关系

在进入四相机线扫系统实战之前,必须建立对3D视觉核心数据结构的统一认知。线扫3D相机输出的原始数据并非直接是三维坐标,而是经过一系列转换的中间产物。本章将厘清视差图、深度图与点云数据三者的定义、数学关系及工程应用场景。

2.1 三种数据结构的核心定义

数据类型 维度 存储内容 坐标系 典型文件格式
视差图 (Disparity Map) 2D (H×W) 左右图像对应像素的水平偏移量 (像素) 图像像素坐标系 (u, v) PNG, TIFF (单通道16bit)
深度图 (Depth Map) 2D (H×W) 每个像素到相机光心平面的垂直距离 (mm) 图像像素坐标系 (u, v) PNG, TIFF, EXR
点云 (Point Cloud) 3D (N×3) 三维空间坐标 (X, Y, Z) 及可选属性 (RGB, 强度) 世界坐标系 / 相机坐标系 PLY, PCD, LAS, XYZ
工程要点:线扫3D相机通常直接输出深度图或点云,视差图多出现在双目立体视觉算法中间步骤。但在多相机标定与拼接场景中,理解视差到深度的转换原理有助于诊断Z轴精度问题。

2.2 三者的数学转换关系

三者的转换链路遵循严格的几何投影模型。以理想的双目线扫系统为例,转换流程如下:

  1. 视差 → 深度: 通过三角测量原理,深度 Z 与视差 d 成反比:
    Z = (f × B) / d
    其中 f 为焦距(像素单位),B 为基线长度(mm),d 为视差值(像素)。
  2. 深度 → 点云: 利用相机内参矩阵 K,将深度图反投影到三维空间:
    X = (u - cx) × Z / fx
    Y = (v - cy) × Z / fy
    其中 (cx, cy) 为主点坐标,fx, fy 为焦距分量。
  3. 点云 → 深度图: 通过正向投影(栅格化),将三维点映射回图像平面,插值生成规则网格深度图。
常见误区:深度图存储的是“垂直距离”而非“欧氏距离”。对于线扫系统,深度图每个像素值代表物体表面到激光平面的垂直高度,而非到相机光心的直线距离。在计算抓取位姿时,必须使用点云的欧氏距离。

2.3 数据流与坐标系变换

下图展示了从原始激光条纹提取到最终点云生成的完整数据流,以及各阶段对应的坐标系:

线扫3D数据生成流程与坐标系变换 激光条纹图像 像素坐标系 (u, v) 视差图 像素坐标系 (u, v) 深度图 像素坐标系 (u, v) 点云 相机坐标系 (Xc, Yc, Zc) 立体匹配 三角测量 反投影 + 内参 正向投影(栅格化) 💡 线扫系统通常跳过视差图,直接从相位解包裹或激光三角法计算深度图,再生成点云。 视差图仅在双目线扫或结构光方案中作为中间数据出现。

2.4 工程应用场景对比

应用场景 推荐数据格式 原因
抓取位姿计算 点云 (PLY/PCD) 直接提供三维坐标,支持ICP配准、平面拟合、抓取点计算
缺陷检测(高度测量) 深度图 (TIFF/EXR) 规则网格结构,便于卷积神经网络处理,内存占用小
多相机拼接 点云 + 深度图 点云用于全局配准,深度图用于重叠区域融合权重计算
实时可视化 深度图 可直接映射为伪彩色图,渲染帧率高
标定与校准 视差图 便于诊断立体匹配误差、亚像素精度分析

2.5 四相机线扫系统中的数据组织

在四相机线扫系统中,每个相机独立生成深度图,再通过标定参数统一变换到世界坐标系下拼接为完整点云。数据组织遵循以下原则:

  • 独立采集: 四个相机各自采集激光条纹,生成独立的深度图(分辨率通常为 2048×4096 或更高)。
  • 统一坐标系: 通过多相机标定,将四个深度图映射到同一个世界坐标系(通常以传送带平面为 Z=0)。
  • 拼接融合: 在重叠区域使用加权平均或中值滤波,消除接缝处的Z轴跳变。
  • 最终输出: 输出为一张完整的深度图或一个合并后的点云文件,供上位机视觉引导算法使用。
实战建议: 在四相机系统中,建议保留每个相机的原始深度图作为中间结果。当拼接点云出现异常时,可以单独检查每个相机的深度图质量,快速定位是哪个相机标定偏差或激光条纹提取异常。