3、摄像头基础:摄像头成像原理、内参外参、畸变模型与标定方法

摄像头是无人车感知系统的“眼睛”,它将三维物理世界的光信号转换为二维数字图像。在无人车视觉导航项目中,无论是车道线检测、障碍物识别还是路径规划,所有视觉算法的输入都源自摄像头采集的图像。然而,摄像头并非完美的“人眼”,其成像过程受到镜头光学特性、传感器制造工艺和安装位置的影响,导致图像存在畸变、尺度不确定性和坐标映射误差。如果不对这些误差进行建模和校正,视觉导航系统将无法准确判断物体距离、车道宽度和自身位置。本章将系统讲解摄像头成像的物理原理、内参与外参的数学含义、畸变产生的原因以及工程中常用的标定方法,为后续的视觉感知与运动控制奠定基础。

摄像头成像与标定知识框架 世界坐标系 (Xw, Yw, Zw) 真实物理空间中的 位置 相机坐标系 (Xc, Yc, Zc) 以光心为原点 Z轴指向镜头前方 图像坐标系 (x, y) 物理单位(mm) 光轴与成像面交点 像素坐标系 (u, v) 离散像素行列 单位:pixel 外参 R, t 内参 f, cx, cy 像素化 dx, dy 畸变模型 径向畸变:k1, k2, k3 切向畸变:p1, p2 桶形畸变 / 枕形畸变 / 透镜安装偏差 标定方法 张正友棋盘格标定法(主流) OpenCV / MATLAB 工具链 输出:内参矩阵 + 畸变系数 + 外参 标定流程:采集棋盘格图像 → 角点检测 → 求解内参/外参 → 畸变系数优化 → 图像校正 重投影误差 < 0.1 pixel 视为标定合格

3.1 摄像头成像原理:从三维世界到二维像素

摄像头成像的本质是透视投影(Perspective Projection),即三维空间中的点通过镜头光心投影到二维成像平面上。这一过程可以用“针孔模型”(Pinhole Model)来近似描述。针孔模型假设光线沿直线传播,所有光线穿过一个无限小的光心,在成像平面上形成倒立的实像。虽然真实镜头由多组透镜构成,但针孔模型在数学上足够精确,是摄像头标定的理论基础。

成像过程涉及四个坐标系的转换:世界坐标系(描述物体在真实空间中的位置)→ 相机坐标系(以光心为原点,Z轴指向镜头前方)→ 图像坐标系(物理单位,光轴与成像面的交点为主点)→ 像素坐标系(离散的像素行列)。整个转换链路的数学表达式如下:

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

其中,K 为内参矩阵(包含焦距 f、主点坐标 cx、cy 和像素尺寸 dx、dy),[R | t] 为外参矩阵(旋转矩阵和平移向量),Zc 为相机坐标系下的深度值。这个公式是摄像头标定和视觉测距的核心,后续章节中的单目测距、双目视差计算都建立在此模型之上。

工程要点:在无人车项目中,摄像头通常安装在车顶或前挡风玻璃处,安装角度和高度决定了外参。外参并非固定不变——车辆颠簸、碰撞或温度变化都可能导致外参漂移,因此实际项目中需要定期重新标定或使用在线自标定算法。

3.2 内参与外参:摄像头标定的核心参数

内参(Intrinsic Parameters)描述摄像头自身的物理光学特性,包括:

  • 焦距 f:镜头光心到成像平面的距离,单位通常为像素(fx = f/dx, fy = f/dy)。焦距决定了视场角(FOV)的大小,焦距越短,视野越宽,但远处物体成像越小。
  • 主点坐标 (cx, cy):光轴与成像平面的交点,理想情况下位于图像中心,但制造误差会导致偏移。
  • 像素尺寸 (dx, dy):单个像素在 x 和 y 方向上的物理尺寸,通常由传感器规格决定。
  • 畸变系数:包括径向畸变系数 (k1, k2, k3) 和切向畸变系数 (p1, p2)。

外参(Extrinsic Parameters)描述摄像头在世界坐标系中的位置和朝向,由旋转矩阵 R(3×3)和平移向量 t(3×1)组成。外参将世界坐标转换为相机坐标,是无人车将图像信息映射到车辆坐标系或全局地图的关键。

参数类型 符号 物理含义 对视觉导航的影响
焦距 fx, fy 镜头光学放大倍数 决定测距精度和视场范围
主点 cx, cy 光轴与成像面交点 影响像素坐标与物理坐标的映射
径向畸变 k1, k2, k3 透镜曲率引起的畸变 导致直线变曲线,影响车道线检测
切向畸变 p1, p2 透镜与成像面不平行 导致图像倾斜,影响目标定位
旋转矩阵 R 相机相对世界的姿态 决定图像与车辆坐标系的转换关系
平移向量 t 相机相对世界的位置 决定安装位置对感知结果的影响

3.3 畸变模型:图像失真的数学描述

真实镜头并非完美的针孔,透镜的曲面形状和制造装配误差会导致图像畸变。畸变主要分为两类:

径向畸变(Radial Distortion):由透镜曲率引起,光线在透镜边缘比中心弯曲得更厉害。表现为图像中的直线向外凸出(桶形畸变)或向内凹陷(枕形畸变)。数学模型为:

