齐次坐标,怎么你也叫Homogeneous

其实参考链接中已经解释的很好了,这篇博客主要就是为了码一下别人的博客。链接1、2里面不仅有关于齐次坐标的解释,还有很多其他的计算机图像的知识点,链接2还做了很多《冰与火之歌》的彩蛋。

在平常数学运算中,我们一般使用笛卡尔坐标,但是在计算机图形学中使用的更多的是齐次坐标(Homogeneous Coordinates)。数学里,齐次坐标(homogeneous coordinates),或投影坐标(projective coordinates)是指一个用于投影几何里的坐标系统,如同用于欧氏几何里的笛卡儿坐标一般。该词由奥古斯特·费迪南德·莫比乌斯于1827年在其著作《Der barycentrische Calcul》一书内引入齐次坐标有三大优点。

一,还可以表示无穷远处的点。在欧式空间(Euclidean space)或者笛卡尔空间(Cartesian space)中,平行线是无法相交的,但是真实世界中因为透视关系,平行的铁轨在无穷远处也可以相交。而欧式空间中的坐标$\left( {\infty \infty } \right)$没有意义,所以齐次坐标就出现了。齐次坐标可以用$n + 1$维的坐标表示笛卡尔坐标系中$n $维的坐标。齐次坐标$\left( {\hat x,\hat y,\omega } \right)$对应笛卡尔坐标\left( {\frac{{\hat x}}{\omega },\frac{{\hat y}}{\omega }} \right)$\omega $是缩放系数。这样当取$\omega = 0$,就可以表示笛卡尔坐标系中的无穷大,对应无穷点(points at infinity)。一般的,取,得到归一化的齐次坐标。\tilde x是齐次坐标,{\rm{\bar x}}被称为增广矢量(augmented vector)。

                                            \[\tilde x = \left( {\hat x,\hat y,\omega } \right) = \omega \left( {x,y,1} \right) = \omega {\rm{\bar x}}\]                                          

二,齐次坐标可以区分点和向量。计算机图形学(OpenGL版)》的作者F.S. Hill Jr. 写到:齐次坐标表示是计算机图形学的重要手段之一,它既能够用来明确区分向量和点,同时也更易用于进行仿射(线性)几何变换[98]。在笛卡尔坐标系中的一个坐标,我们无法判断它表示的是一个点还是一个从原点指向该点的向量。齐次坐标因为有一个冗余的维度(缩放系数),可以作为标志位,当它取1时表示坐标点,当它为0时表示向量。这是因为表达一个点比一个向量需要额外的信息:

齐次坐标,怎么你也叫Homogeneous_第1张图片

三,齐次坐标允许平移、旋转、缩放和透视投影表示为矩阵与向量相乘的运算,而使用笛卡尔坐标,平移和透视投影不能表示成矩阵相乘。仿射变换其实就是线性变换(旋转缩放)与平移的叠加。笛卡尔坐标系不能用乘法表示仿射变换主要是因为平移变换。现在利用齐次就可以将平移变换中的矩阵相加转换为矩阵相乘:

                                          \left[ {\begin{array}{*{20}{c}} {x'}\\ {y'}\\ 1 \end{array}} \right] = \left[ {\begin{array}{*{20}{c}} 1&0&{{t_x}}\\ 0&1&{{t_y}}\\ 0&0&1 \end{array}} \right]\left[ {\begin{array}{*{20}{c}} x\\ y\\ 1 \end{array}} \right] = \left[ {\begin{array}{*{20}{c}} {x + {t_x}}\\ {y + {t_y}}\\ 1 \end{array}} \right]                                     

至于为什么叫齐次,这是因为齐次坐标与笛卡尔坐标不是一一对应的。只要前n个分量与缩放系数的比例相同就会映射到同一个笛卡尔坐标,即对齐次坐标每一个分量同等进行缩放,都表示的是笛卡尔坐标系中的同一个点,这就是尺度不变性(Scale Invariant),也就是齐次。谷歌翻译Homogeneous是“同质”的意思,百度翻译结果是“均匀的;同性质的。这里写作齐次。而之前学习的单应矩阵中单应英文单词是Homography,指的是点与点一一对应。他们共同使用词根homo,意为“相同的”。

注意:

三元组 (0, 0, 0) 不表示任何点。原点表示为 (0, 0, 1)

Reference

 

  1. http://www.songho.ca/math/homogeneous/homogeneous.html
  2. 冰与火之歌https://oncemore.wang/blog/homogeneous/
  3. https://www.cnblogs.com/xin-lover/p/9486341.html

 

你可能感兴趣的:(图像处理)