在本文首先介绍了引入齐次坐标系的必要性,随后介绍了在几何变换中常见的投射变换和仿射变换,这俩种变换在计算机视觉问题中,包括在相机成像过程中都是很基础并且重要的内容。
前言
在本文首先介绍了引入齐次坐标系的必要性,随后介绍了在几何变换中常见的投射变换和仿射变换,这俩种变换在计算机视觉问题中,包括在相机成像过程中都是很基础并且重要的内容。
如有谬误,请联系指正。转载请注明出处。
e-mail: FesianXu@gmail.com
github: https://github.com/FesianXu
知乎专栏: 计算机视觉/计算机图形理论与应用
微信公众号:机器学习杂货铺3号店
齐次坐标系的引入
投影变换的背景
我们对于投影变换(projective transformation) 其实是一点的不陌生的,假设我们在看一张照片时,我们经常会发现本来应该是平行的线条,却变得不平行了,如Fig 1.1所示。更一般地说,在投影变换中,大部分的几何属性,比如长度,角度,比例,平行性等,都可能不能保留了,但是有一点我们是可以确保的,那就是 直线在变换前后始终还是直线。
我们考虑到在欧式几何(Euclidean Geometry)中,其实有一些概念是有些“麻烦之处”的,比如说到平行这个概念,我们知道在欧几里德空间中,两个直线都会交于一点,当然除了平行线之外,这让平行线处于在一个很特殊的地位。如果我们熟悉编程我们就不难发现,当有个编程对象处于特殊地位时,我们就不得不单独考虑他,使得整个程序变得不能通用(general)起来,这个是个糟糕的事情。
当然,我们也可以耍滑头,说在欧几里德空间里,平行线相交于无限远的点处,这当然没问题。但是,“无限远”这种概念其实是为了方便定义出来的,实际上并不存在。不管怎么样,我们把平行线相交于的无限远的点,称之为 理想点(Ideal point)。
通过添加了这个理想点,我们把欧几里德空间(Euclidean Space)转变成了投影空间(Projective Space),很简单吧,但是我们后面将会发现,我们的很多投影变换都只能在投影空间中进行,在没有定义出理想点的欧式空间,我们根本对这些变换无能为力。总而言之, 在投影空间中,所有的线最终都能够相交了。因为所有的理想点都有着相同的距离,所以在二维的投影空间中,所有的平行线其实都是交于由所有理想点组成的“理想直线”上的。同样的,在三维投影空间中,所有的平行面都交于一个“理想平面”。我们如果用符号
坐标表达
我们都知道一个在二维平面上的点可以用一组有序的二元对表示,如
这个正是投影空间的精髓之处,在投影空间中,我们用齐次坐标去表示点,把空间中的点所有都看成是等价的,这样就不存在普通点与理想点的区别了,而且在这个空间中,所有的直线都会相交,因此也不存在平行性这个概念了。笔者在这里举个在投影空间处理点的变换的例子,假如现在在投影空间
仿射变换和透视变换
投影变换可以细分为 仿射变换(affine transform) 和 透视变换(perspective transform),以及 广义的投影变换(general projective transform)。我们分别介绍下。
仿射变换
仿射变换(affine transform)在变换前后,保留了元素的平行性,也就是说,在变换前是平行线的,在变换后同样也是平行线。仿射变换可以表示为一组线性变换,如(2.1),同时,在齐次表达下,仿射变换通常可以用一个
通过对这六个元素的某些约束,比如令某些为0,为1等,我们将仿射变换又分成了以下若干种。
尺度放缩(scale)
尺度放缩(scale)的变换矩阵如:
平移(translate)
平移(translate)的变换矩阵如:
切变(shear)
切变(shear)的变换矩阵如:
旋转(rotate)
旋转(rotate)的变换矩阵如:
可组合性
注意到仿射变换其是可以组合的,比如一个变换可以是先平移,后旋转,最后放缩,那么其变换矩阵为:
但是,我们也要注意到,一般来说其是不具有交换性的,比如先平移在旋转一般结果和先旋转后平移是不同的,即是:
透视变换
透视变换(perspective transform)在变换前后不再保留所有元素的平行性了,但是变换前后,直线还是保持是直线,使用这种变换能提供3D的视觉效果。
我们同样用齐次坐标去表示这个变换,其变换矩阵的形式如:
我们这里举个例子,假设有个透视变换矩阵:
广义投影变换
我们要注意到,透视变换其本质是广义的投影变换中的一种特殊情况,广义透视变换的变换矩阵如:
同样的,其也是一种非线性变换。在二维情况下我们有:
Reference
[1]. Hartley R, Zisserman A. Multiple View Geometry in Computer Vision[J]. Kybernetes, 2008, 30(9/10):1865 - 1872.