当前位置: 首页 > news >正文

相机坐标系、图像坐标系和世界坐标系

在计算机视觉和摄影测量中,相机坐标系图像坐标系世界坐标系是三个核心的坐标系系统,它们共同描述了从真实世界到二维图像的映射过程。以下是它们的详细解释及相互关系:


1. 三大坐标系的定义

(1) 世界坐标系(World Coordinate System, ( \mathbf{W} ))
  • 作用:描述物体在真实三维空间中的绝对位置。
  • 原点:用户自定义(如场景中的某个固定点)。
  • 坐标轴:通常为 ( X_w, Y_w, Z_w )(右手系)。
  • 特点
    • 所有物体和相机的位姿均基于此坐标系定义。
    • 在SLAM、三维重建中用于统一多视角数据。
(2) 相机坐标系(Camera Coordinate System, ( \mathbf{C} ))
  • 作用:以相机为中心的三维坐标系。
  • 原点:相机的光心(镜头中心)。
  • 坐标轴
    • ( Z_c ):沿光轴指向拍摄方向(正前方)。
    • ( X_c ):向右,与图像坐标系u轴平行。
    • ( Y_c ):向下,与图像坐标系v轴平行。
  • 特点
    • 用于描述物体相对于相机的位置。
    • 通过外参(( R, t ))与世界坐标系关联。
(3) 图像坐标系(Image Coordinate System, ( \mathbf{I} ))
  • 作用:描述点在二维图像中的位置。
  • 原点:图像左上角(像素坐标系)或光轴中心(归一化坐标系)。
  • 坐标轴
    • ( u ):向右(像素列方向)。
    • ( v ):向下(像素行方向)。
  • 特点
    • 最终输出为像素坐标(如 ( (u,v) ))。
    • 通过内参(( K ))与相机坐标系关联。

2. 坐标系间的转换关系

(1) 世界坐标系 → 相机坐标系

通过**外参(Extrinsic Parameters)**转换:
[
\begin{bmatrix}
X_c \
Y_c \
Z_c \
\end{bmatrix}
= R \cdot \begin{bmatrix}
X_w \
Y_w \
Z_w \
\end{bmatrix} + t
]

  • ( R ):3×3旋转矩阵(世界→相机坐标系的旋转)。
  • ( t ):3×1平移向量(相机原点在世界坐标系中的位置)。
(2) 相机坐标系 → 图像坐标系

通过**内参(Intrinsic Parameters)**投影:
[
\begin{cases}
u = f_x \cdot \frac{X_c}{Z_c} + c_x \
v = f_y \cdot \frac{Y_c}{Z_c} + c_y \
\end{cases}
]

  • ( f_x, f_y ):x/y方向焦距(像素单位)。
  • ( c_x, c_y ):主点坐标(光轴与图像平面的交点)。
(3) 完整投影流程(世界→图像)

[
\begin{bmatrix}
u \
v \
1 \
\end{bmatrix}
= K \cdot \begin{bmatrix}
R \mid t
\end{bmatrix} \cdot \begin{bmatrix}
X_w \
Y_w \
Z_w \
1 \
\end{bmatrix}
]

  • ( K ):内参矩阵,( [R \mid t] ):外参矩阵。

3. 关键图示

世界坐标系 (X_w, Y_w, Z_w)|| 外参 [R|t]↓
相机坐标系 (X_c, Y_c, Z_c)|| 内参 K↓
图像坐标系 (u, v)

4. 实际应用示例

示例1:物体检测
  • 输入:图像中的像素坐标 ( (u,v) )。
  • 目标:计算物体在世界坐标系中的位置 ( (X_w, Y_w, Z_w) )。
  • 步骤
    1. 通过内参反推相机坐标系下的方向(需已知深度 ( Z_c ))。
    2. 通过外参反推世界坐标。
示例2:增强现实(AR)
  • 输入:已知世界坐标系中的虚拟物体坐标。
  • 目标:在图像中正确渲染物体。
  • 步骤
    1. 通过外参将世界坐标转换到相机坐标。
    2. 通过内参投影到图像坐标。

5. 常见问题

(1) 为什么需要多个坐标系?
  • 解耦问题:内参描述相机本身特性,外参描述相机位姿,世界坐标描述全局环境。
  • 灵活性:相机移动时只需更新外参,内参保持不变。
(2) 图像坐标系的原点在哪里?
  • OpenCV默认:左上角(( u )向右,( v )向下)。
  • 数学模型:光轴中心(主点 ( (c_x, c_y) ))。
(3) 如何从2D像素反推3D世界坐标?
  • 单目相机需附加约束(如平面假设、多视角三角化)。
  • 深度相机可直接获取 ( Z_c )(如RGB-D传感器)。

6. 数学公式总结

转换公式
世界→相机坐标系( \mathbf{P}_c = R \cdot \mathbf{P}_w + t )
相机→归一化坐标系( (x, y) = (X_c/Z_c, Y_c/Z_c) )
归一化→像素坐标系( u = f_x \cdot x + c_x ), ( v = f_y \cdot y + c_y )

如果需要具体代码实现(如OpenCV中的坐标系转换),可以进一步说明!

http://www.xdnf.cn/news/606727.html

相关文章:

  • redis 基本命令-17 (KEYS、EXISTS、TYPE、TTL)
  • 新手SEO高效入门实战精要
  • 40 岁 Windows 开启 AI 转型:从系统到生态的智能重构
  • 「MATLAB」计算校验和 Checksum
  • C++:动态刷新打印内容
  • 使用Gemini, LangChain, Gradio打造一个书籍推荐系统 (第二部分)
  • 【Elasticsearch】给所索引创建多个别名
  • 【Bluedroid】蓝牙HID Host disconnect流程源码解析
  • UE4游戏查找本地角色数据的方法-SDK
  • 从零开始的抽奖系统创作(4)
  • FPGA 42 ,时序约束深度解析与实战应用指南( FPGA 时序约束 )
  • 分享|16个含源码和数据集的计算机视觉实战项目
  • VMware虚拟机突然无法ssh连接
  • Spring Boot WebFlux流式返回全攻略:从基础到企业级实践
  • PHP7内核剖析 学习笔记 第八章 命名空间
  • Python打卡DAY34
  • 亚马逊搜索代理: 终极指南
  • 线性回归中涉及的数学基础
  • 嵌入式学习笔记 - freeRTOS链表中pxIndex->pxPrevious 与pxIndex->pxPrevious->的区别
  • DB-GPT扩展自定义Agent配置说明
  • 微信小程序调用蓝牙API “wx.writeBLECharacteristicValue()“ 报 errCode: 10008 的解决方案
  • GMP模型入门
  • Lyra学习笔记1地图角色加载流程
  • 树莓派WiringPi库
  • 大模型「瘦身」指南:从LLaMA到MobileBERT的轻量化部署实战
  • php 根据另一个数组中 create_time 的时间顺序,对原始数组进行排序。
  • Neo4j入门第一期(Cypher入门)
  • RabbitMQ ⑥-集群 || Raft || 仲裁队列
  • CentOS 7.6 升级 Openssl 及 Openssh 方法文档
  • Unity EventCenter 消息中心的设计与实现