2、双目视觉基础:针孔相机模型、坐标系转换、内参外参、畸变模型与双目成像几何

双目测距的误差分析与校准方法,其根基在于对成像过程的精确数学建模。若模型本身存在偏差,后续的立体匹配与三角测量将产生系统性误差。本章将系统梳理双目视觉的五大核心模块:针孔相机模型、坐标系转换、内外参数、畸变模型以及双目成像几何。理解这些基础概念,是后续进行误差溯源与标定优化的前提。

双目视觉成像链路与坐标系关系 世界坐标系 (Xw, Yw, Zw) 相机坐标系 (Xc, Yc, Zc) 图像坐标系 (x, y) 物理单位 像素坐标系 (u, v) 像素单位 外参R,t 内参fx,fy,cx,cy 像素化 畸变模型 径向畸变 k1,k2,k3 切向畸变 p1,p2 双目成像几何 基线 B、焦距 f、视差 d Z = f·B / d 极线约束(对极几何) 左相机光心 OL、右相机光心 OR、空间点 P P 在左右像面上的投影 pL、pR 满足极线方程 匹配搜索从二维降为一维,提升效率与精度 立体校正目标 左右图像行对齐(y 坐标一致) 视差 d = uL - uR 仅沿水平方向 校正后可直接用一维搜索匹配

2.1 针孔相机模型与投影方程

针孔相机模型是计算机视觉中最基础、最常用的成像近似模型。它假设光线沿直线传播,空间中的三维点通过光心(投影中心)投影到二维像平面上。该模型忽略了镜头厚度与光学像差,将成像过程简化为一个线性映射关系。

设空间点 P 在世界坐标系下的齐次坐标为 Pw = [Xw, Yw, Zw, 1]T,其在像素坐标系下的投影点 p = [u, v, 1]T 满足:

Zc · [u, v, 1]^T = K · [R | t] · [Xw, Yw, Zw, 1]^T

其中,K 为内参矩阵,[R | t] 为外参矩阵(旋转与平移),Zc 为空间点在相机坐标系下的深度值。内参矩阵 K 的具体形式为:

K = [ fx  0  cx ]
    [ 0  fy  cy ]
    [ 0   0   1 ]

fx、fy 分别为 x、y 方向上的归一化焦距(单位:像素),cx、cy 为主点坐标(光轴与像面的交点)。该模型将三维空间到二维图像的映射分解为刚体变换(外参)与透视投影(内参)两个阶段。

核心要点:针孔模型是线性模型,实际镜头存在畸变,因此必须先对图像做畸变校正,再使用针孔模型进行投影计算。在双目系统中,左右相机各自拥有独立的内参,但共享同一世界坐标系下的外参关系。

2.2 坐标系转换链路

双目视觉涉及四个坐标系:世界坐标系、相机坐标系、图像坐标系、像素坐标系。理解它们之间的转换关系,是标定与测距的基础。

坐标系 单位 原点位置 转换关系
世界坐标系 物理单位(mm/m) 人为定义 通过外参 R,t 转换到相机坐标系
相机坐标系 物理单位(mm/m) 光心位置 通过内参 K 投影到图像坐标系
图像坐标系 物理单位(mm) 光轴与像面交点 通过像素尺寸 dx,dy 转换到像素坐标系
像素坐标系 像素(pixel) 图像左上角 最终输出图像坐标 (u,v)

外参矩阵描述了相机在世界坐标系中的位姿,包含旋转矩阵 R(3×3)和平移向量 t(3×1)。旋转矩阵由三个欧拉角(或四元数)参数化,平移向量表示相机光心在世界坐标系中的位置。在双目系统中,通常以左相机坐标系为参考,右相机相对左相机的外参为 Rrl、trl。

2.3 畸变模型与校正

实际镜头并非理想针孔,光线通过镜头时会产生非线性畸变。最常见的畸变模型为布朗-康拉迪(Brown-Conrady)模型,包含径向畸变与切向畸变两部分。

径向畸变由镜头曲面形状引起,表现为图像点沿径向向内(桶形畸变)或向外(枕形畸变)偏移。其数学模型为:

x_distorted = x * (1 + k1*r^2 + k2*r^4 + k3*r^6)
y_distorted = y * (1 + k1*r^2 + k2*r^4 + k3*r^6)

其中 r² = x² + y²,(x, y) 为归一化平面坐标,k1、k2、k3 为径向畸变系数。对于普通镜头,通常只取 k1、k2;对于广角或鱼眼镜头,需要引入 k3。

