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

本文详细介绍了像素坐标系、图像坐标系、相机坐标系及世界坐标系之间的转换原理。阐述了不同坐标系之间的数学关系,并通过矩阵形式展示了这些转换的具体实现。
像素坐标系、图像坐标系、相机坐标系、世界坐标系


上周发现对这四个坐标系之间的转换没有一个清晰的概念,这个下午写第一篇博客重新学习记录一下。

在这里插入图片描述

图片来源:《视觉SLAM十四讲》第二版P91


1、图像坐标系 → \rightarrow ​像素坐标系

像素坐标系通常的定义方式是:原点 o   ′ o~' o 位于图像的左上角, u u u轴向右与 x x x轴平行, v v v轴向下与 y y y轴平行。

图像坐标系在这里指的是成像平面坐标系,在《视觉SLAM十四讲》中像素坐标系和图像坐标系是一样的(第一版 P72)。

在这里插入图片描述

像素坐标系与图像坐标系之间相差了一个缩放和平移,由此图像坐标系 P   ′ P~' P 的坐标 [ X   ′ , Y   ′ ] [X~',Y~'] [X ,Y ]与像素坐标 [ u , v ] [u,v] [u,v]的关系为:
{ u = α X ′ + c x v = β Y ′ + c y \begin{cases} u=\alpha X'+c_x \\ v=\beta Y'+c_y \end{cases} {u=αX+cxv=βY+cy


2、图像坐标系 → \rightarrow ​相机坐标系

由于三角形相似关系有(去掉负号):
Z f = X X ′ = Y Y ′ {Z \over f} = {X \over {X'}} = {Y \over {Y'}} fZ=XX=YY
所以式(1)变为:
{ u = f x X Z + c x v = f y Y Z + c y \begin{cases} u=f_x {X \over Z}+c_x \\ v=f_y {Y \over Z}+c_y \end{cases} {u=fxZX+cxv=fyZY+cy
转换为矩阵形式为:
( u v 1 ) = 1 Z ( f x 0 c x 0 f y c y 0 0 1 ) ( X Y Z ) ≜ 1 Z K P \left(\begin{array}{l} u \\ v \\ 1 \end{array}\right)={1 \over Z} \left(\begin{array}{ccc} f_x & 0 & c_x \\ 0 & f_y & c_y \\ 0 & 0 & 1 \end{array}\right)\left(\begin{array}{l} X \\ Y \\ Z \end{array}\right) \triangleq \boldsymbol{{1 \over Z}KP} uv1 =Z1 fx000fy0cxcy1 XYZ Z1KP

Z ( u v 1 ) = ( f x 0 c x 0 f y c y 0 0 1 ) ( X Y Z ) ≜ K P Z\left(\begin{array}{l} u \\ v \\ 1 \end{array}\right)=\left(\begin{array}{ccc} f_x & 0 & c_x \\ 0 & f_y & c_y \\ 0 & 0 & 1 \end{array}\right)\left(\begin{array}{l} X \\ Y \\ Z \end{array}\right) \triangleq \boldsymbol{KP} Z uv1 = fx000fy0cxcy1 XYZ KP

其中, K K K为内参数矩阵(Camera Intrinsics)。


3、相机坐标系 → \rightarrow ​世界坐标系

齐次坐标下,相机坐标和世界坐标的关系为
p c = T c w p w = T w c − 1 p w p_c=T_{cw}p_w=T_{wc}^{-1}p_w pc=Tcwpw=Twc1pw
非齐次坐标下,相机坐标和世界坐标的关系为
P c = R P w + t P_c=RP_w+t Pc=RPw+t
其中,相机的位姿 R , t R,t Rt称为相机的外参数矩阵(Camera Extrinsics)。

所以式(4)转化为
Z P u v = Z [ u v 1 ] ≜ K P = K ( R P w + t ) = K T P w Z{P_{uv}} = Z\left[ {\begin{matrix} u \cr v \cr 1 \cr \end{matrix} } \right] \triangleq \boldsymbol{KP} = \boldsymbol{K(R{P_w} + t) = KT{P_w}} ZPuv=Z uv1 KP=K(RPw+t)=KTPw
注意最后一个式子隐含了一次其次坐标到非齐次坐标的转换。


总结

最后简单归纳关系图如下:

在这里插入图片描述

在这里插入图片描述

单目相机的成像过程(P90):

在这里插入图片描述


References

像素坐标系与图像坐标系_在路上DI蜗牛的博客-优快云博客_图像坐标系

世界坐标系,相机坐标系,图像坐标系,像素坐标系的转换 - 知乎 (zhihu.com)

### 不同坐标系之间的关系 在计算机视觉领域,多个坐标系用于描述物体的位置方向。这些坐标系包括世界坐标系相机坐标系图像坐标系以及像素坐标系。 #### 世界坐标系 (World Coordinate System) 这是全局参考框架,在此系统中定义了场景中的所有对象位置。它通常被设定为固定不变的空间参照点[^2]。 #### 相机坐标系 (Camera Coordinate System) 当摄像头捕捉到三维世界的景象时,会创建一个新的局部坐标体系——即摄像机坐标系。该坐标系原点位于摄像机光心处,并且Z轴指向拍摄方向。通过一系列变换可以将任何给定的世界坐标映射至对应的摄像机坐标下[^1]。 #### 图像坐标系 (Image Coordinate System) 一旦光线穿过镜头并投射到传感器平面上,则形了二维平面内的表示形式—这就是所谓的图像坐标系。此时X' Y' 轴分别平行于像面的水平线与垂直线;而 z 值则代表距离焦距的距离[^3]。 #### 像素坐标系 (Pixel Coordinate System) 最终,为了能够在显示器上呈现图像数据,还需要进一步把上述得到的结果转化为具体的像素位置。这一步骤涉及到标准化设备单位(NDC)向实际分辨率坐标的转变过程。 ### 各种转换方法概述 要实现从一种坐标系到另一种的有效过渡,主要依赖以下几个关键矩阵: - **Model Matrix**: 将几何体由其原始状态移动旋转缩放等操作后放置入适当位置; - **View Matrix**: 描述如何调整视角来模拟虚拟摄影装置的动作效果; - **Projection Matrix**: 定义投影方式从而决定近大远小的关系特性。 具体来说,顶点最初处于本地空间(local space),随后依次经历如下阶段直至为屏幕上可见的形式: 1. 应用模型变换(model transformation)使物体进入世界坐标(world coordinate)[^2]; 2. 使用视图变换(view transformation)将其置于对于观看者而言恰当的角度方位; 3. 经过投影变换(projection transformation),使得景物呈现出合理的透视感观特征; 4. 执行裁切(clipping)以去除超出视野范围的部分; 5. 实施齐次除法(homogeneous divide)/透视除法(perspective division); 6. 映射(mapping)至规范化后的窗口坐标(normalized device coordinates, NDCs)[-3]; 7. 最终完屏幕映射(screen mapping). ```cpp // C++ code snippet demonstrating basic transformations using OpenGL matrices. glm::mat4 model = glm::translate(glm::mat4(1.0f), position); // Model matrix example glm::mat4 view = glm::lookAt(cameraPos, cameraFront, cameraUp); // View matrix creation glm::mat4 projection = glm::perspective(glm::radians(fov), aspectRatio, nearPlane, farPlane); // Projection setup ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值