2 SLAM中常用的数学知识

为什么使用齐次坐标

关于这一点,《视觉惯性slam理论与源码解析》这本书讲的不是很好(省去了很多过程,如直接强行w=1,即标准化),个人觉得下面这个链接说的很好:Homogeneous Coordinates

引入齐次坐标的一个重要原因是笛卡尔或欧拉坐标系(Euclidean/Cartesian Space) )虽然能描述2D/3D的几何关系,但是不足以描述透视空间(Projective Space )的几何关系!比如,两条平行的铁轨,在笛卡尔或欧拉坐标系下永远不会相交,但是在现实世界中,随着距离的增加,两条平行线逐渐交汇至一点,这就是透视空间下的几何关系。
在这里插入图片描述

为了解决透视空间下的几何关系描述问题,提出了齐次坐标的概念。
就是在原来的维度上增加一个维度w,即齐次坐标就是将一个原本是n维的向量用一个n+1维向量来表示
以我们常说笛卡尔坐标系下的2D平面坐标 (X, Y)为例,对应的齐次坐标为 (x, y, w),其中其次坐标下的x,y与笛卡尔坐标下的X,Y对应关系:X=x/w Y=y/w
在这里插入图片描述
那新增的w维度有什么用呢?
当迪尔卡下某个点(1, 2)移动至无穷远时,以前的表示方式为(∞,∞)
根据上面的公式关系,w=0时,(1/0, 2/0) ≈ (∞,∞),无穷远的情形对应的齐次坐标为 (1, 2, 0)。
在这里插入图片描述

但上面的这些描述,还是无法很好的理解“齐次”两个字,我们接着看:
在这里插入图片描述
我们发现上述这些齐次坐标点在笛卡尔坐标系中表示同一个点,也就是齐次坐标是尺度不变的。
因此一般使用时,令w=1,即规范化或标准化,保证“确定性”。

下面总结下齐次坐标的作用

区分点和向量

点是三维空间中的某个坐标,是绝对的,它的值是参照原点的。
向量用于表示力和速度等具有方向和大小的量, 通常用具有长度和方向的线段来表示。
他们都具有三个分量,但对于向量,如果将向量放在坐标系中的任何位置(平移),都不会改变其性质,因为向量表示的是方向和大小,与位置距离无关,它的值是相对与基准点的。
下图是三维顶点和向量的数学符号或称为列矩
在这里插入图片描述 在这里插入图片描述
两个点向量得到一个向量:
设O(0,0)是原点,则A、B的坐标与向量OA、OB的坐标相同,向量BA=向量OB-向量OA

点和向量转为齐次坐标, 通过将第四个分量定义为0或1,来描述前面三个坐标分量是向量的还是点的坐标。
1.如果第四个分量为 0,则前面 x,y,z 三个坐标分量描述的是一个向量。
2.如果第四个分量为 1,则前面 x,y,z 三个坐标分量描述的是一个点。
普通坐标(Ordinary Coordinate)和齐次坐标(Homogeneous Coordinate)之间进行转换(w=1):
1)从普通坐标转换成齐次坐标时
如果(x,y,z)是个点,则变为(x,y,z,1);
如果(x,y,z)是个向量,则变为(x,y,z,0)

2)从齐次坐标转换成普通坐标时
如果是(x,y,z,1),则知道它是个点,变成(x,y,z);
如果是(x,y,z,0),则知道它是个向量,仍然变成(x,y,z)

通过定义,我们同时得到以下性质:
1)两点相减的结果是一个向量(因为两个点第四个分量都为 1,相减之后变为了 0)
2)一个点与一个向量相加的结果是一个点(点的第四个分量为 1,而向量的第四个分量为 0,1+0=1,因此相加的结果是一个点)

表达无穷远

前面已经提到了,这里给出理论证明,如下:
在这里插入图片描述

表达直线之间的交点和平面间的交线

1)两个点的齐次坐标的叉积结果表示经过这两个点的直线
2)两条直线的叉积结果表示两条直线交点的齐次坐标
备注:
叉积a x b = |a||b|sinθnnab两个向量垂直),模长为平行四边形的面积;
点积(内积)a b = |a||b|cosθ,表示夹角

更多细节参考:https://zhuanlan.zhihu.com/p/617687499

更简洁的表达空间变换

齐次坐标能够将旋转和平移用一个变换矩阵T(Transformation Matrix)表示,多次变换只需要连乘变换矩阵即可,使得整个变换过程,呈现一种线性关系。因此,连续的欧式变换就可以用矩阵的连乘表示。

小结

引入齐次坐标的目的主要是合并矩阵运算中的乘法和加法,表示为x=P∗X的形式。即它提供了用矩阵运算把二维、三维甚至高维空间中的一个点集从一个坐标系变换到另一个坐标系的有效方法。
Homogeneous coordinates are very useful and fundamental concept in computer graphics, such as projecting a 3D scene onto a 2D plane.

齐次坐标知识点扩充

齐次坐标与四元数

