3、传感器标定-摄像头:摄像头内参标定、摄像头外参标定、标定板设计与使用
好,我们进入摄像头标定这个环节。说实话,摄像头是ADAS系统里最核心的传感器之一,但也是最容易出问题的。我见过太多项目,算法模型跑得挺好,一上车就拉胯,十有八九是标定没做好。
摄像头标定,说白了就是两件事:搞清楚镜头本身的特性,以及搞清楚镜头装在车上相对于地面的位置。前者叫内参标定,后者叫外参标定。嗯,咱们一个一个来拆。
3.1 摄像头内参标定
内参标定,就是给摄像头做“体检”。你要知道它的焦距、主点位置,还有镜头畸变参数。为什么重要?你想想看,如果内参不准,你看到的像素坐标和实际物理坐标之间就是错位的。车道线检测、障碍物测距,全都会偏。
我个人习惯用张正友标定法,也就是棋盘格标定。这个方法稳定、成熟,量产项目里90%都在用。核心思路就是:拍不同角度、不同距离的棋盘格图片,然后通过角点检测和单应性矩阵求解,算出内参矩阵和畸变系数。
内参矩阵长这样:
K = [fx 0 cx
0 fy cy
0 0 1]
其中fx、fy是焦距(单位像素),cx、cy是主点坐标。畸变系数一般包括径向畸变k1、k2、k3和切向畸变p1、p2。
我在项目中遇到过一个问题:有些同事为了省事,只拍了十几张图片就跑去标定。结果内参算出来,重投影误差倒是挺小,但实际用起来就是不对。为什么?因为图片覆盖的角度不够,尤其是边缘区域拍得太少,畸变参数根本拟合不准。
另外,标定时的光照也很关键。太暗了角点检测不到,太亮了反光严重。我一般建议在均匀光照下进行,避免直射阳光或强光斑。
3.2 摄像头外参标定
内参搞定了,接下来就是外参。外参标定,说白了就是确定摄像头在车上的安装位置和朝向。具体来说,就是旋转矩阵R和平移向量t。
外参标定通常有两种方式:
- 基于标定场的方法: 在固定的标定场地里,放置已知位置的特征点,然后通过PnP算法求解外参。精度高,但需要专用场地。
- 基于自然特征的方法: 利用车道线、地面纹理等自然特征进行在线标定。适合售后或OTA场景,但精度略低。
量产下线时,我建议用第一种。为什么?因为下线标定是最后一次保证精度的机会,出了厂门再想调就难了。
外参标定的核心公式其实很简单:
P_cam = R * P_world + t
其中P_world是世界坐标系下的点,P_cam是摄像头坐标系下的点。我们要做的就是解出R和t。
这里有个细节要注意:外参的参考系。不同车厂定义不同,有的以车辆后轴中心为原点,有的以GPS天线位置为原点。我建议在标定前先和系统工程师确认好,否则后面联调时会很痛苦。
3.3 标定板设计与使用
标定板,是标定工作的“尺子”。尺子不准,量什么都白搭。所以标定板的设计和使用,我建议认真对待。
常见的标定板类型有:
| 类型 | 特点 | 适用场景 |
|---|---|---|
| 棋盘格 | 角点检测稳定,制作简单 | 内参标定、外参标定 |
| 圆点阵列 | 圆心检测精度高,抗畸变好 | 高精度内参标定 |
| AprilTag/ArUco | 自带ID,可识别不同标定板 | 多摄像头联合标定 |
我个人最常用的是棋盘格,因为它简单、可靠。但要注意几个关键参数:
- 格子尺寸: 一般建议30-50mm。太小了远距离看不清,太大了近距离拍不全。
- 格子数量: 内参标定建议9x7或11x8(内角点)。太少了解算不稳定,太多了没必要。
- 制作精度: 这是最容易忽略的。标定板的格子尺寸误差要控制在0.1mm以内。我曾经见过有人用普通打印机打出来贴在纸板上,结果标定出来的焦距偏差了3%。
使用标定板时,还有几个操作要点:
- 标定板要尽量垂直于摄像头光轴,但也要有一些倾斜角度(15-30度),这样才能解算出畸变参数。
- 拍摄距离要覆盖近、中、远三个范围。近处能看清细节,远处能覆盖视野边缘。
- 每次移动标定板后,要确保它完全静止再拍照。手抖拍出来的图片,角点检测会飘。
嗯,摄像头标定这块内容比较多,但核心就是内参、外参、标定板这三个要素。内参决定“看得准不准”,外参决定“装得对不对”,标定板决定“量得准不准”。三者缺一不可。
下一章我们会聊毫米波雷达的标定,那个又是另一套玩法了。先消化好摄像头这部分,后面才能跟得上。