坐标系基础:世界坐标系、相机坐标系、图像坐标系、像素坐标系定义与转换关系
做激光雷达和相机联合标定,说白了就是搞清楚一件事:同一个物体,在激光雷达眼里和相机眼里,位置到底差了多少。而要解决这个问题,你首先得把四个坐标系玩明白。
我个人习惯把坐标系比作「翻译官」。传感器各自说各自的语言,你得通过坐标系转换,让它们能互相听懂。今天我就带你把这四个坐标系彻底捋清楚。
1. 世界坐标系:我们生活的真实世界
世界坐标系,你可以理解为「绝对参考系」。它不依赖任何传感器,是一个固定的三维直角坐标系。通常我们用 (X_w, Y_w, Z_w) 来表示。
我在项目中遇到过一个问题:两辆车在不同位置采集数据,如果各自定义自己的世界坐标系原点,那数据根本没法融合。所以,世界坐标系的原点和轴向,需要提前约定好。比如,以第一帧的激光雷达位置为原点,或者以某个标定板的角点为原点。
核心要点:世界坐标系是「上帝视角」,所有其他坐标系最终都要向它对齐。
2. 相机坐标系:相机的「眼睛」
相机坐标系的原点在相机的光心,也就是镜头中心。Z轴指向相机的前方,X轴向右,Y轴向下(这是常见的右手系,但注意有些库用左手系)。
嗯,这里要注意:相机坐标系是三维的,它描述的是物体相对于相机的位置。我们用 (X_c, Y_c, Z_c) 表示。
你想想看,激光雷达的点云要投影到图像上,第一步就是把点云从世界坐标系转到相机坐标系。这一步叫「刚体变换」,说白了就是旋转加平移。
3. 图像坐标系:从三维到二维的「降维打击」
图像坐标系是二维的,原点在相机的成像平面上,通常位于图像的中心。我们用 (x, y) 表示,单位是毫米或米。
这里有个关键概念:针孔相机模型。三维空间中的点,通过光心投影到成像平面上,形成一个倒立的像。数学上就是相似三角形关系。
我曾经踩过一个坑:以为图像坐标系和像素坐标系是一回事。其实不是。图像坐标系是物理单位(毫米),而像素坐标系是离散的(像素个数)。这个区别,后面会细说。
4. 像素坐标系:你看到的「数字图像」
像素坐标系就是我们平时处理图像时用的坐标系。原点在图像的左上角,u轴向右,v轴向下。单位是像素。
为什么原点在左上角?因为计算机图像存储时,第一行第一列就是左上角那个像素。这是历史原因,但咱们得接受。
像素坐标 (u, v) 和图像坐标 (x, y) 之间,差了一个缩放和偏移。说白了,就是要把物理尺寸转换成像素个数。
我的小技巧:写代码时,先把像素坐标转成图像坐标,再做投影计算。这样不容易出错。
5. 四个坐标系之间的转换关系
好了,四个坐标系都认识了。现在咱们看看它们怎么串起来。整个流程是这样的:
- 世界坐标系 → 相机坐标系:刚体变换(旋转矩阵R + 平移向量t)
- 相机坐标系 → 图像坐标系:透视投影(针孔模型)
- 图像坐标系 → 像素坐标系:仿射变换(缩放 + 平移)
用数学公式表达就是:
// 世界坐标到相机坐标
[X_c, Y_c, Z_c, 1]^T = [R | t] * [X_w, Y_w, Z_w, 1]^T
// 相机坐标到图像坐标(归一化平面)
x = X_c / Z_c
y = Y_c / Z_c
// 图像坐标到像素坐标
u = fx * x + cx
v = fy * y + cy
其中 fx, fy 是焦距(像素单位),cx, cy 是光心在像素坐标系中的位置。这些参数就是相机的内参。
注意:激光雷达的点云是三维的,但相机图像是二维的。投影过程中,深度信息 Z_c 会丢失。所以从图像无法直接恢复三维坐标,除非你有深度信息(比如双目或RGB-D相机)。
6. 一张图看懂整个流程
下面我用SVG画了一张流程图,把四个坐标系和它们之间的转换关系展示出来。你可以把它当作「坐标系转换地图」来用。
7. 实战中的坑与经验
讲完了理论,我分享几个实际项目中踩过的坑。
- 坐标系方向搞反:有一次我把相机坐标系的Y轴方向搞反了,结果点云投影到图像上,所有点都上下颠倒。排查了半天才发现是旋转矩阵的符号错了。
- 内参标定不准:相机内参不是一成不变的。温度变化、镜头松动都会导致内参漂移。我建议每隔一段时间重新标定一次。
- 忘记归一化:从相机坐标系到图像坐标系,一定要先除以Z_c。我见过有人直接拿(X_c, Y_c)当(x, y)用,结果投影全乱套了。
避坑指南:写代码时,每一步转换都打印出中间结果。比如,把世界坐标转成相机坐标后,检查一下Z_c是否为正(正数表示点在相机前方)。这个小习惯能帮你省下大量调试时间。
8. 总结一下
四个坐标系的关系,说白了就是一条流水线:世界坐标 → 相机坐标 → 图像坐标 → 像素坐标。每一步都有明确的数学公式,但实际工程中,细节决定成败。
我个人习惯把转换矩阵写成齐次形式,这样可以用矩阵乘法一次性完成。比如,把世界坐标直接映射到像素坐标:
// 齐次坐标形式
[u, v, 1]^T = K * [R|t] * [X_w, Y_w, Z_w, 1]^T
其中K是内参矩阵,[R|t]是外参矩阵。这个公式,就是激光雷达和相机联合标定的核心。
好了,坐标系基础就讲到这里。记住,坐标系转换是传感器融合的基石。这块搞不明白,后面的标定、融合、建图都会出问题。希望今天的分享对你有帮助。
可可精品资料库