首先给出结论,二者长得像,其实没任何而关系
转自: https://blog.csdn.net/qq_38234381/article/details/108697802
如前面所述,齐次坐标主要解决投影空间的几何关系问题,更详细一些的描述如下:
大多数3D工作中,我们参照的依据是欧几里得几何学中的三维空间(X,Y,Z)。但在某些情况下,参照投影几何更适用,除了X,Y,Z分量外,增加一个W分量,这个四维空间叫做“投影空间”,在四维空间中的坐标叫做“齐次坐标”。

虽然四元数跟齐次坐标很像,都是4D矢量,通常用(X,Y,Z,W)来表示,但是,四元数和齐次坐标是不同的概念,使用的领域也不同。

齐次坐标w分量的数学意义

齐次坐标有一个额外的维度叫W分量,用来缩放X,Y,Z三个分量的值。
在距屏幕3米远的位置放一个投影仪,投影出一个点(15,21)在2D图像中,相应的投影坐标中的向量为(X,Y,W)=(15,21,3)。
在这里插入图片描述
现在,想象推动投影仪向屏幕靠近,直到距离1米,越靠近屏幕投影,投影出的图像越小。投影仪靠近了3倍,因此图像缩小了3倍。如果我们将原向量的X,Y,Z分量都除以3,我们得到一个新向量W=1:
(15/3,21/3,3/3)=(5,7,1)
投影出的点在坐标中的新位置(5,7):
在这里插入图片描述

在计算机图形学中使用齐次坐标

针对3D计算机图形学中的有些情况齐次坐标很有用,下面我们来看看这些情况:

3D坐标中的转换矩阵
旋转和缩放的转换矩阵只需要3列,但是为了处理平移,至少需要4列矩阵,这就是为什么矩阵变换通常用4x4的矩阵。然而,4列矩阵不能与3维向量相乘,只能与4维向量相乘,这就是为什么我们使用齐次的4维向量取代3维向量。
通过齐次坐标处理矩阵变化,第4维W分量通常不用改变。从3D转换到4D,只需将W分量设置为1,并且经过变换矩阵处理后,W分量的值仍为1,这意味着我们忽略W分量即可转换回3D坐标。这个W=1仅仅适用于平移、旋转、缩放操作,而透视变换中的投影矩阵会影响W分量,W不能固定为1,下面会说到。
透视变换
在3D计算机图形学中,透视是通过变换矩阵改变向量的W分量来实现的。在变换到观察空间后(对向量应用了观察矩阵)但还没进行投影变换(还没有对向量应用投影矩阵),每个向量的Z分量表示了距离相机的距离。因此,Z分量越大,矢量应该越小。W分量影响这个缩放,所以投影矩阵用Z分量的值改变W分量的值。
在3D计算机图形学中,透视是通过投影矩阵变换,改变每一个向量中W分量的值来实现透视的。
下面来看一个透视例子,通过投影矩阵变换到齐次坐标。
在这里插入图片描述
设置平行光
齐次坐标的一个特点是可以有无限远的点(或无限长的向量),在3D坐标中这个是不允许的。当W=0时,这点表示无限远的一个点。如果你尝试将一个W=0的齐次坐标转换为一个普通的W=1的齐次坐标,这会导致4次除以零的操作,这意味着,不能将W=0的齐次坐标转换为3D坐标
在传统的3D图形中,平行光可以通过改变点光源位置向量中的W分量来表示,当W=1时,是一个点光源,当W=0时,是一个平行光。

齐次升维的另一种理解

转自: https://blog.csdn.net/rabbitguiming/article/details/3964140
在3D世界中为什么需要3D的齐次坐标呢?简单地说明一下,在一维空间中的一条线段上取一点x,然后我们想转移x的位置,那我们应该是x’=x+k,但我们能使用一维的矩阵来表示这变换吗?不能,因为此时一维的矩阵只能让x点伸缩。但如果变成了一维的齐次空间[k 1]就很容易地做到。同样地,在二维空间中,某一图形如果不使用二维的齐次坐标,则只能旋转和伸缩,确不能平移。
因此,我们在3D坐标中使用齐次坐标,是为了物体在矩阵变换中,除了伸缩旋转,还能平移
在这里插入图片描述
1)w=1
此时相当于我们把3D的坐标平移搬去了w=1的平面上,4D空间的点投影到w=1平面上,齐次坐标映射的3D坐标是(x/w,y/w,z/w),也就是(x,y,z)。(x,y,z)在齐次空间中有无数多个点与之对应。所有点的形式是(kx,ky,kz,k),其轨迹是通过齐次空间原点的“直线”(其实每个点相当于3D的坐标世界)。
2)w=0
有很大的意义,可解释为无穷远的“点”,其意义是描述方向。是平移变换的开关
在这里插入图片描述
这个现象是非常有用的,因为有些向量代表“位置”,应当平移,而有些向量代表“方向”,如表面的法向量,不应该平移。从几何意义上说,能将第一类数据当作"点",第二类数据当作"向量"。
可以通过设置w的值来控制向量的意义。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值