3、内外参标定:相机内参标定原理、外参标定方法、激光雷达与相机联合标定、标定工具链介绍。
说到BEV融合,有个绕不开的坎——标定。我见过不少团队,模型调得飞起,一上车数据全对不上,最后发现是标定出了问题。说白了,标定就是给传感器「配眼镜」,让它们看到的世界在同一个坐标系里对齐。
3.1 相机内参标定原理
相机内参,描述的是光线怎么穿过镜头落到CMOS上。核心参数就这几个:焦距(fx, fy)、主点(cx, cy)、畸变系数(k1, k2, p1, p2等)。
标定原理其实不复杂。我们拿一个已知尺寸的棋盘格,拍不同角度的照片。棋盘格上的角点坐标是已知的(世界坐标系),它们在图像上的像素坐标也是已知的。通过多组对应关系,就能解出内参矩阵。
数学上,这个过程可以写成:
s * [u, v, 1]^T = K * [R|t] * [X, Y, Z, 1]^T
其中K就是内参矩阵。我们通过最小化重投影误差来求解——说白了,就是让「计算出来的像素位置」和「实际检测到的像素位置」尽可能接近。
3.2 外参标定方法
外参解决的是「相机装在车上的什么位置、什么朝向」这个问题。它包含旋转矩阵R和平移向量t,一共6个自由度。
常用的外参标定方法有几种:
- 手动测量法:用卷尺量位置,用量角器估角度。精度嘛...只能说凑合能用,但别指望它做高精度融合。
- 基于标定板的方法:在车前放一个已知尺寸的标定板,同时用激光雷达和相机采集数据。通过提取标定板在各自坐标系下的位姿,解出外参。
- 基于自然特征的方法:利用道路上的车道线、路沿等特征进行在线标定。我去年在某个项目中用过这种方法,效果还不错,但需要场景中有足够多的稳定特征。
核心公式:外参标定本质上是在求解一个刚体变换:
P_cam = R * P_lidar + t
其中P_cam是相机坐标系下的点,P_lidar是激光雷达坐标系下的点。
为什么会标不准?我踩过的坑主要有两个:一是标定板不够平整,二是采集数据时车辆有微小晃动。你想想看,一个0.1度的角度误差,在50米外就会产生将近10厘米的偏差——这对BEV融合来说是不能接受的。
3.3 激光雷达与相机联合标定
这是BEV融合中最关键的一步。激光雷达提供精确的3D点云,相机提供丰富的纹理信息。两者对齐了,融合才有意义。
联合标定的流程大致如下:
- 准备一个同时能被激光雷达和相机「看见」的标定物(通常是带反光标记的棋盘格或立方体)
- 采集多组同步数据
- 分别提取标定物在点云和图像中的特征
- 建立3D-2D对应关系
- 用PnP算法或非线性优化求解外参
这里有个细节要注意:激光雷达的点云是稀疏的,很难精确找到标定板的角点。我习惯的做法是,先拟合出标定板的平面,再取平面的边界交点作为特征点。
3.4 标定工具链介绍
工欲善其事,必先利其器。这里介绍几款我常用的标定工具:
| 工具名称 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
| OpenCV Calibration | 相机内参标定 | 成熟稳定,文档丰富 | 需要手动采集数据 |
| Kalibr | 多相机+IMU标定 | 支持多种传感器,精度高 | 配置复杂,学习曲线陡 |
| Autoware Calibration | 激光雷达-相机联合标定 | 有GUI界面,操作直观 | 依赖ROS,版本兼容性一般 |
| Apollo Calibration | 量产车规级标定 | 自动化程度高,支持在线标定 | 代码量大,定制化困难 |
我个人习惯用Kalibr做内参标定,用Autoware的标定工具做联合标定。不过说实话,没有哪个工具是万能的。实际项目中,我经常需要自己写一些脚本做数据预处理和后处理。
嗯,标定这块内容就讲到这里。记住一句话:标定是BEV融合的地基,地基不稳,上层建筑再漂亮也是白搭。下一章我们会聊聊BEV空间中的特征提取,到时候你会看到,标定精度直接影响特征对齐的效果。