3、摄像头基础:摄像头成像原理、内参外参、畸变模型与标定方法
摄像头是无人车感知系统的“眼睛”,它将三维物理世界的光信号转换为二维数字图像。在无人车视觉导航项目中,无论是车道线检测、障碍物识别还是路径规划,所有视觉算法的输入都源自摄像头采集的图像。然而,摄像头并非完美的“人眼”,其成像过程受到镜头光学特性、传感器制造工艺和安装位置的影响,导致图像存在畸变、尺度不确定性和坐标映射误差。如果不对这些误差进行建模和校正,视觉导航系统将无法准确判断物体距离、车道宽度和自身位置。本章将系统讲解摄像头成像的物理原理、内参与外参的数学含义、畸变产生的原因以及工程中常用的标定方法,为后续的视觉感知与运动控制奠定基础。
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°)的径向畸变尤为明显,如果未校正,车道线在图像边缘会呈现明显的弯曲,导致路径判断错误。
3.4 标定方法:张正友棋盘格标定法实战
张正友标定法(Zhang's Method)是目前最广泛使用的摄像头标定方法,它只需要拍摄不同角度的棋盘格图像,即可求解内参、外参和畸变系数。该方法的核心思想是:利用棋盘格的平面约束条件,先通过单应性矩阵(Homography)求解内参的初始值,再通过非线性优化(如 Levenberg-Marquardt 算法)最小化重投影误差,得到精确参数。
标准标定流程如下:
- 准备标定板:打印一张 9×6 或 10×7 的棋盘格(内角点数为 8×5 或 9×6),确保格子为正方形,贴在平整的硬板上。
- 采集图像:将标定板放置在摄像头视野内的不同位置和角度,拍摄 15~20 张图像。要求:标定板占图像面积的 1/4 以上;覆盖图像的四个角和中心区域;倾斜角度在 0°~45° 之间变化。
- 角点检测:使用 OpenCV 的
findChessboardCorners()函数自动检测棋盘格内角点,并利用cornerSubPix()进行亚像素级精化。 - 求解参数:调用
calibrateCamera()函数,输入角点坐标和棋盘格物理尺寸,输出内参矩阵、畸变系数、每张图像的旋转向量和平移向量。 - 评估结果:检查重投影误差(Reprojection Error),通常要求小于 0.1 像素。如果误差过大,剔除误差较大的图像并重新标定。
- 图像校正:使用
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 张图像或所有图像都近似正面拍摄,会导致内参求解不稳定,重投影误差虚低但实际校正效果差。
误区四:混淆内参和外参的作用。内参是摄像头自身的属性,外参是摄像头在车辆坐标系中的位姿。视觉导航中,测距主要依赖内参,而将图像坐标映射到车辆坐标系则依赖外参。两者缺一不可。