2、双目视觉基础:针孔相机模型、坐标系转换、内参外参、畸变模型与双目成像几何
双目测距的误差分析与校准方法,其根基在于对成像过程的精确数学建模。若模型本身存在偏差,后续的立体匹配与三角测量将产生系统性误差。本章将系统梳理双目视觉的五大核心模块:针孔相机模型、坐标系转换、内外参数、畸变模型以及双目成像几何。理解这些基础概念,是后续进行误差溯源与标定优化的前提。
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 个像素。
问题分析:出厂内参未考虑实际安装应力导致的镜头微小位移,且左右相机光轴不平行,极线约束不严格成立。
解决步骤:
- 使用 12×9 棋盘格(格边长 30mm),采集 25 组不同位姿图像对。
- 使用 OpenCV 的
stereoCalibrate()函数计算左右相机内参、畸变系数及双目标定外参。 - 使用
stereoRectify()计算校正映射矩阵,并生成校正查找表。 - 使用
initUndistortRectifyMap()与remap()对实时图像流进行校正。 - 校正后验证:左右图像对应点垂直方向偏差小于 0.5 像素,3m 处测距误差降至 1.2%。
复盘经验:标定板应覆盖整个视场,且需包含不同倾斜角度;标定后应使用独立测试集验证精度,避免过拟合。此外,温度变化会引起镜头焦距漂移,高精度应用需定期重新标定。
2.7 常见误区与总结
在双目视觉基础学习中,以下误区需要特别留意:
- 混淆内参与外参:内参描述相机内部光学特性,外参描述相机在世界坐标系中的位姿。两者在标定中需同时求解,但物理意义不同。
- 忽略畸变校正:直接使用原始图像进行立体匹配,会导致匹配点偏移,测距精度下降。
- 视差计算方向错误:视差定义为左图坐标减右图坐标,方向错误会导致深度为负值。
- 基线选择不当:基线过短导致远距离视差过小,量化误差增大;基线过长导致近距离公共视野不足。