关于齐次坐标的理解(经典)

问题:两条平行线可以相交于一点

在欧氏几何空间,同一平面的两条平行线不能相交,这是我们都熟悉的一种场景。

然而,在透视空间里面,两条平行线可以相交,例如:火车轨道随着我们的视线越来越窄,最后两条平行线在无穷远处交于一点。

欧氏空间(或者笛卡尔空间)描述2D/3D几何非常适合,但是这种方法却不适合处理透视空间的问题(实际上,欧氏几何是透视几何的一个子集合),2维笛卡尔坐标可以表示为(x,y)。

如果一个点在无穷远处,这个点的坐标将会(∞,∞),在欧氏空间,这变得没有意义。平行线在透视空间的无穷远处交于一点,但是在欧氏空间却不能,数学家发现了一种方式来解决这个问题。

方法:齐次坐标

简而言之,齐次坐标就是用N+1维来代表N维坐标

我们可以在一个2D笛卡尔坐标末尾加上一个额外的变量w来形成2D齐次坐标,因此,一个点(X,Y)在齐次坐标里面变成了(x,y,w),并且有

X = x/w

Y = y/w

例如,笛卡尔坐标系下(1,2)的齐次坐标可以表示为(1,2,1),如果点(1,2)移动到无限远处,在笛卡尔坐标下它变为(∞,∞),然后它的齐次坐标表示为(1,2,0),因为(1/0, 2/0) = (∞,∞),我们可以不用”∞"来表示一个无穷远处的点了,哈哈。

为什么叫齐次坐标?

我们把齐次坐标转化为笛卡尔坐标的方法是前面n-1个坐标分量分别除以最后一个分量即可。

转化齐次坐标到笛卡尔坐标的过程中,我们有一个发现,例如:

你会发现(1, 2, 3), (2, 4, 6) 和(4, 8, 12)对应同一个Euclidean point (1/3, 2/3),任何标量的乘积,例如(1a, 2a, 3a) 对应 笛卡尔空间里面的(1/3, 2/3) 。因此,这些点是“齐次的”,因为他们代表了笛卡尔坐标系里面的同一个点。换句话说,齐次坐标有规模不变性。

证明:两条直线可以相交

考虑如下方程组:

我们知道在笛卡尔坐标系里面,该方程组无解,因为C ≠ D,如果C=D,两条直线就相同了。

让我们在透视空间里面,用齐次坐标x/w, y/w代替x ,y,

现在我们有一个解(x, y, 0),两条直线相交于(x, y, 0),这个点在无穷远处。

小结:齐次坐标在图形学中是一个非常基础的概念,例如3D场景映射到2D场景的过程中

参考: http://www.songho.ca/math/homogeneous/homogeneous.html

时间: 2024-10-12 14:45:04

关于齐次坐标的理解(经典)的相关文章

齐次坐标的理解

1. 齐次 事实上带齐次的概念很多,纯粹要说“齐次”的含义的话,似乎比较抽象难懂,所以我觉得给出一个具体的齐次的东西来解释可能会更好一点. 下面我要解释的齐次坐标(homogeneous coordinates)是我所熟悉的计算机视觉和图形学这两个领域中经常要用到的概念,同时,坐标也是一般人都可以理解的东西. 二维空间中的一个点是用二元组表示的.我们可以增加一个额外的坐标得到三元组,同时我们声明这是同一个点.这看起来完全无害,因为我们可以很简单地通过增加或者删除最后一个坐标值来在两种表示方式之间

[转]对齐次坐标的理解

  “齐次坐标表示是计算机图形学的重要手段之一,它既能够用来明确区分向量和点,同时也更易用于进行仿射(线性)几何变换.”—— F.S. Hill, JR. 齐次坐标主要是应用在矩阵转换中,我们通常运算的坐标系是“笛卡尔坐标系”,我们已经习惯了笛卡尔坐标系的表述方式,一个点都有唯一对应的数据值来表示,比如原点我们就记做(0,0)点.而笛卡尔坐标系和齐次坐标系的根本区别在于“齐次性”. 所谓齐次坐标就是将一个原本是n维的向量用一个n+1维向量来表示. 显然一个向量的齐次表示是不唯一的,齐次坐标的h取

7款经典游戏 诠释高级算法精髓

