基本的几何基元包括:2D点、2D直线、3D点、3D平面和3D直线
2D几何基元
2D点:图像上的坐标点可以用一对数值表示,或者:
也可以用齐次坐标表示,即用高一维的坐标表示,可以将齐次矢量转换为非齐次矢量,这一过程叫做正常化处理。其中叫做增广矢量。
为什么需要进行齐次变换呢?举个例子,当我们需要对坐标点进行仿射变换时,有平移、旋转、缩放的变换,其中平移是矩阵相加,而旋转是矩阵相乘,公式如下:
则需要对点坐标先乘一个矩阵,再加一个矩阵,但是当我们进行其次变换后,可以改写公式为:
故可以有效的简化矩阵计算,对于点和矢量,都具有旋转、缩放的性质,而矢量不同与点,矢量不具有平移的计算,故为了区分矢量和点的齐次变换,对于点坐标,变换为,而对于矢量,变换为。
2D直线:2D直线也可用齐次坐标表达,对应直线方程为:
将直线方程规范化处理,得到,其中,则 为垂直于直线的法向量,为直线到原点距离。
也可将表示为旋转角度的函数,即 ,这种表达式可用于霍夫变换检测直线的算法,称为极坐标。
使用齐次坐标时,计算两直线的交点:
其中×为叉积符号,连接两点的直线为:
3D几何基元
3D点:即三维点坐标,齐次坐标可写为。
3D平面:2D直线也可用齐次坐标表达,对应平面方程为:
将平面方程规范化处理,得到,其中,则 为垂直于平面的法向量,为直线到原点距离。
也可将表示为旋转角度与的函数,即,即使用球面坐标,但是并不像极坐标那样常用,因为无法再可能的向量空间均匀分布(当随机时, 在极坐标上均匀分布,而当与随机时, 在球面坐标上无法均匀分布)。
3D直线:3D直线的一种表示方法就是用两个点坐标的线性组合 。
如果将3D直线看作3D点在三维矢量方向的延长线,可写作:
但是2个3D点或者1个3D点+1个三维矢量,这两种表示方法变量均为6个,而真正的3D直线的自由度为4。为了得到自由度为4的3D直线表示方法,可对于不平行于平面的直线,用直线于平面和平面的交点和表示,则自由度为4,这种两平面参数化在光场和照度图中用到。
几何基元自由度
确定一个系统在空间中的位置所需要的最小坐标数。例如火车车厢沿铁轨的运动,只需从某一起点站沿铁轨量出路程,就可完全确定车厢所在的位置,即其位置用一个量就可确定,我们说火车车厢的运动有一个自由度;汽车能在地面上到处运动,自由程度比火车大些,需要用两个量才能确定其位置,我们说汽车的运动有两个自由度;飞机能在空中完全自由地运动,需要用三个量才能确定其位置,我们说飞机在空中的运动有三个自由度。所谓自由度数就是确定物体在空间的位置所需独立坐标的数目。
一般情况下,齐次坐标为几何基元的自由度坐标加1:
- 对于2D点,由x坐标与y坐标唯一确定,自由度为2,齐次坐标项为3;
- 对于2D直线,由直线斜率与直线距离原点距离唯一确定,自由度为2,齐次坐标项为3;
- 对于3D点,由x坐标、y坐标和z坐标唯一确定,自由度为3,齐次坐标项为4;
- 对于3D平面,由平面交原点的法向量唯一确定,则自由度与3D法向量点相同,自由度为3,齐次坐标项为4;
- 对于3D直线,前文讨论过,自由度为4,齐次坐标项为5;
- 对于N维空间直线,直线自由度为2N-2,线段为2N。