x_distorted = x * (1 + k1*r² + k2*r⁴ + k3*r⁶)
y_distorted = y * (1 + k1*r² + k2*r⁴ + k3*r⁶)

其中 r² = x² + y²,x 和 y 是归一化平面上的坐标。对于普通广角镜头,k1 和 k2 通常足够;对于鱼眼镜头或高精度应用,需要引入 k3。

切向畸变(Tangential Distortion):由镜头与成像平面不平行引起,表现为图像在某个方向上被拉伸或压缩。数学模型为:

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

在无人车项目中,广角镜头(FOV > 100°)的径向畸变尤为明显,如果未校正,车道线在图像边缘会呈现明显的弯曲,导致路径判断错误。

风险提示:畸变校正是视觉导航的“第一道工序”。如果跳过畸变校正直接进行特征提取,后续的相机测距误差可能超过 10%,在近距离(3米以内)障碍物检测中可能导致碰撞风险。务必在标定后对校正效果进行可视化验证。

3.4 标定方法:张正友棋盘格标定法实战

张正友标定法(Zhang's Method)是目前最广泛使用的摄像头标定方法,它只需要拍摄不同角度的棋盘格图像,即可求解内参、外参和畸变系数。该方法的核心思想是:利用棋盘格的平面约束条件,先通过单应性矩阵(Homography)求解内参的初始值,再通过非线性优化(如 Levenberg-Marquardt 算法)最小化重投影误差,得到精确参数。

标准标定流程如下:

  1. 准备标定板:打印一张 9×6 或 10×7 的棋盘格(内角点数为 8×5 或 9×6),确保格子为正方形,贴在平整的硬板上。
  2. 采集图像:将标定板放置在摄像头视野内的不同位置和角度,拍摄 15~20 张图像。要求:标定板占图像面积的 1/4 以上;覆盖图像的四个角和中心区域;倾斜角度在 0°~45° 之间变化。
  3. 角点检测:使用 OpenCV 的 findChessboardCorners() 函数自动检测棋盘格内角点,并利用 cornerSubPix() 进行亚像素级精化。
  4. 求解参数:调用 calibrateCamera() 函数,输入角点坐标和棋盘格物理尺寸,输出内参矩阵、畸变系数、每张图像的旋转向量和平移向量。
  5. 评估结果:检查重投影误差(Reprojection Error),通常要求小于 0.1 像素。如果误差过大,剔除误差较大的图像并重新标定。
  6. 图像校正:使用 undistort() 或 initUndistortRectifyMap() + remap() 对实时图像进行畸变校正。

3.5 案例拆解:无人车前视摄像头标定实战

项目背景:某无人车项目采用 1920×1080 分辨率的广角摄像头(FOV 120°),安装于车顶前方 1.5 米高度,俯仰角约 5°。目标是实现 3~50 米范围内的障碍物测距和车道线检测。初始测试发现,图像边缘的车道线明显弯曲,且 10 米处的测距误差达到 8%。

分析判断:初步判断为径向畸变未校正所致。广角镜头边缘畸变严重,直接使用未校正图像进行逆透视变换(IPM)会导致地面映射误差放大。决定采用张正友标定法进行完整标定。

操作步骤:

  • 打印 10×7 棋盘格(格子边长 30mm),粘贴在铝板上。
  • 在停车场内,从不同距离(1~3米)和角度(±30°)拍摄 20 张图像,确保棋盘格覆盖画面中心和四角。
  • 使用 OpenCV 进行角点检测,剔除 2 张角点检测失败的图像,保留 18 张有效图像。
  • 标定结果:fx = 856.32, fy = 852.17, cx = 960.45, cy = 540.12;畸变系数 k1 = -0.354, k2 = 0.128, p1 = 0.002, p2 = -0.001。
  • 重投影误差为 0.08 像素,满足精度要求。

结果对比:校正后,图像边缘的车道线恢复为直线;10 米处测距误差从 8% 降至 1.5%;50 米处误差从 15% 降至 3%。同时,逆透视变换后的鸟瞰图畸变明显减少,车道线宽度一致性提升。

复盘经验:标定板的平整度直接影响标定精度,建议使用玻璃或铝板而非纸板;拍摄时避免反光和阴影干扰角点检测;标定后应保留标定参数文件,并在车辆维护后重新验证外参是否漂移。

经验提醒:在无人车项目中,内参通常只需标定一次(除非更换镜头),但外参会因安装松动、碰撞或温度变化而漂移。建议每次发车前使用车道线或已知尺寸的标定物进行快速外参校验,确保感知系统始终处于正确状态。

3.6 常见误区与总结复盘

误区一:认为标定一次就一劳永逸。摄像头在车辆运行中会受到振动、温度变化和镜头老化影响,内参可能缓慢漂移。建议每 3~6 个月或更换镜头后重新标定。

误区二:忽略切向畸变。对于低端摄像头或安装不当的情况,切向畸变可能显著。如果只校正径向畸变,图像边缘仍会有残余变形。

误区三:标定板图像数量不足或角度单一。少于 10 张图像或所有图像都近似正面拍摄,会导致内参求解不稳定,重投影误差虚低但实际校正效果差。

误区四:混淆内参和外参的作用。内参是摄像头自身的属性,外参是摄像头在车辆坐标系中的位姿。视觉导航中,测距主要依赖内参,而将图像坐标映射到车辆坐标系则依赖外参。两者缺一不可。