齐次坐标(Homogeneous coordinates)

为什么要引入齐次坐标?

  齐次坐标系的引入是为了将坐标的平移、旋转、缩放及透视投影等可表示为单一矩阵与向量相乘的一般向量运算。从而在进行图形处理时简单有效。如以矩阵表达式来计算这些变换时,平移是矩阵相加,旋转和缩放则是矩阵相乘,综合起来可以表示为
p ′ = m 1 ∗ p + m 2 p' = m_1*p+m_2 p=m1p+m2
m1旋转缩放矩阵, m2为平移矩阵, p为原向量 ,p’为变换后的向量;引入齐次坐标的目的主要是合并矩阵运算中的乘法和加法,表示为
p ′ = p ∗ M p' = p*M p=pM
它提供了用矩阵运算把二维、三维甚至高维空间中的一个点集从一个坐标系变换到另一个坐标系的有效方法。

什么是齐次坐标系?

  给定欧氏平面上的一点(x,y),对任意非零实数 Z,三元组(xZ,yZ,Z)即称之为该点的齐次坐标。依据定义,将齐次坐标内的数值乘上同一个非零实数,可得到同一点的另一组齐次坐标。
  例如一条通过原点(0, 0)的线之方程可写作nx+my= 0,其中 n 及 m 不能同时为 0。笛卡儿坐标可写作(m/Z, −n/Z),Z不为0。在齐次坐标下,则写成(m, −n,Z)。当 Z趋向0时,点的坐标会趋向于线的无线远处。因此,可定义(m, −n, 0)为对应nx+my= 0这条线之方向的无穷远点之齐次坐标。

齐次坐标系的性质

  • 投影平面上的任何点都可以表示成一三元组(X,Y,Z),称之为该点的’齐次坐标或投影坐标,其中 X、Y 及 Z 不全为 0。
  • 以齐次坐标表表示的点,若该坐标内的数值全乘上一相同非零实数,仍会表示该点。
  • 相反地,两个齐次坐标表示同一点,当且仅当其中一个齐次坐标可由另一个齐次坐标乘上一相同非零常数得取得。
  • 当 Z 不为 0,则该点表示欧氏平面上的该(X/Z,Y/Z)。
  • 当 Z 为 0,则该点表示一无穷远点。 注意,

三元组(0,0, 0)不表示任何点。原点表示为(0, 0, 1)。为与以与笛卡儿坐标相区别,如以冒号代替逗号,以 (x:y:z) 代替(x,y,z),以强调该坐标有着比例的性质。亦有以方括号代替括弧,以[x,y,z]来强调有多个坐标表示同一个点。有些作者则会同时使用冒号与方括号,如 [x:y:z]。

齐次坐标系的重要性
1、区分向量和点
  一个三维坐标的三个分量x,y,z用齐次坐标表示为变为x,y,z,w的四维空间,变换成三维坐标是方式是x/w,y/w,z/w,当w为0时,在数学上代表无穷远点,即并非一个具体的坐标位置,而是一个具有大小和方向的向量。从而,通过w我们就可以用同一系统表示两种不同的量。
  在OPENGL中,作为坐标点时,w参数为1,否则为0,如此一来,所有的几何变换和向量运算都可以用相同的矩阵乘积进行运算和变换,当一个向量和一个矩阵相乘时所得的结果也是向量。
2、易于进行仿射变化(Affine Transformation)
  仿射变换,又称仿射映射,是指在几何中,一个向量空间进行一次线性变换并接上一个平移,变换为另一个向量空间。引入齐次坐标系,可以将一个仿射变换对应于一个矩阵和一个向量的乘法。

其中大部分内容参考百度百科,需要更加详细的内容可以看一下相关介绍!

Citations

https://baike.baidu.com/item/齐次坐标/511284?fr=aladdin#4
https://baike.baidu.com/item/仿射变换/4289056?fr=aladdin
https://blog.csdn.net/yun_0_yun_/article/details/67637162

你可能感兴趣的:(三维重建相关知识,图形学,图计算)