世界坐标,相机坐标与像素坐标
相机模型中的4个坐标系及其关系
世界坐标系 相机坐标系 像素坐标系
计算 3D
点的 2D
坐标
本小节我们将介绍点的世界坐标系坐标是如何转化到它们在图像中的像素坐标的位置的。
世界坐标系和世界空间
当场景中的一个点被首次定义,我们称它的坐标在世界空间中被指定:该点的坐标是相对于全球或世界直角坐标系描述的。世界坐标系的原点成为世界原点,在世界空间中定义的任何点的坐标都是相对于该原点(坐标为[0, 0, 0]的点)描述的。点在世界空间中的表示如 Fig.4
所示。
4×4
矩阵作为直角坐标系的可视化
3维空间中的转换可以通过3种操作来完成:平移、旋转和放缩。这3种操作的任意组合都是线性变换,都可以用一个 4×4
矩阵来表示。记住,沿对角线的前 3 个系数编码放缩比例(矩阵中的c00
,c11
和c22
),最后一行的前 3 个值编码平移(c30
,c31
,c32
--假设你是用行主序惯例),3×3左上角内矩阵编码旋转(红 绿 蓝 系数)。
总之,一个4x4矩阵代表一个坐标系(或者,反过来说,一个4x4矩阵可以代表任何笛卡尔坐标系)。你必须始终把4x4矩阵看作是一个坐标系而已,反之亦然(我们有时也会说 "本地 "坐标系是关于 "全球 "坐标系的,在我们的例子中,就是世界坐标系)。我们总是可以知道事物相对于世界坐标系的位置。不过,为了简化计算,用局部坐标系来定义事物往往是很方便的(我们将通过一个例子进一步说明这一点)。这就是 "本地 "坐标系的用途。
将点从一个坐标系转化到另一个坐标系
不同的坐标,同一个点
假设我们知道将一个坐标系A转换为一个坐标系B的4x4矩阵M。在这种情况下,如果我们用M的逆来转换一个坐标最初定义为相对于B的点(接下来我们将解释为什么我们使用M的逆而不是M),我们将得到点P相对于A的坐标。
相机坐标系和相机空间
相机所在的局部坐标系
场景中的点是在世界坐标空间中定义的。然而,为了将它们投射到画布的表面,我们首先需要将三维点的坐标从世界空间转换到摄像机空间。这可以通过将点的世界坐标乘以相机到世界矩阵的逆值来完成。
我们现在可以通过使用透视投影方程(用点的Z坐标的倒数除以点的坐标),在相机空间中使用所得到的点来计算它在画布上的2D坐标。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· 地球OL攻略 —— 某应届生求职总结