为什么要引入齐次坐标?

问题来源:在研究相机标定的过程中,从世界坐标系变换到相机坐标系和从相机坐标系与图像坐标系之间的转换时,都用到了齐次坐标升了一维,为什么不能直接进行转换呢?

从世界坐标系到相机坐标系的变换开始说起,

相机运动是一个刚体运动,它保证了同一个向量在各个坐标系下的长度和夹角都不会发生变化。这种变换成为欧式变换。可以想象为你把手机抛到空中,在它落地之前,只可能有空间位置和姿态的不同,而它自己的长度、各个面的角度等性质不会有任何变化。

我们设某个单位正交基(e1,e2,e3)经过一次旋转变成了(e1',e2',e3')。那么,对于同一个向量a(注意该向量并没有随着坐标系的旋转而发生运动),那么它在两个坐标系下的坐标为[a1,a2,a3]T和[a1',a2',a3']T,

(e1,e2,e3)[a1,a2,a3]T=(e1',e2',e3')[a1',a2',a3']T

为了描述两个坐标之间的关系,我们对上述等式的左右两边同时左乘(e1,e2,e3)T,那么左边的系数就变成了单位矩阵

[a1,a2,a3]T=Ra’,R=(e1,e2,e3)T·(e1',e2',e3')

注:旋转矩阵有几个特殊的性质,它是一个行列式为1的正交矩阵。

通过旋转矩阵,我们可以直接谈论两个坐标系之间的旋转,而不用再从基开始谈起了。换句话说,旋转矩阵可以描述相机的旋转。

在欧式变换中,除了旋转之外还有平移。考虑世界坐标系中的向量a,经过一次旋转(用R描述)和一次平移t后,得到了a',那么把旋转和平移合到一起,有:

a'=Ra+t         (1)

齐次坐标:

作用1:简化计算

上式(1)完整的表达了欧式空间的旋转和平移,不过存在一个问题,这里的变换关系不是一个线性关系。假设我们进行两次变换:R1, t1和R2,t2,,满足:

b=R1a+t1      c=R2b+t2

但是从a到c的变换为:

c=R2(R1a+t1)+ t2

这样的形式在变换多次之后会过于复杂。因此,我们要引入齐次坐标和变换矩阵,重写上式:

这是一个数学技巧:我们在一个三维向量的末尾添加1,将其变成了四维向量,成为齐次坐标。对于这个四维向量,我们可以把旋转和平移写在一个矩阵里面,使得整个关系变成一个线性关系。矩阵T为变换矩阵。

齐次坐标属于射影几何的概念。通过添加最后一维,我们用四个实数描述了一个三维向量,这显然多了一个自由度,但使得我们把复杂的变换变成线性的形式。

在齐次坐标中,某个点x的每个分量同乘一个非零常数k后,仍然表示同一个点。因此,一个点的具体坐标值不是唯一的。如[1,1,1,1]T和[2,2,2,2]T是同一个点。但当最后一项不为零时,我们总可以把所有坐标除以最后一项,强制最后一项为1,从而得到一个点唯一的坐标表示(也就是转换成非齐次坐标):

x=[x,y,z,w]T=[x/w,y/w,z/w,1]T

因此,依靠齐次坐标和变换矩阵,两次变换的累加就可以有很好的形式:

b=T1a, c=T2b 

所以 c=T2T1a.

 

作用2:区分点和向量

向量v = v1 a + v2 b + v3 c (1)

p – o = p1 a + p2 b + p3 c (2)

点p = o + p1 a + p2 b + p3 c (3)

写成矩阵乘积的形式:

这里(a,b,c,o)是坐标基矩阵,右边的列向量分别是向量v和点p在基下的坐标。这样,向量和点在同一个基下就有了不同的表达:3D向量的第4个代数分量是0,而3D点的第4个代数分量是1。像这种这种用4个代数分量表示3D几何概念的方式是一种齐次坐标表示。

“齐次坐标表示是计算机图形学的重要手段之一,它既能够用来明确区分向量和点,同时也更易用于进行仿射(线性)几何变换。”—— F.S. Hill, JR

这样,上面的(1, 4, 7)如果写成(1,4,7,0),它就是个向量;如果是(1,4,7,1),它就是个点。

因此,作用1中提到的平移变换,从中可以思考得知,对于平移T、旋转R、缩放S这3个最常见的仿射变换,平移变换只对于点才有意义,因为普通向量没有位置概念,只有大小和方向,这可以通过下面的式子清楚地看出:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值