齐次坐标 (Homogeneous Coordinate)

转载:http://www.360doc.com/content/11/0410/18/3698714_108650801.shtml(非源出处)

 齐次坐标表示是计算机图形学的重要手段之一,它既能够用来明确区分向量和点,同时也更易用于进行仿射(线性)几何变换。”—— F.S. Hill, JR。

对于一个向量v以及基oabc,可以找到一组坐标(v1,v2,v3),使得v = v1 a + v2 b + v3 c (1)

而对于一个点p,则可以找到一组坐标(p1,p2,p3),使得p - o = p1 a + p2 b + p3 c (2)

从上面对向量和点的表达,我们可以看出为了在坐标系中表示一个点(如p),我们把点的位置看作是对这个基的原点o所进行的一个位移,即一个向量--p - o(有的书中把这样的向量叫做位置向量--起始于坐标原点的特殊向量),我们在表达这个向量的同时用等价的方式表达出了点p:p = o + p1 a + p2 b + p3 c (3)

(1)(3)是坐标系下表达一个向量和点的不同表达方式。这里可以看出,虽然都是用代数分量的形式表达向量和点,但表达一个点比一个向量需要额外的信息。如果我写出一个代数分量表达(1, 4, 7),谁知道它是个向量还是个点!

我们现在把(1)(3)写成矩阵的形式:v = (v1 v2 v3 0) X (a b c o)

p = (p1 p2 p3 1) X (a b c o),这里(a,b,c,o)是坐标基矩阵,右边的列向量分别是向量v和点p在基下的坐标。这样,向量和点在同一个基下就有了不同的表达:3D向量的第4个代数分量是0,而3D点的第4个代数分量是1。像这种这种用4个代数分量表示3D几何概念的方式是一种齐次坐标表示。

这样,上面的(1, 4, 7)如果写成(1,4,7,0),它就是个向量;如果是(1,4,7,1),它就是个点。下面是如何在普通坐标(Ordinary Coordinate)和齐次坐标(Homogeneous Coordinate)之间进行转换:
(1)从普通坐标转换成齐次坐标时
如果(x,y,z)是个点,则变为(x,y,z,1);
如果(x,y,z)是个向量,则变为(x,y,z,0)

(2)从齐次坐标转换成普通坐标时
如果是(x,y,z,1),则知道它是个点,变成(x,y,z);
如果是(x,y,z,0),则知道它是个向量,仍然变成(x,y,z)

以上是通过齐次坐标来区分向量和点的方式。从中可以思考得知,对于平移T、旋转R、缩放S这3个最常见的仿射变换平移变换只对于点才有意义,因为普通向量没有位置概念,只有大小和方向.

旋转和缩放对于向量和点都有意义,你可以用类似上面齐次表示来检测。从中可以看出,齐次坐标用于仿射变换非常方便。

此外,对于一个普通坐标的点P=(Px, Py, Pz),有对应的一族齐次坐标(wPx, wPy, wPz, w),其中w不等于零。比如,P(1, 4, 7)的齐次坐标有(1, 4, 7, 1)、(2, 8, 14, 2)、(-0.1, -0.4, -0.7, -0.1)等等。因此,如果把一个点从普通坐标变成齐次坐标,给x,y,z乘上同一个非零数w,然后增加第4个分量w;如果把一个齐次坐标转换成普通坐标,把前三个坐标同时除以第4个坐标,然后去掉第4个分量。

由于齐次坐标使用了4个分量来表达3D概念,使得平移变换可以使用矩阵进行,从而如F.S. Hill, JR所说,仿射(线性)变换的进行更加方便。由于图形硬件已经普遍地支持齐次坐标与矩阵乘法,因此更加促进了齐次坐标使用,使得它似乎成为图形学中的一个标准。

以上很好的阐释了齐次坐标的作用及运用齐次坐标的好处。其实在图形学的理论中,很多已经被封装的好的API也是很有研究的,要想成为一名专业的计算机图形学的学习者,除了知其然必须还得知其所以然。这样在遇到问题的时候才能迅速定位问题的根源,从而解决问题。


齐次坐标的实例:

转载:http://www.cnblogs.com/kesalin/archive/2009/09/09/homogeneous.html

问题: 两条平行线会相交


铁轨在无限远处相交于一点

在欧几里得几何空间里,两条平行线永远都不会相交。但是在投影空间中,如右图中的两条铁轨在地平线处却是会相交的,因为在无限远处它们看起来相交于一点。

在欧几里得(或称笛卡尔)空间里描述2D/3D 几何物体是很理想的,但在投影空间里面却并不见得。 我们用 (x, y) 表示笛卡尔空间中的一个 2D 点,而处于无限远处的点 (∞,∞) 在笛卡尔空间里是没有意义的。投影空间里的两条平行线会在无限远处相交于一点,但笛卡尔空间里面无法搞定这个问题(因为无限远处的点在笛卡尔空间里是没有意义的),因此数学家想出齐次坐标这个点子来了。

 

解决办法: 齐次坐标

由 August Ferdinand Möbius 提出的齐次坐标(Homogeneous coordinates)让我们能够在投影空间里进行图像和几何处理,齐次坐标用 N + 1个分量来描述 N 维坐标。比如,2D 齐次坐标是在笛卡尔坐标(X, Y)的基础上增加一个新分量 w,变成(x, y, w),其中笛卡尔坐标系中的大X,Y 与齐次坐标中的小x,y有如下对应关系:

