目录
齐次坐标
齐次坐标:用n+1维坐标表示n维坐标的方式称为齐次坐标。
意义:1.通过最后一维的数值来标识是点还是向量,w不为0时来表示点
2.3D图形学中的特殊方程组求解
3.辅助运算
标识点和向量
在3D世界中表示一个点的方式是:(x, y, z);然而在3D世界中表示一个向量的方式也是:(x, y, z);如果我们只给一个三元组(x, y, z)鬼知道这是向量还是点,毕竟点与向量还是有很大区别的,点只表示位置,向量没有位置只有大小和方向。为了区分点和向量我们给它加上一维,用(x, y, z, w)这种四元组的方式来表达坐标,我们规定(x, y, z, 0)表示一个向量,(x, y, z, 1)或(x', y', z', 2)等w不为0时来表示点。这种用n+1维坐标表示n维坐标的方式称为齐次坐标。
3D图形学中的特殊方程组求解
在欧氏几何空间,同一平面的两条平行线不能相交,这是我们都熟悉的一种场景。然而,在透视空间里面,两条平行线可以相交,例如:火车轨道随着我们的视线越来越窄,最后两条平行线在无穷远处交于一点。
简而言之,齐次坐标就是用N+1维来代表N维坐标
我们可以在一个2D笛卡尔坐标末尾加上一个额外的变量w来形成2D齐次坐标,因此,一个点(X,Y)在齐次坐标里面变成了(x,y,w),并且有
X = x/w
Y = y/w
例如,笛卡尔坐标系下(1,2)的齐次坐标可以表示为(1,2,1),如果点(1,2)移动到无限远处,在笛卡尔坐标下它变为(∞,∞),然后它的齐次坐标表示为(1,2,0),因为(1/0, 2/0) = (∞,∞),我们可以不用”∞"来表示一个无穷远处的点了。
————————————————
版权声明:本文为CSDN博主「追求卓越583」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zhuiqiuzhuoyue583/article/details/95228010
辅助运算
主要是在空间变换的时候体现, 空间变换中的的旋转和缩放可以用矩阵乘法来表示,但是平移却需要用矩阵加法来表示。引入齐次坐标后 可以将平移的矩阵运算转化成乘法运算
显然:
这对于图像中的每一个点都是成立的。写成矩阵的形式就是:
我们再把前面的缩放变换和旋转变换的矩阵形式写出来:
缩放变换:
旋转变换:
我们注意到,缩放变换和旋转变换都可以表示成矩阵乘法的形式。实际上,图像的几何变换通常不是单一的,也就是说经常性的缩放、旋转、平移一起变换。例如先放大2倍,然后旋转45度,然后再缩小0.5倍。那么就可以表示成矩阵乘法串接的形式:
这样,不管有多少次变换,都可以用矩阵乘法来实现。但是平移变换呢?从前面看到,平移变换并不是矩阵乘法的形式,而是矩阵加法的形式!
那能不能把缩放变换、旋转变换、平移变换统一成矩阵乘法的形式呢,这样不管进行多少次变换,都可以表示成矩阵连乘的形式,将极大的方便计算和降低运算量。
这种方法就是“升维”,引入“齐次坐标”,将图像从平面2D坐标变成3D坐标。我们看看平移变换的矩阵形式:
将其升维,变成3维,上式就可以表示成:
这是个非常优美的地方,学习过矩阵乘法的同学可以算一下右边的式子,是否最终结果与前面是一样的。
这样,平移变换通过升维后的齐次坐标,也变成了矩阵乘法的形式。当然缩放变换和旋转变换的矩阵形式也得改一改,统一变成3维的形式。
参考:
https://blog.csdn.net/zhuiqiuzhuoyue583/article/details/95228010