📌 概述

相机是自动驾驶中最核心的感知传感器之一,承担着交通参与者检测、车道线识别、交通标志理解等关键任务。要从二维图像中恢复三维信息,必须理解相机的成像几何模型——即相机是如何将三维世界投影到二维像素平面上的

本讲以针孔模型为起点,系统介绍相机的内参(intrinsics)与外参(extrinsics)、畸变模型(radial & tangential)、单目标定与双目标定流程,并深入分析标定误差如何传递到 BEV(Bird’s-Eye-View)感知与 3D 检测任务中。最后介绍自动驾驶中常见的相机类型及其选型依据。


🎯 核心概念

针孔模型(Pinhole Model)

针孔模型描述了一个理想化的成像过程:三维空间中的点 $P(X_w, Y_w, Z_w)$ 通过光心 $O$ 投影到成像平面上,形成倒立的像 $p(u, v)$。为避免倒立,数学上通常将成像平面对称到光心前方(虚拟成像平面)。

投影过程可用齐次坐标表示为:

$$ s \begin{bmatrix} u \\ v \\ 1 \end{bmatrix} = K \begin{bmatrix} R & t \end{bmatrix} \begin{bmatrix} X_w \\ Y_w \\ Z_w \\ 1 \end{bmatrix} $$

其中 $s$ 为深度缩放因子,$K$ 为内参矩阵,$[R|t]$ 为外参矩阵。

内参与外参

内参矩阵 $K$ 描述了相机坐标系到像素坐标系的映射:

$$ K = \begin{bmatrix} f_x & 0 & c_x \\ 0 & f_y & c_y \\ 0 & 0 & 1 \end{bmatrix} $$
  • $f_x = f / d_x$,$f_y = f / d_y$:以像素为单位的焦距,$d_x, d_y$ 为像元尺寸
  • $(c_x, c_y)$:主点偏移,即光轴与成像平面交点的像素坐标

外参 $[R|t]$ 描述了世界坐标系到相机坐标系的刚体变换。$R$ 为 $3\times3$ 旋转矩阵,$t$ 为 $3\times1$ 平移向量。

FOV、焦距与传感器尺寸的关系

视场角(Field of View, FOV)由焦距 $f$ 和传感器尺寸 $W$(宽度)共同决定:

$$ \text{FOV}_h = 2 \arctan\left(\frac{W}{2f}\right) $$
  • 焦距越短 → FOV 越大 → 视野广但近处畸变大(如鱼眼)
  • 焦距越长 → FOV 越小 → 看得远但视野窄(如长焦用于前向远距离检测)

畸变模型

真实镜头存在畸变,分为两类:

径向畸变(Radial Distortion):由镜头曲率引起,越靠近边缘畸变越明显。

  • 桶形畸变($k_1 > 0$):图像向外膨胀
  • 枕形畸变($k_1 < 0$):图像向内收缩

数学模型:

$$ x_{\text{dist}} = x(1 + k_1 r^2 + k_2 r^4 + k_3 r^6) $$

$$ y_{\text{dist}} = y(1 + k_1 r^2 + k_2 r^4 + k_3 r^6) $$

切向畸变(Tangential Distortion):由镜头与成像平面不平行引起。

$$ x_{\text{dist}} = x + [2p_1 xy + p_2(r^2 + 2x^2)] $$

$$ y_{\text{dist}} = y + [p_1(r^2 + 2y^2) + 2p_2 xy] $$

完整的畸变参数向量为 $(k_1, k_2, p_1, p_2, k_3)$。


🔧 技术详解

相机标定流程

张氏标定法(Zhang’s Method)是目前最广泛使用的单目标定方法,核心步骤:

  1. 准备标定板:棋盘格或圆点阵列,已知每个角点的世界坐标(通常设 $Z=0$)
  2. 采集图像:从不同角度拍摄 15-30 张标定板图像,覆盖视野各个区域
  3. 角点检测:使用亚像素精度检测角点位置
  4. 求解单应性矩阵:每张图像建立世界平面到像素平面的单应性 $H = K[r_1 ; r_2 ; t]$
  5. 闭式求解内参:利用旋转向量正交约束求解 $K$
  6. 畸变参数估计:最小化重投影误差,联合优化所有参数
  7. 非线性优化:使用 Levenberg-Marquardt 算法最小化总重投影误差

评价指标

  • 重投影误差(Reprojection Error):通常 < 0.5 pixel 视为合格
  • 误差来源:标定板不平整、角点检测精度、图像质量

双目标定与立体校正

对于立体相机(Stereo Camera):

  • 双目外参标定两个相机之间的 $R, t$
  • 立体校正(Rectification):通过 Bouguet 算法将两幅图像校正到同一极线上,使对应点仅在水平方向有视差
  • 视差 $d = u_L - u_R$,深度 $Z = \frac{f \cdot b}{d}$($b$ 为基线长度)

坐标变换链

