第一章:标定基础与坐标系
各位同学好,我是老张。搞了这么多年感知融合,我最大的体会就是——坐标系这东西,你绕不过去。说白了,它就是整个标定系统的「通用语言」。今天咱们就把这四个坐标系掰开揉碎了讲清楚。
1.1 为什么坐标系这么重要?
我记得刚入行那会儿,有个项目让我头疼了好几天。激光雷达和摄像头的数据怎么都对不上,明明检测到同一个目标,位置却差了半米。后来一查,原来是两个传感器的坐标系定义不一致。嗯,从那以后,我每次做标定前都会先确认坐标系定义。
你想想看,自动驾驶系统里有多个传感器:摄像头、激光雷达、毫米波雷达、IMU……每个传感器都有自己的「视角」。如果不把这些视角统一到一个坐标系下,那融合出来的结果就是一团乱麻。
核心概念:坐标系转换的本质,就是把一个传感器看到的点,映射到另一个传感器的视野中。这中间涉及四个关键坐标系。
1.2 四大坐标系详解
1.2.1 世界坐标系 (World Coordinate System)
世界坐标系,你可以理解为「绝对坐标系」。它固定在地面上,不随车辆移动而改变。通常我们以车辆初始位置或某个地标为原点,X轴指向车辆前方,Y轴指向左侧,Z轴指向上方。
我在项目中遇到过一个问题:如果世界坐标系定义不统一,不同时刻采集的数据就无法对齐。所以我的习惯是,在项目启动时就定好世界坐标系的原点和轴向,所有传感器都基于这个坐标系来标定。
1.2.2 相机坐标系 (Camera Coordinate System)
相机坐标系是以摄像头光心为原点的坐标系。它的Z轴指向镜头前方(也就是拍摄方向),X轴向右,Y轴向下。注意,这里的Y轴方向和世界坐标系是反的。
为什么会这样?因为图像坐标系的原点在左上角,Y轴向下为正。为了和图像坐标系保持一致,相机坐标系也沿用了这个习惯。
我的经验:在做相机标定时,一定要确认相机坐标系的原点位置。有些资料把原点放在图像中心,有些放在光心。我个人习惯用光心,因为这样投影关系更直观。
1.2.3 图像坐标系 (Image Coordinate System)
图像坐标系是二维的,单位是毫米。它的原点在图像平面的中心(也就是主点位置),X轴向右,Y轴向下。这个坐标系的作用,是把相机坐标系中的三维点投影到二维平面上。
说白了,图像坐标系就是「相机看到的画面」的数学描述。它和相机坐标系之间通过内参矩阵关联。
1.2.4 像素坐标系 (Pixel Coordinate System)
像素坐标系也是二维的,但单位是像素。它的原点在图像的左上角,u轴向右,v轴向下。每个像素点(u, v)对应图像中的一个位置。
你可能会问:图像坐标系和像素坐标系有什么区别?区别就在于单位不同。图像坐标系用毫米,像素坐标系用像素。两者之间通过像素尺寸(dx, dy)来转换。
注意:像素坐标系的原点在左上角,而图像坐标系的原点在中心。这个偏移量就是主点坐标(cx, cy)。很多初学者会忽略这个偏移,导致投影结果偏差很大。
1.3 坐标系转换关系
好了,四个坐标系都介绍完了。现在咱们看看它们之间怎么转换。我画了一张图,帮你理清思路。
从这张图可以看得很清楚:世界坐标系先通过外参矩阵(旋转R和平移t)转换到相机坐标系,然后通过内参矩阵K投影到图像坐标系,最后通过像素尺寸转换到像素坐标系。
1.4 数学公式与代码实现
光看图还不够,咱们得动手算一算。下面是完整的转换公式:
// 世界坐标系到相机坐标系
Xc = R * Xw + t
// 相机坐标系到图像坐标系(归一化平面)
x = Xc / Zc
y = Yc / Zc
// 图像坐标系到像素坐标系
u = fx * x + cx
v = fy * y + cy
// 完整形式(齐次坐标)
Zc * [u] [fx 0 cx] [R11 R12 R13 t1] [Xw]
[v] = [ 0 fy cy] * [R21 R22 R23 t2] * [Yw]
[1] [ 0 0 1] [R31 R32 R33 t3] [Zw]
[1 ]
我的建议:在实际编码时,别手写这些矩阵运算。用OpenCV的cv2.projectPoints()函数,它已经帮你封装好了。我早期犯过的一个错误就是自己实现投影,结果矩阵乘法顺序搞反了,调试了一整天。
1.5 避坑指南
最后,分享几个我踩过的坑:
- 坐标系方向搞反:我曾经把相机坐标系的Y轴方向搞反了,导致投影结果上下颠倒。后来我养成了一个习惯:每次标定完,先投影几个已知点验证一下。
- 单位不统一:世界坐标系用米,相机坐标系用毫米,结果投影出来差1000倍。嗯,这个错误我只犯过一次。
- 忽略畸变:摄像头镜头都有畸变,不做畸变校正直接投影,边缘区域误差很大。我的做法是:先做畸变校正,再做投影。
重要提醒:坐标系转换的精度直接影响后续的感知融合效果。我建议你在项目初期就建立一套坐标系转换的验证流程,每次修改标定参数后都跑一遍验证。
好了,坐标系的基础知识就讲到这里。记住一句话:坐标系是标定的基石,基础不牢,地动山摇。下一节咱们聊聊具体的标定方法。
可可精品资料库