第1章 欢迎来到看得见的算法 欢迎来到看得见的算法.这个课程将以独一无二的方式,向你展示算法究竟有什么用,在实际项目中能做什么,并向你一一展示通过学习这个课程,你将能够制作出多么酷炫的程序:) 第2章 要想看得见,先要搞定GUI编程 在这一章,你将从0开始接触Java Swing编程,进入GUI的编程世界.通过这一章的学习,你将了解Java Swing最基本的用法.在这一章的最后,你将能够使用Java Swing制作简单额动画,并且能够使用键盘鼠标进行交互. 第3章 概率模拟算法 什么是蒙特卡洛

看的见的算法 7个经典应用诠释算法精髓

第1章 欢迎来到看得见的算法欢迎来到看得见的算法.这个课程将以独一无二的方式,向你展示算法究竟有什么用,在实际项目中能做什么,并向你一一展示通过学习这个课程,你将能够制作出多么酷炫的程序:)1-1 欢迎来到看得见的算法1-2 学习这个课程将完成什么项目?1-3 关于本课程的编程环境1-4 更多学习本课程的注意事项 第2章 要想看得见,先要搞定GUI编程在这一章,你将从0开始接触Java Swing编程,进入GUI的编程世界.通过这一章的学习,你将了解Java Swing最基本的用法.在这一章的最

Pro ASP.NET Core MVC 6th 第三章

第三章 MVC 模式,项目和约定 在深入了解ASP.NET Core MVC的细节之前,我想确保您熟悉MVC设计模式背后的思路以及将其转换为ASP.NET Core MVC项目的方式. 您可能已经了解本章中讨论的一些想法和约定,特别是如果您已经完成了高级ASP.NET或C#开发. 如果没有,我鼓励你仔细阅读 - 深入地理解隐藏在MVC背后的东西可以帮助你在通读本书时更好地与MVC框架的功能联系起来. MVC的历史 模型视图控制器模式起源于20世纪70年代后期,来自施乐PARC的Smalltalk

2.5年, 从0->阿里

从来没有想到自己的求职之路会这么顺利, 第一次投阿里就拿到了offer, 以前一直都是做好被刷的准备的... 3月31号晚上收到了来自阿里的正式offer, 签下录取意向书, 粗略算了一下, 从2012年9月份正式入学进入计算机系到2015年3月签下阿里offer, 大约两年半的时间, 这期间有很多人值得感谢: 磊哥, 立萍, 宋艺, 兴华老师... 发生了很多事儿: 从最初的懵懵懂懂到后来的立志进入像阿里一样的一线互联网企业, 从对计算机一窍不通到有自己的目标和兴趣爱好, 从不知道技术博客是啥

静态频繁子图挖掘算法用于动态网络——gSpan算法研究

摘要 随着信息技术的不断发展,人类可以很容易地收集和储存大量的数据,然而,如何在海量的数据中提取对用户有用的信息逐渐地成为巨大挑战.为了应对这种挑战,数据挖掘技术应运而生,成为了最近一段时期数据科学的和人工智能领域内的研究热点.数据集中的频繁模式作为一种有价值的信息,受到了人们的广泛关注,成为了数据挖掘技术研究领域内的热门话题和研究重点. 传统的频繁模式挖掘技术被用来在事务数据集中发现频繁项集,然而随着数据挖掘技术应用到非传统领域,单纯的事务数据结构很难对新的领域的数据进行有效的建模.因此,频繁

从0到阿里

从来没有想到自己的求职之路会这么顺利, 第一次投阿里就拿到了offer, 以前一直都是做好被刷的准备的... 3月31号晚上收到了来自阿里的正式offer, 签下录取意向书, 粗略算了一下, 从2012年9月份正式入学进入计算机系到2015年3月签下阿里offer, 大约两年半的时间, 这期间有很多人值得感谢: 磊哥, 立萍, 宋艺, 兴华老师... 发生了很多事儿: 从最初的懵懵懂懂到后来的立志进入像阿里一样的一线互联网企业, 从对计算机一窍不通到有自己的目标和兴趣爱好, 从不知道技术博客是啥

图像坐标: 世界坐标系,相机坐标系,图像坐标系

        世界坐标系(XW,YW,ZW):其是目标物体位置的参考系.除了无穷远,世界坐标可以根据运算方便与否自由放置.在双目视觉中世界坐标系主要有三个用途:1.标定时确定标定物的位置2.作为双目视觉的系统参考系,给出两个摄像机相对世界坐标系的关系,从而求出相机之间的相对关系3.作为重建得到三维坐标的容器,盛放重建后的物体的三维坐标.世界坐标系是将看见中物体纳入运算的第一站.         摄像机坐标系(XC,YC,ZC):其是摄像机站在自己角度上衡量的物体的坐标系.摄像机坐标系的原点在摄