X = x/w
Y = y/w


笛卡尔坐标中的点 (1, 2) 在齐次坐标中就是 (1, 2, 1) 。如果这点移动到无限远(∞,∞)处,在齐次坐标中就是 (1, 2, 0) ,这样我们就避免了用没意义的"∞" 来描述无限远处的点。

为什么叫齐次坐标?

前面提到,我们分别用齐次坐标中的 x 和 y 除以 w 就得到笛卡尔坐标中的 x 和 x,如图所示:



仔细观察下面的转换例子,可以发现些有趣的东西:

上图中,点 (1, 2, 3), (2, 4, 6) 和 (4, 8, 12) 对应笛卡尔坐标中的同一点 (1/3, 2/3)。 任意数量积的(1a, 2a, 3a) 始终对应于笛卡尔坐标中的同一点 (1/3, 2/3)。因此这些点是“齐次”的,因为他们始终对应于笛卡尔坐标中的同一点。换句话说,齐次坐标描述缩放不变性(scale invariant

证明: 两平行线可以相交

笛卡尔坐标系中,对于如下两个直线方程:


如果 C ≠ D,以上方程组无解;如果 C = D,那这两条线就是同一条线了。

下面我们用 x/w, y/w 代替 x, y 放到投影空间里来求解:


现在我们就可以在 C ≠ D 的情况得到一组解 (x, y, 0),代入得 (C - D)w = 0,因为 C ≠ D,所以 w = 0。因而,两条平行线相交于投影空间中无限远处的一点 (x, y, 0)。

齐次坐标在计算机图形学中是有用的,将 3D 场景投影到 2D 平面的过程中就用到它了。




  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 齐次坐标Homogeneous coordinates)是计算机视觉和图形学中常用的一种坐标系统。它可以将几何图形中的点、向量、平面等抽象概念用一个更为简单和统一的方式表示出来,从而方便计算机对它们进行处理。 在齐次坐标中,一个点的坐标由四个分量表示,通常表示为(x, y, z, w),其中(x, y, z)是点在三维空间中的坐标,w是一个称为齐次坐标参数(homogeneous coordinate parameter)的参数。齐次坐标参数可以取任意非零值,但是通常取1,这样可以避免数值计算中的除法操作。 使用齐次坐标,可以将二维图形中的变换表示为一个3x3的矩阵变换,而将三维图形中的变换表示为一个4x4的矩阵变换,这样可以方便地进行矩阵乘法等数值计算。齐次坐标还可以用于表示平面、直线和多边形等几何图形,方便进行投影和变换操作。 ### 回答2: 齐次坐标是指在计算机视觉中广泛应用的一种扩展形式的坐标表示方法。在齐次坐标中,一个点的坐标由其原始的几何坐标(x、y)和一个额外的维度(w)组成,即(x, y, w)。 齐次坐标可以理解为在欧几里得空间中的同一个坐标系中,通过引入一个额外的维度w来扩展原始坐标。这个额外的维度w允许我们同时表示平移和旋转操作,从而更方便地进行计算。 在齐次坐标中,一个点的坐标可以通过除以w来恢复原始的几何坐标,即:x = x' / w,y = y' / w。这意味着通过齐次坐标可以方便地进行坐标变换,例如平移、旋转、缩放等,并且不需要进行额外的计算。 齐次坐标在计算机视觉中的广泛应用主要体现在图像变换和计算几何变换中。例如,在图像变换中,我们可以通过齐次坐标方便地进行图像的平移、旋转等操作。在计算几何变换中,我们可以通过齐次坐标进行方便地进行三维点的投影等操作。 总之,齐次坐标通过引入一个额外的维度w,扩展了原始点的坐标表示,方便了计算机视觉中的图像变换和几何变换的操作。 ### 回答3: 齐次坐标是计算机视觉领域中常用的一种表示方法,它是通过在传统的欧几里得坐标系上引入一个额外的维度来扩展的。具体来说,在齐次坐标中,一个点或向量由四个分量表示,通常记作(x, y, z, w),其中(x, y, z)表示点的三维坐标,w表示缩放因子。 齐次坐标的一个重要应用是可以将欧几里得空间中的平移运算与仿射变换(包括平移、旋转、缩放和错切)统一起来。通过齐次坐标,我们可以将平移操作以矩阵的形式表示,并与其他变换操作(如旋转、缩放)组合在一起。 齐次坐标还可以简化对图像的透视变换处理。在传统的欧几里得空间中,透视变换会引入非线性变换,计算复杂度较高。而在齐次坐标中,透视变换可以通过线性变换来表示,简化了计算过程。 在OpenCV库中,齐次坐标经常用于表示图像中的关键点(如角点、边缘点)和几何变换过程中。OpenCV提供了丰富的函数和工具,用于处理和计算齐次坐标表示的点和向量,包括坐标转换、透视变换、仿射变换等。 总之,齐次坐标是计算机视觉中一种重要的数学工具,它通过引入额外的维度,将欧几里得空间中的几何变换问题转化为线性变换问题,简化了计算过程,提高了计算效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值