🎯 立体视觉中的四大坐标系

从3D世界到2D像素:揭秘计算机视觉的空间变换之旅

W世界坐标系

全局3D参考系

定义真实世界中物体的绝对位置

特点:

• 原点:场景中的固定点

• 单位:实际物理单位(米、毫米等)

• 坐标:(Xw, Yw, Zw)

• 用途:描述物体在真实世界中的绝对位置

C相机坐标系

以相机为中心的3D坐标系

光心为原点,光轴为Z轴

特点:

• 原点:相机光心(投影中心)

• Z轴:沿光轴方向(向前)

• 坐标:(Xc, Yc, Zc)

• 用途:简化透视投影计算

I图像坐标系

成像平面上的2D坐标系

物理单位的图像平面坐标

特点:

• 原点:主点(光轴与成像平面交点)

• 单位:物理单位(毫米)

• 坐标:(x, y)

• 用途:透视投影的中间结果

P像素坐标系

数字图像的离散坐标系

以像素为单位的图像坐标

特点:

• 原点:图像左上角像素(0,0)

• 单位:像素

• 坐标:(u, v),整数值

• 用途:数字图像处理和显示

🔄 坐标变换流程

世界坐标

(Xw, Yw, Zw)

真实3D位置

相机坐标

(Xc, Yc, Zc)

旋转+平移

图像坐标

(x, y)

透视投影

像素坐标

(u, v)

缩放+偏移

📐 坐标变换公式推导

1️⃣ 世界坐标系 → 相机坐标系

刚体变换(旋转+平移)
[Xc]
[Yc]
[Zc]
= R · [Xw]
[Yw]
[Zw]
+ [tx]
[ty]
[tz]

其中:

• R 是 3×3 旋转矩阵,描述相机相对于世界坐标系的姿态

• T = [tx, ty, tz]ᵀ 是平移向量,描述相机在世界坐标系中的位置

• 旋转矩阵 R 是正交矩阵,满足 R⁻¹ = Rᵀ

• 这个变换将世界坐标系中的点转换到相机坐标系

2️⃣ 相机坐标系 → 图像坐标系

透视投影变换
x = f × XcZc
y = f × YcZc

推导过程:

根据相似三角形原理:

光线从3D点 (Xᶜ, Yᶜ, Zᶜ) 投射到成像平面
成像平面距离光心的距离为焦距 f
由相似三角形:x/f = Xᶜ/Zᶜ,y/f = Yᶜ/Zᶜ

• f 是相机的焦距(单位:mm)

• 注意:Z坐标必须为正值(物体在相机前方)

3️⃣ 图像坐标系 → 像素坐标系

尺度变换和坐标原点平移
u = xdx + u₀
v = ydy + v₀

参数说明:

• dₓ, dᵧ:每个像素在 X, Y 方向上的物理尺寸(mm/pixel)

• (u₀, v₀):主点在像素坐标系中的位置(通常接近图像中心)

• 坐标原点从图像中心移动到左上角

• Y轴方向可能需要翻转(图像坐标系Y轴向下)

4️⃣ 完整的投影矩阵

齐次坐标表示
[u]
[v]
[1]
= K · [R | T] · [Xʷ]
[Yʷ]
[Zʷ]
[1]
齐次坐标下的完整投影变换

内参矩阵 K:

K = [fx    0    u₀]
[ 0    fy    v₀]
[ 0     0     1 ]

外参矩阵 [R | T]:

[R | T] = [r₁₁  r₁₂  r₁₃  |  tx]
[r₂₁  r₂₂  r₂₃  |  ty]
[r₃₁  r₃₂  r₃₃  |  tz]

参数说明:

• fx = f/dₓ, fy = f/dᵧ:像素焦距

• (u₀, v₀):主点在像素坐标系中的坐标

• R:3×3 旋转矩阵,T:3×1 平移向量

• 完整的投影矩阵 P = K[R | T] 是 3×4 矩阵

5️⃣ 逆变换(深度估计)

从像素坐标恢复3D信息
步骤1: 像素 → 图像坐标
x = (u - u₀) · dₓ
y = (v - v₀) · dᵧ
步骤2: 图像 → 相机坐标(需要深度Z)
Xᶜ = x · Z/f
Yᶜ = y · Z/f
Zᶜ = Z
步骤3: 相机 → 世界坐标
[Xʷ, Yʷ, Zʷ]ᵀ = R⁻¹([Xᶜ, Yᶜ, Zᶜ]ᵀ - T)

关键问题:从单张图像无法直接获得深度信息Z

解决方案:

• 立体视觉:使用两个相机进行三角测量

• 深度传感器:结合RGB-D相机

• 先验知识:已知物体尺寸或场景约束

6️⃣ 详细数学推导过程

完整的坐标变换链
步骤1: 世界 → 相机坐标
[Xc]       [r₁₁  r₁₂  r₁₃]   [Xw]     [tx]
[Yc] = [r₂₁  r₂₂  r₂₃] × [Yw] + [ty]
[Zc]       [r₃₁  r₃₂  r₃₃]   [Zw]     [tz]
步骤2: 相机 → 图像坐标
x = f × (Xᶜ / Zᶜ)
y = f × (Yᶜ / Zᶜ)
步骤3: 图像 → 像素坐标
u = (x / dₓ) + u₀ = (f × Xᶜ) / (dₓ × Zᶜ) + u₀
v = (y / dᵧ) + v₀ = (f × Yᶜ) / (dᵧ × Zᶜ) + v₀
最终结果: 合并表达式
u = (fx × Xᶜ) / Zᶜ + u₀
v = (fy × Yᶜ) / Zᶜ + v₀
其中:fx = f/dₓ, fy = f/dᵧ

关键理解:

• 每个步骤都是可逆的(除了深度信息的丢失)

• 旋转和平移是刚体变换,保持形状和大小不变

• 透视投影是非线性变换,远处物体看起来更小

• 像素化是离散化过程,可能引入量化误差

📋 公式速查表

立体视觉核心公式总览
变换类型 公式 用途 误差特性
世界→相机 Pc = R·Pw + T 坐标系转换 标定精度影响
相机→图像 x = f·Xc/Zc
y = f·Yc/Zc
透视投影 深度敏感
图像→像素 u = fx·Xc/Zc + u0
v = fy·Yc/Zc + v0
数字化 量化误差
深度估计 Z = f·B/d 双目测距 误差∝Z²
深度精度 σZ = Z²/(f·B)·σd 误差分析 距离平方关系
视场角 FOV = 2·arctan(w/2f) 系统设计 线性关系

📏 常用参数范围

• 焦距: 5-200mm
• 基线: 50-300mm
• 像素尺寸: 2-10μm
• 视差精度: 0.1-1 pixel

⚡ 优化建议

• 增大基线提高深度精度
• 长焦镜头减少畸变
• 亚像素算法提升精度
• 多尺度匹配增强鲁棒性