2. 坐标系基础
在3D视觉定位与手眼标定中,坐标系是描述空间点位置的数学基础。从真实世界的三维点,到相机感光芯片上的二维像点,再到最终的数字图像像素,需要经过四个坐标系的四次变换。理解这些坐标系及其转换关系,是掌握相机模型、标定与定位算法的前提。
2.1 四大坐标系定义
| 坐标系名称 | 维度 | 单位 | 原点与轴定义 | 典型范围 |
|---|---|---|---|---|
| 世界坐标系 (World) | 3D | mm / m | 用户自定义;Xw、Yw、Zw 轴遵循右手定则 | 整个工作空间 |
| 相机坐标系 (Camera) | 3D | mm / m | 原点在相机光心;Zc 轴沿光轴向前;Xc、Yc 平行于成像平面 | 相机前方视场 |
| 图像坐标系 (Image) | 2D | mm | 原点在光轴与成像平面交点(主点);x 轴向右,y 轴向下 | 传感器物理尺寸 |
| 像素坐标系 (Pixel) | 2D | pixel | 原点在图像左上角;u 轴向右,v 轴向下 | 0 ~ 图像宽高 |
关键区分:图像坐标系与像素坐标系虽然都在成像平面上,但图像坐标系以物理长度(mm)为单位,原点在主点;像素坐标系以像素为单位,原点在左上角。两者之间的转换涉及像素尺寸和主点偏移。
2.2 坐标系转换链路
一个世界坐标系中的三维点 Pw,最终成为像素坐标系中的二维点 puv,需要经历以下三步变换:
- 刚体变换:世界坐标系 → 相机坐标系(旋转 + 平移)
- 投影变换:相机坐标系 → 图像坐标系(透视投影)
- 仿射变换:图像坐标系 → 像素坐标系(缩放 + 平移)
核心公式链:
Pc = R * Pw + t (刚体变换)
x = f * Xc / Zc (投影变换)
y = f * Yc / Zc
u = x / dx + u0 (仿射变换)
v = y / dy + v0
2.3 刚体变换:世界坐标系 → 相机坐标系
刚体变换描述了两个三维直角坐标系之间的旋转与平移,不改变物体的形状和大小。旋转矩阵 R(3×3 正交矩阵)和平移向量 t(3×1)共同构成相机的外参矩阵:
| Xc | | r11 r12 r13 | | Xw | | tx |
| Yc | = | r21 r22 r23 | | Yw | + | ty |
| Zc | | r31 r32 r33 | | Zw | | tz |
齐次坐标形式(便于矩阵连乘):
| Xc | | r11 r12 r13 tx | | Xw |
| Yc | = | r21 r22 r23 ty | | Yw |
| Zc | | r31 r32 r33 tz | | Zw |
| 1 | | 0 0 0 1 | | 1 |
注意:旋转矩阵 R 必须满足正交性(RTR = I)且行列式为 +1。实际标定中常用旋转向量(Rodrigues 表示法)或四元数来避免正交约束带来的数值问题。
2.4 投影变换:相机坐标系 → 图像坐标系
投影变换基于针孔相机模型,将三维点 Pc(Xc, Yc, Zc) 投影到成像平面上。根据相似三角形原理:
x = f * Xc / Zc
y = f * Yc / Zc
其中 f 为相机焦距(单位:mm)。齐次矩阵形式:
| x | | f 0 0 0 | | Xc |
| y | = | 0 f 0 0 | | Yc |
| 1 | | 0 0 1 0 | | Zc |
| 1 |
这一变换将三维信息压缩为二维,丢失了深度 Zc,因此单目相机无法直接从单帧图像恢复三维坐标。
2.5 仿射变换:图像坐标系 → 像素坐标系
图像坐标系 (x, y) 到像素坐标系 (u, v) 的变换包含缩放和平移:
u = x / dx + u0
v = y / dy + v0
其中:
- dx, dy:单个像素在 x 和 y 方向的物理尺寸(mm/pixel)
- (u0, v0):主点在像素坐标系中的坐标(通常接近图像中心)
齐次矩阵形式:
| u | | 1/dx 0 u0 | | x |
| v | = | 0 1/dy v0 | | y |
| 1 | | 0 0 1 | | 1 |
2.6 完整变换链与内参矩阵
将上述三步合并,得到从世界坐标到像素坐标的完整投影方程:
| u | | fx 0 u0 0 | | R t | | Xw |
| v | = | 0 fy v0 0 | | 0 1 | | Yw |
| 1 | | 0 0 1 0 | | Zw |
| 1 |
其中:
- 内参矩阵 K:包含 fx = f/dx, fy = f/dy, u0, v0,由相机内部结构决定
- 外参矩阵 [R | t]:描述世界坐标系到相机坐标系的刚体变换
标定的本质:通过已知三维点与对应像素点,求解内参矩阵 K 和外参矩阵 [R | t] 的过程,就是相机标定。
2.7 坐标系转换关系总览
2.8 齐次坐标与矩阵连乘
使用齐次坐标可以将上述所有变换统一为矩阵乘法形式,便于计算和优化:
| u | | fx 0 u0 0 | | r11 r12 r13 tx | | Xw |
| v | = | 0 fy v0 0 | · | r21 r22 r23 ty | · | Yw |
| 1 | | 0 0 1 0 | | r31 r32 r33 tz | | Zw |
| 0 0 0 1 | | 1 |
简写为:
p_uv = K · [R | t] · Pw
齐次坐标的好处:将原本需要分步计算的旋转、平移、投影、缩放统一为 3×4 或 4×4 矩阵的连乘,在标定优化和手眼标定中可以直接使用最小二乘法或非线性优化求解。
2.9 坐标系转换中的常见问题
| 问题 | 原因 | 解决方法 |
|---|---|---|
| 像素坐标与物理坐标混淆 | 未区分图像坐标系与像素坐标系 | 明确使用 dx, dy 进行单位转换 |
| 主点偏移忽略 | 假设主点在图像正中心 | 标定获取真实 u0, v0 |
| 旋转矩阵非正交 | 数值计算误差导致 | 使用 Rodrigues 或四元数表示 |
| 深度信息丢失 | 单目透视投影固有特性 | 双目立体、结构光或多帧三角化 |
| 畸变未校正 | 镜头径向/切向畸变 | 标定畸变参数并去畸变 |
工程实践提示:在编写标定或定位代码时,务必确认数据所在的坐标系阶段。例如,从相机读取的 (u, v) 是像素坐标,必须先转换为图像坐标(去畸变),再结合深度信息反投影到相机坐标系,最后通过外参转换到世界坐标系。顺序错误会导致定位结果完全错误。