第三章:数据预处理与标定
各位同学,今天我们来聊聊感知融合里最基础、也最容易被忽视的一环——数据预处理与标定。
说实话,我见过太多团队,算法模型调得飞起,结果一上路就崩。为什么?因为传感器数据根本没对齐。你想想看,摄像头看到的是像素,激光雷达看到的是点云,这两者如果不在同一个坐标系里说话,那融合出来的结果就是「鸡同鸭讲」。
所以这一章,我们就把标定这件事彻底讲透。
3.1 相机内参标定
相机内参标定,说白了就是搞清楚「镜头是怎么把三维世界映射到二维图像上的」。这个映射关系由内参矩阵 K 和畸变系数 D 决定。
我个人习惯用棋盘格标定板,配合 OpenCV 的 calibrateCamera() 函数。流程很简单:拍个十几张不同角度的棋盘格照片,然后让算法自动提取角点,解算出内参。
这里有个坑,我踩过好几次——棋盘格一定要贴平。你想想看,如果板子本身是弯的,或者打印出来有褶皱,那提取的角点坐标就是错的,标定结果自然不准。
s * [u, v, 1]^T = K * [R|t] * [X, Y, Z, 1]^T其中 K 是内参矩阵,包含 fx, fy, cx, cy。
3.2 Lidar-Camera 联合标定
联合标定要解决的核心问题只有一个:激光雷达坐标系下的点 (x, y, z),对应到图像上的哪个像素 (u, v)?
这需要求解一个外参矩阵 [R|t],把 Lidar 坐标系变换到 Camera 坐标系。常用的方法有两种:
- 目标物法: 在场景中放置已知尺寸的标定物(比如棋盘格或立方体),同时采集 Lidar 点云和 Camera 图像,手动或自动提取对应点,然后求解 PnP 问题。
- 互信息法: 利用 Lidar 反射强度与图像灰度之间的统计相关性,自动优化外参。这个方法不需要人工标定物,但计算量大,且对场景纹理有要求。
我在项目中更常用目标物法,因为稳定可靠。不过要注意,Lidar 点云是稀疏的,你很难精确找到棋盘格的角点。我的做法是:在棋盘格上贴一块高反射材料,这样 Lidar 打上去会返回强信号,方便在点云中定位。
3.3 去畸变
相机镜头,尤其是广角镜头,会产生明显的径向畸变和切向畸变。去畸变就是把变形的图像「拉直」。
OpenCV 提供了 undistort() 和 initUndistortRectifyMap() 两个函数。前者直接处理单张图像,后者先生成映射表,然后对视频流逐帧处理,效率更高。
嗯,这里要注意:去畸变会损失一部分边缘像素,因为校正后的图像需要裁剪。如果你需要保留完整的视场角,可以考虑用 getOptimalNewCameraMatrix() 来调整内参,让裁剪量最小化。
# 去畸变示例代码
import cv2
import numpy as np
# 假设已经标定得到内参 K 和畸变系数 D
K = np.array([[fx, 0, cx],
[0, fy, cy],
[0, 0, 1]])
D = np.array([k1, k2, p1, p2, k3])
# 生成映射表
map1, map2 = cv2.initUndistortRectifyMap(K, D, None, K, (w, h), cv2.CV_32FC1)
# 逐帧去畸变
undistorted_img = cv2.remap(img, map1, map2, cv2.INTER_LINEAR)
3.4 时间戳对齐
这是整个预处理环节里最「隐形」但最致命的问题。Camera 和 Lidar 的采样频率不同,触发时刻也不同。如果不做时间戳对齐,融合出来的结果就是「时空错乱」的。
常见的做法有两种:
- 硬件同步: 通过 PTP(精确时间协议)或 GPS 的 PPS 信号,让所有传感器共用同一个时钟。这是最理想的方式,延迟可以控制在微秒级。
- 软件插值: 如果硬件不支持同步,那就用软件方法。比如,Lidar 是 10Hz,Camera 是 30Hz,那就找离 Camera 帧时间最近的 Lidar 帧,或者对 Lidar 点云做线性插值。
我个人更推荐硬件同步,因为软件插值会引入额外的误差。但如果你用的是消费级传感器,没有硬件同步接口,那软件插值就是唯一的选择。
知识体系总览
下面这张图,是我自己总结的本章知识结构。你可以把它当作一张「地图」,随时回来对照。
好了,以上就是数据预处理与标定的全部核心内容。从相机内参到联合标定,从去畸变到时间戳对齐,每一步都直接影响后续融合的精度。我在实际项目中,光是标定这一步就反复迭代了不下十次,才把重投影误差压到 0.5 像素以内。
记住一句话:标定做得越细,后面调参越省心。别嫌麻烦,这是值得的。
- 相机内参标定是基础,棋盘格要贴平,照片要覆盖全视野
- 联合标定需要好的初始值,建议手动粗对齐后再自动优化
- 去畸变后要重新映射坐标,否则特征点会偏移
- 时间戳对齐优先用硬件同步,软件插值是备选方案
可可精品资料库