切向畸变由镜头与成像平面不平行引起,表现为图像点沿切线方向偏移:

x_distorted = x + [2*p1*x*y + p2*(r^2 + 2*x^2)]
y_distorted = y + [p1*(r^2 + 2*y^2) + 2*p2*x*y]

p1、p2 为切向畸变系数。完整的畸变模型包含 5 个参数:k1、k2、p1、p2、k3。标定过程中,通过拍摄多幅棋盘格图像,使用张正友标定法或 OpenCV 的 calibrateCamera() 函数求解这些参数。

常见误区:畸变校正必须在立体匹配之前完成。若左右图像未分别校正畸变,极线约束将不成立,导致匹配搜索范围扩大、误匹配率上升。此外,畸变系数与内参是耦合的,标定时应同时优化,不可分开求解。

2.4 双目成像几何与三角测量

双目视觉的核心是利用两个相机从不同视角观察同一空间点,通过视差计算深度。理想的双目系统满足以下几何关系:

  • 基线 B:左右相机光心之间的距离,单位通常为毫米。
  • 焦距 f:左右相机内参中的等效焦距(像素单位)。
  • 视差 d:同一空间点在左右图像中像素坐标的差值,d = uL - uR。

在理想平行双目系统中(左右相机光轴平行、成像平面共面),深度 Z 与视差 d 成反比:

Z = f * B / d

该公式表明:视差越大,距离越近;视差越小,距离越远。同时,深度精度与视差精度直接相关,且随距离增大而急剧下降。

2.5 极线约束与立体校正

实际安装的双目系统很难做到理想平行,左右图像中的对应点通常不在同一水平线上。极线约束描述了对极几何关系:左图像上的任意一点,其在右图像上的匹配点必然位于对应的极线上。这一约束将二维搜索降为一维搜索,大幅提升匹配效率与可靠性。

为了进一步简化匹配过程,通常对左右图像进行立体校正(Stereo Rectification),通过重投影将左右图像变换为行对齐状态。校正后,极线变为水平线,视差仅沿水平方向存在,匹配搜索只需在水平方向进行。

立体校正的常用算法包括 Bouguet 算法和 Hartley 算法。Bouguet 算法利用左右相机的旋转矩阵和平移向量,将两相机坐标系旋转到同一方向,并使基线平行于 x 轴;Hartley 算法则直接利用基础矩阵 F 进行校正,无需标定外参。

工程经验:在双目相机选型与安装时,应尽量减小左右相机的俯仰角与滚转角差异,增大基线长度可提升远距离测距精度,但会缩小近距离公共视野。基线长度与最小工作距离需根据应用场景权衡。

2.6 案例拆解:双目系统标定与校正流程

以某机器人避障项目为例,双目相机分辨率为 1280×720,基线长度 120mm,最小工作距离 0.5m,最大工作距离 8m。项目初始阶段,直接使用出厂内参进行测距,发现 3m 处测距误差达 8%,且左右图像匹配点垂直方向偏差达 3 个像素。

问题分析:出厂内参未考虑实际安装应力导致的镜头微小位移,且左右相机光轴不平行,极线约束不严格成立。

解决步骤:

  1. 使用 12×9 棋盘格(格边长 30mm),采集 25 组不同位姿图像对。
  2. 使用 OpenCV 的 stereoCalibrate() 函数计算左右相机内参、畸变系数及双目标定外参。
  3. 使用 stereoRectify() 计算校正映射矩阵,并生成校正查找表。
  4. 使用 initUndistortRectifyMap() 与 remap() 对实时图像流进行校正。
  5. 校正后验证:左右图像对应点垂直方向偏差小于 0.5 像素,3m 处测距误差降至 1.2%。

复盘经验:标定板应覆盖整个视场,且需包含不同倾斜角度;标定后应使用独立测试集验证精度,避免过拟合。此外,温度变化会引起镜头焦距漂移,高精度应用需定期重新标定。

2.7 常见误区与总结

在双目视觉基础学习中,以下误区需要特别留意:

  • 混淆内参与外参:内参描述相机内部光学特性,外参描述相机在世界坐标系中的位姿。两者在标定中需同时求解,但物理意义不同。
  • 忽略畸变校正:直接使用原始图像进行立体匹配,会导致匹配点偏移,测距精度下降。
  • 视差计算方向错误:视差定义为左图坐标减右图坐标,方向错误会导致深度为负值。
  • 基线选择不当:基线过短导致远距离视差过小,量化误差增大;基线过长导致近距离公共视野不足。