自动驾驶中,相机图像上的像素需要经过多重坐标变换才能映射到世界坐标系:

  1. 像素 → 归一化相机平面:$\begin{bmatrix} x_n \ y_n \ 1 \end{bmatrix} = K^{-1} \begin{bmatrix} u \ v \ 1 \end{bmatrix}$
  2. 去畸变:对 $(x_n, y_n)$ 应用畸变校正
  3. 相机坐标系:$P_c = [x_n \cdot s, ; y_n \cdot s, ; s]^T$($s$ 为深度估计值)
  4. 相机 → 自车(Ego):$P_e = R_{c\to e} \cdot P_c + t_{c\to e}$
  5. 自车 → 世界:$P_w = R_{e\to w} \cdot P_e + t_{e\to w}$

相机标定对 BEV 感知的影响

BEV 感知的核心是将多相机特征通过 IPM(Inverse Perspective Mapping)或 Transformer 的 cross-attention 映射到俯视栅格上。

标定误差的影响

  • 内参误差 → 投影到 BEV 栅格时出现系统性偏移,远处的目标位置误差被放大
  • 外参误差(尤其是 pitch 角) → BEV 中车辆前后位置偏差、车道线错位。pitch 角误差 0.1° 可在 50m 处造成约 8.7cm 的深度误差
  • 畸变校正不彻底 → 图像边缘特征位置扭曲,影响多相机特征拼接的对齐精度

因此,量产自动驾驶系统通常要求:

  • 在线标定(On-the-fly Calibration)补偿车辆负载、悬架变化导致的微小外参漂移
  • 多相机联合标定确保所有相机在同一坐标系下的一致性
  • 定期使用标定间(Calibration Rig)进行完整标定

📊 方法对比:标定方法

方法工具精度适用场景
张氏标定法OpenCV / MATLAB0.1-0.5 px离线单目/双目标定,最通用
自标定(Self-calibration)特征匹配 + SFM0.5-2 px无标定板场景,精度低
在线标定车道线/静止特征0.01-0.05°补偿外参漂移
双目标定Kalibr / OpenCV0.1-0.3 px立体深度估计

🔗 与自动驾驶的关联

感知任务对相机标定的依赖
2D 目标检测弱(框标注在图像空间)
3D 目标检测(单目)强(依赖投影几何恢复深度)
BEV 语义分割极强(IPM 依赖准确外参)
多相机融合极强(跨相机一致性依赖联合标定)
视觉 SLAM / 定位强(特征跟踪依赖畸变校正质量)
端到端(VLA)中(若输入为原始图像+位姿,标定误差可被网络隐式补偿一部分)

常见车载相机

类型典型焦距FOV用途
前视主相机28-35mm40-60°远距离目标检测、交通灯识别
前视宽角12-16mm100-120°交叉路口行人、短距离全覆盖
环视鱼眼6-8mm180-220°自动泊车、360° 近距离感知
侧视/后视12-20mm60-100°盲区监测、变道辅助

在线标定方法

由于车辆行驶颠簸、负载变化、悬架老化等原因,相机外参(特别是俯仰角和偏航角)会随时间漂移。在线标定通过观测静态环境特征实现实时外参修正。

基于车道线的外参标定

  • 利用前视相机检测车道线(通常使用三次曲线或三次贝塞尔曲线拟合)
  • 将车道线投影到 BEV 空间,与 HD 地图中的车道线或 Temporal 聚合的车道线做匹配
  • 优化外参使匹配误差最小化,修正 pitch / yaw 角

基于静止目标的外参标定

  • 检测静止目标(路杆、交通标志、停止车辆)的 2D 检测框
  • 利用 LiDAR 或毫米波雷达的 3D 观测作为真值监督
  • 使用 PnP(Perspective-n-Point)求解相机相对于自车的外参

多相机联合标定

多相机系统的标定需要考虑以下维度:

  • 帧同步:所有相机必须在同一时刻曝光(硬件触发同步或软件时间戳对齐)
  • 共视标定:在标定间设置多个标定板,保证相邻相机有 30-50% 的重叠区域
  • 全局优化:构建包含所有相机位姿的因子图,最小化整体重投影误差
  • 一致性检验:验证不同相机在同一位置(如车辆正前方 30m 处)的投影偏差 < 1 pixel

标定工具链

阶段工具内容
离线车间标定自研标定间 / MATLAB内参 + 畸变系数 + 组外参
出厂下线标定专用标定线快速验证 + 外参微调
OTA 在线标定自研算法部署到域控运行时持续监测外参并修正
标定失效检测CV 算法通过 IPM 投影一致性检测标定是否失效

📚 延伸阅读

  1. Zhang, Z. “A Flexible New Technique for Camera Calibration.” IEEE TPAMI, 2000.
  2. Hartley, R. & Zisserman, A. Multiple View Geometry in Computer Vision, 2nd ed., 2004.
  3. Geiger, A. et al. “Automatic Camera and Range Sensor Calibration using a Single Shot.” ICRA, 2012.
  4. Rehder, J. et al. “Extending kalibr: Calibrating the extrinsics of multiple IMUs and of individual axes.” ICRA, 2016.
  5. Lee, D. et al. “Online Extrinsic Calibration of Monocular Camera and LiDAR on Road Scenes.” ICRA, 2020.
  6. OpenCV Camera Calibration Tutorial: https://docs.opencv.org/master/dc/dbb/tutorial_py_calibration.html