2. 3D视觉基础:深度图、点云、视差、相机坐标系、内参外参等核心概念与数学基础
在进入深度相机选型与3D视觉检测应用之前,必须先建立一套统一的语言体系。无论是结构光、ToF(飞行时间)还是双目立体视觉,最终输出的数据都离不开深度图、点云、视差以及相机几何模型。本章将围绕这些核心概念展开,重点厘清它们之间的数学关系与物理含义,为后续的相机选型、标定、算法调试和系统集成打下坚实基础。我们将从像素坐标系出发,逐步推导到世界坐标系,并解释内参、外参如何将二维图像与三维空间精确对应。
2.1 深度图与视差:从2.5D到3D的桥梁
深度图(Depth Map)是一种灰度图像,其中每个像素值代表该点与相机光心之间的垂直距离(通常以毫米为单位)。它本质上是2.5D数据——虽然具有Z方向信息,但依然受限于图像网格结构,无法表达遮挡关系或自由旋转视角。深度图是大多数深度相机的直接输出格式,例如Intel RealSense的深度流、Kinect的深度帧。
视差(Disparity)是双目立体视觉中的核心概念。当两个水平放置的相机同时观察同一场景时,空间中的一点P在左图像上的投影为x_left,在右图像上的投影为x_right,视差定义为d = x_left - x_right。根据三角测量原理,深度Z与视差d成反比关系:
Z = (f * B) / d
其中f为相机焦距(像素单位),B为左右相机光心之间的基线距离。视差图经过转换即可得到深度图。值得注意的是,视差与深度并非线性关系——近距离物体视差大、深度分辨率高;远距离物体视差小、深度分辨率急剧下降。这决定了双目相机在近距离(0.3m~3m)具有优势,而远距离精度不如ToF。
| 数据形式 | 维度 | 物理含义 | 典型应用 |
|---|---|---|---|
| 深度图 | 2.5D | 每个像素存储Z值(mm) | 背景分割、遮挡检测 |
| 视差图 | 2D | 左右图像对应点水平偏移量 | 立体匹配、深度估计中间量 |
| 点云 | 3D | 空间离散点集(X,Y,Z) | 三维测量、SLAM、逆向工程 |
2.2 相机坐标系与内参矩阵:像素如何映射到相机空间
相机坐标系(Camera Coordinate System)以相机光心为原点,Z轴指向相机前方,X轴向右,Y轴向下(遵循右手定则的变体)。图像坐标系的原点位于图像中心,而像素坐标系的原点位于图像左上角。从像素坐标(u,v)到相机坐标(Xc,Yc,Zc)的转换由内参矩阵K描述:
[u] [fx 0 cx] [Xc]
[v] = [0 fy cy] [Yc]
[1] [0 0 1] [Zc]
其中fx = f/dx,fy = f/dy,dx和dy分别为单个像素在x和y方向的物理尺寸(mm/pixel),cx和cy为主点坐标(通常接近图像中心)。内参矩阵是相机的固有属性,由镜头焦距和传感器尺寸决定,但会因温度、振动等因素发生微小变化,因此需要定期标定。
实际镜头还存在畸变,包括径向畸变(k1, k2, k3)和切向畸变(p1, p2)。畸变会导致直线在图像中变弯,尤其在图像边缘区域。标定过程通常使用棋盘格或圆点标定板,通过OpenCV或Matlab工具箱计算内参与畸变系数。未校正畸变的深度图直接转点云,会导致边缘点云位置偏移,在精密测量中必须避免。
2.3 外参矩阵:从相机坐标系到世界坐标系
外参矩阵(Extrinsic Matrix)描述相机在世界坐标系中的位姿,由旋转矩阵R(3x3)和平移向量t(3x1)组成。其作用是将相机坐标系下的点转换到世界坐标系:
[Xw] [R | t] [Xc]
[Yw] = [ ] [Yc]
[Zw] [0 1] [Zc]
[1 ] [1 ]
外参矩阵的物理意义是:世界坐标系先经过旋转R,再经过平移t,与相机坐标系重合。在机器人视觉引导场景中,外参通常通过手眼标定获得——即求解相机与机器人末端执行器之间的固定变换关系。常见的标定方法包括AX=ZB问题求解,使用棋盘格在机器人工作空间内多次移动并采集图像。
外参的精度直接影响3D测量的绝对精度。例如,在机器人抓取任务中,如果外参标定误差为1mm,那么相机识别到的物体位置在机器人坐标系中也会有1mm的偏差,可能导致抓取失败。因此,外参标定是3D视觉系统部署中最关键的步骤之一。
2.4 点云生成与处理:从深度图到可计算的三维数据
点云(Point Cloud)是三维空间中离散点的集合,每个点包含坐标(X,Y,Z)以及可选的强度、颜色或法向量信息。根据深度图生成点云的流程如下:
- 输入深度图:获取每个像素的深度值Z(单位:mm)
- 内参映射:利用内参矩阵将像素坐标(u,v)转换为相机坐标(Xc,Yc,Zc)
- 外参变换:若需要世界坐标,则应用外参矩阵[R|t]
- 滤波与降采样:去除无效点(深度为0或NaN)、离群点,使用体素滤波器降低点密度
- 后续处理:法向量估计、点云配准、分割、特征提取等
点云数据量通常较大——一个VGA分辨率(640x480)的深度图可生成30万个点,每个点若包含XYZ+RGB+法向量,约需48字节,单帧数据量约14MB。在实时检测系统中,必须考虑点云处理的算力开销。常用策略包括:ROI裁剪(只处理感兴趣区域)、体素降采样(将空间划分为固定大小的立方体,每个立方体保留一个代表点)、以及直通滤波(按坐标范围裁剪)。
| 点云类型 | 特点 | 适用场景 |
|---|---|---|
| 有序点云 | 保留图像网格结构,索引快速 | 深度相机直接输出,适合快速处理 |
| 无序点云 | 点无固定排列,需KD-Tree加速 | 激光雷达、多视角拼接后的数据 |
| 彩色点云 | XYZ+RGB,便于语义分割 | 需要颜色信息的检测任务 |
2.5 常见误区与总结复盘
在3D视觉基础概念的学习和工程应用中,以下误区值得特别关注:
- 混淆深度与距离:深度图存储的是Z轴坐标(垂直距离),而非到相机的欧氏距离。对于大视场角镜头,边缘像素的欧氏距离可能远大于Z值。
- 忽略畸变校正:未校正畸变的深度图在边缘区域会产生明显的3D位置误差,尤其在广角镜头下。建议在深度图生成点云前,先对深度图进行畸变校正。
- 外参标定不充分:仅使用少量标定图像或标定板姿态单一,会导致外参解算退化。建议至少采集15~20组覆盖工作空间的图像。
- 点云坐标系不统一:在多相机系统中,各相机的点云必须统一到同一世界坐标系下才能拼接。这需要精确的外参标定和同步触发机制。
总结:深度图、视差、点云是3D视觉的三种核心数据形态,它们通过相机内参和外参相互关联。内参描述像素与相机坐标的映射关系,外参描述相机与世界坐标的位姿关系。在实际项目中,建议先明确最终需要的是深度图还是点云,再选择合适的相机类型和标定流程。对于精密测量应用,务必重视畸变校正和外参标定质量;对于实时性要求高的应用,应提前规划点云降采样和ROI策略。