Skip to content

4x4齐次矩阵

齐次空间

欧氏几何空间,同一平面的两条平行线不能相交;但是在透视空间中,同一平面的两条平行线是可以相交的

欧氏几何空间可以看作是透视空间的一个子集,透视空间又可以称为齐次空间,用齐次坐标描述空间中的点。

高维齐次空间描述低维欧式空间

在空间直角坐标系中,任意一点可用一个三维坐标矩阵[x y z]表示。如果将该点用一个四维坐标的矩阵[Hx Hy Hz H]表示时,则称为齐次坐标表示方法。在齐次坐标中,最后一维坐标H称为比例因子。

INFO

为什么要引入齐次坐标系?

我们已经知道可以通过矩阵乘法,将多个转换矩阵相乘来得到变换后的向量,但是只有平移是无法通过矩阵乘法计算的,在欧式空间中,它只能通过加减法计算

例如将向量v沿+x方向平移∆x,沿+y方向平移∆y,沿+z方向平移∆z,那么平移后的坐标为(x+∆x, y+∆y, z+∆z)

v=[x+Δxy+Δyz+Δz]

假设转换矩阵为M,我们依旧想通过矩阵乘法计算出转换矩阵M

v·M=v+Δt

很明显是无法计算出M的,但是如果我们在增加一个维度分量w,则欧式3D空间中的点在齐次空间中表示为

[xyz][xyzw]

转换为齐次空间,有

[xyzw]·[w0000w0000w0ΔxΔyΔz1]=[wx+wΔxwy+wΔywz+wΔzw]

同时除以w,将齐次空间中的坐标换算为欧式3D空间中则有

v=[x+Δxy+Δyz+Δz]

因此为了方便起见,一般将w赋值为1

这样就把各种变换都统一了起来,都表示成一连串的矩阵相乘的形式,保证了形式上的一致。

2D、3D齐次空间

2D空间中的坐标描述为

(x,y)

3D齐次空间中的坐标则描述为

(x,y,w)

想象一个三维空间中z=w的平面,二维空间中的点是齐次空间中点在z=w平面上的投影

任意给定一个2D空间的点(x,y),齐次空间中有无数个点与之对应,所有点的形式都是

(x,y,k),k0

k=0时,将这个点解释为“无限远处的点”,对应欧式空间中的无穷大

3D、4D齐次空间

思想与2D中相同,将3D中的点理解为在4D齐次空间“平面”上的投影

3D空间中的坐标描述为

(x,y,z)

4D齐次空间中的坐标则描述为

(x,y,z,w)

相应的当k=0时,将这个点解释为“无限远处的点”

4x4平移矩阵

3x3矩阵不包含平移的,而且任意矩阵乘法的变换都不包含平移,而通过引入4x4平移矩阵可以解决该问题。

将3x3转换矩阵扩展为4x4平移矩阵

[m11m12m13m21m22m23m31m32m33][m11m12m130m21m22m230m31m32m3300001]

而且对于任意向量,矩阵乘法在欧式空间和齐次空间中的结果是相同的,只不过齐次空间多一个分量

[xyz][m11m12m13m21m22m23m31m32m33]=[xm11+ym21+zm31xm12+ym22+zm32xm13+ym23+zm33]

暂时假设w=1,则有

[xyz1][m11m12m130m21m22m230m31m32m3300001]=[xm11+ym21+zm31xm12+ym22+zm32xm13+ym23+zm331]

假如在最后一个行向量中引入偏移量,那么可以得到4x4平移矩阵

[xyz1][100001000010ΔxΔyΔz1]=[x+Δxy+Δyz+Δz1]

例如:一个向量通过旋转、平移得到新向量,旋转矩阵为R,平移矩阵为T则有

v=vRT=v[m11m12m130m21m22m230m31m32m3300001][100001000010ΔxΔyΔz1]=v[m11m12m130m21m22m230m31m32m330ΔxΔyΔz1]

为了更加明显的区分出旋转部分和平移部分信息,令

t=[ΔxΔyΔz]

则最终转换矩阵可以简化为

[R0t1]

一般仿射变换

在前文中我们探索了通过原点的任意轴、不包含平移的转换矩阵,在知道如何通过平移矩阵进行平移转换的前提下,我们探索三维空间下更一般的情况

  • 绕不通过原点的任意轴旋转
  • 沿不通过原点的任意轴缩放
  • 向不通过原点的任意面正交投影
  • 沿不通过原点的任意面镜像

其基本思想是将向量v先通过平移矩阵转换到原点处,再进行转换,最后在平移到原位置。其中平移矩阵为T,转换矩阵为R,平移逆矩阵为T-1

v=vTRT1

最终的转换矩阵为

TRT1=TRT1=[100001000010pxpypz1][m11m12m130m21m22m230m31m32m3300001][100001000010pxpypz1]=[I0p1][R001][I0p1]=[R0pR+p1]

最终影响的只有最后一行,并没有影响线性变换矩阵。

透视投影

将物体投影到平面上,如果平面上的点与物体上的点连线之间是平行的则称为正交投影(又称为平行投影),如果相聚一点,则成为透视投影。

img_1.png

相交的那个点称为投影中心,投影平面在投影中心前面,因此会呈现出物体相对于投影中心越远则投影越小,越近则投影越大,简称为“近大远小”,这符合人类的视觉效果

img_1.png

INFO

透视投影是人类视觉系统的模型。

使用4x4矩阵进行透视投影

点p在z=d平面上进行透视投影,原点为投影中心,有

p=[dpxpzdpypzd]=[pxdpzpydpzpzdpz]

转换到四维齐次空间中,假设w=1,坐标表示为

[pxpypzpzd]

考虑存在矩阵M将[px py pz 1]转换为上述表达式

则在z=d平面上的投影矩阵为:

[xyz1][100001000011d0000]=[xyzzd]
  • 乘以这个矩阵实际并没有进行转换,它的作用只是用来计算出合适的分母
  • 存在多种变化,矩阵不固定

小孔成像

在盒子上开一个孔,光线通过孔在盒子内部产生投影。将小孔处作为投影中心建立坐标系(左手坐标系)

img_1.png

从侧面看点p,投影面为z=-d,投影中心为原点,最终投影后的点为p'

根据相似三角形可知

img_1.png

pypz=pydpy=dpypzpxpz=pxdpx=dpxpzpzpz=pxdpz=d

则点p在投影面为z=-d上的投影为

p=[pxpypz]=[dpxpzdpypzd]

相应的在z=d平面上的投影为

img_1.png

p=[pxpypz]=[dpxpzdpypzd]

这样可以降低计算的复杂度,但是这种小孔成像在真实世界是不存在的

INFO

小孔成像是摄像机的模型。

参考:

【1】关于齐次坐标的理解