坐标系基础:世界坐标系、相机坐标系、图像坐标系、像素坐标系及其转换关系

各位同学好,我是老张。今天咱们聊聊坐标系,这是传感器标定里最基础、也最绕不开的一块内容。

说实话,我刚开始做标定那会儿,也被这四个坐标系搞得晕头转向。什么世界坐标、相机坐标、图像坐标、像素坐标……听着就头大。但后来我发现,只要理清了它们之间的转换关系,这事儿其实没那么复杂。

咱们先看一张整体框架图,心里有个谱:

世界坐标系 (Xw, Yw, Zw) 相机坐标系 (Xc, Yc, Zc) 图像坐标系 (x, y) 像素坐标系 (u, v) 外参矩阵 内参矩阵 仿射变换 核心转换流程 3D世界点 → 3D相机点 → 2D图像点 → 2D像素点 (Xw,Yw,Zw) → (Xc,Yc,Zc) → (x,y) → (u,v) 关键公式: [Xc, Yc, Zc, 1]^T = [R | t] * [Xw, Yw, Zw, 1]^T [u, v, 1]^T = K * [R | t] * [Xw, Yw, Zw, 1]^T

1. 世界坐标系——我们生活的真实世界

世界坐标系,说白了就是描述物体在真实世界中位置的参考系。你可以把它想象成一个巨大的三维网格,每个物体都有一个唯一的坐标 (Xw, Yw, Zw)。

我个人习惯把世界坐标系的原点选在场景中某个明显的参考点上,比如标定板的角点、房间的墙角,或者某个固定支架的底座。为什么这么选?因为这样后续计算方便,不容易出错。

小技巧: 做多相机标定时,建议把世界坐标系原点选在第一个相机的光心位置。这样能减少一次坐标变换,少一个坑。

2. 相机坐标系——以相机为中心的视角

相机坐标系,就是以相机光心为原点建立的坐标系。它的 Z 轴通常指向相机正前方,X 轴向右,Y 轴向下(这个跟图像坐标系的方向有关,后面会讲)。

嗯,这里要注意:相机坐标系和世界坐标系之间,存在一个旋转和平移的关系。这个关系用一个 4x4 的矩阵来表示,我们叫它外参矩阵

我在项目中遇到过一个问题:标定板放歪了,导致外参矩阵算出来不对。后来发现是旋转矩阵的符号搞反了。你想想看,旋转方向搞反了,整个坐标系就拧巴了,后面的标定全白做。

避坑指南: 我曾经因为旋转矩阵的符号问题,浪费了整整两天时间。建议每次计算外参后,用已知点验证一下:把世界坐标点投影到图像上,看看跟实际位置是否吻合。

3. 图像坐标系——从三维到二维的投影

图像坐标系,是相机成像平面上的二维坐标系。它的原点在相机光轴与成像平面的交点(也就是主点),单位是毫米。

从相机坐标系到图像坐标系,靠的是透视投影。说白了,就是小孔成像原理。公式很简单:

x = f * Xc / Zc
y = f * Yc / Zc

其中 f 是焦距。这个公式看着简单,但实际用起来有个坑:Zc 不能为 0。你想想看,如果物体正好在相机光心位置,那投影到图像上就是无穷远,这显然不合理。

4. 像素坐标系——计算机眼中的图像

像素坐标系,就是计算机存储图像时用的坐标系。它的原点在图像左上角,u 轴向右,v 轴向下,单位是像素。

从图像坐标系到像素坐标系,是一个仿射变换

u = x / dx + u0
v = y / dy + v0

其中 dx、dy 是每个像素的物理尺寸(毫米/像素),(u0, v0) 是主点的像素坐标。

我记得有一次,一个学生问我:为什么像素坐标系的 v 轴是向下的?我说,你想想看,计算机显示图像时,第一行在最上面,第二行在下面,所以 v 轴自然向下。这个方向跟相机坐标系的 Y 轴是反的,所以计算时要注意符号。

5. 四个坐标系的转换关系——一张图说清楚

好了,四个坐标系都讲完了。咱们把它们串起来,看看完整的转换流程:

步骤 变换类型 关键参数
1 世界坐标系 相机坐标系 刚体变换(旋转+平移) 外参矩阵 [R | t]
2 相机坐标系 图像坐标系 透视投影 焦距 f
3 图像坐标系 像素坐标系 仿射变换 内参 (fx, fy, u0, v0)

完整的转换公式可以写成:

s * [u, v, 1]^T = K * [R | t] * [Xw, Yw, Zw, 1]^T

其中:

  • s 是尺度因子(其实就是 Zc)
  • K 是内参矩阵(包含焦距、主点、畸变参数)
  • [R | t] 是外参矩阵(旋转和平移)
  • [Xw, Yw, Zw] 是世界坐标
  • [u, v] 是像素坐标
核心要点: 整个标定的目的,就是求解内参矩阵 K 和外参矩阵 [R | t]。有了这两个矩阵,你就能把任意世界坐标点投影到图像上,或者反过来从图像坐标反推世界坐标。

6. 实际应用中的注意事项

讲完了理论,咱们聊聊实际中容易踩的坑。

第一个坑:坐标系方向搞反。 我见过有人把相机坐标系的 Z 轴指向相机后方,结果投影出来的点全在图像外面。记住:Z 轴指向场景方向,不是指向相机后面。

第二个坑:单位不统一。 世界坐标用米,图像坐标用毫米,像素坐标用像素。计算时一定要统一单位,不然结果差好几个数量级。

第三个坑:畸变没考虑。 实际相机都有畸变(径向畸变、切向畸变),如果不做畸变校正,投影精度会大打折扣。这个咱们后面章节会详细讲。

我的习惯: 每次标定完,我都会做一个验证:用标定板拍一张图,检测角点,然后用标定结果把角点的世界坐标投影到图像上,看看投影点跟检测点之间的误差。如果误差在 0.5 像素以内,说明标定结果靠谱。

好了,坐标系基础就讲到这里。这四个坐标系的关系,说白了就是:从三维世界到二维图像,再到计算机像素。理解了这个流程,后面的标定原理就水到渠成了。

记住我这句话:坐标系转换是标定的灵魂,搞懂了它,你就掌握了标定的一半


公众号:蓝海资料掘金营,微信deep3321