SLAM中的奇异值分解

奇异值分解的物理意义和几何意义

奇异值分解是一个能适用于任意的矩阵的一种分解的方法:A=U\Sigma V^T

假设A是一个M * N的矩阵,那么得到的U是一个M * M的方阵(里面的向量是正交的,U里面的向量称为左奇异向量且为单位正交阵UU^T=I

Σ是一个M * N的矩阵(除了对角线的元素都是0,对角线上的元素称为奇异值)

V^T是一个N * N的矩阵,里面的向量也是正交的,V里面的向量称为右奇异向量且为单位正交阵VV^T=I),从图片来反映几个相乘的矩阵的大小可得下面的图片:

SLAM中的奇异值分解_第1张图片

奇异值分解是一个有着很明显的物理意义的一种方法,它可以将一个比较复杂的矩阵用更小更简单的几个子矩阵的相乘来表示,这些小矩阵描述的是矩阵的重要的特性。就像是描述一个人一样,给别人描述说这个人长得浓眉大眼,方脸,络腮胡,而且带个黑框的眼镜,这样寥寥的几个特征,就让别人脑海里面就有一个较为清楚的认识,实际上,人脸上的特征是有着无数种的,之所以能这么描述,是因为人天生就有着非常好的抽取重要特征的能力。

同样,在矩阵分解中,我们常常期望将矩阵分解成正交矩阵、对角矩阵以及上三角(下三角)矩阵这样有特点的矩阵的乘积。以三维矩阵为例,一个普通矩阵的几何意义是对坐标进行某种线性变换,比如说下面的一个矩阵:

 

 

它其实对应的线性变换是下面的形式:

 

 SLAM中的奇异值分解_第2张图片

 

因为这个矩阵M乘以一个向量(x,y)的结果是:

 

 

上面的矩阵是对称的,所以这个变换是一个对x,y轴的方向一个拉伸变换(每一个对角线上的元素将会对一个维度进行拉伸变换,当值>1时,是拉长,当值<1时时缩短),当矩阵不是对称的时候,假如说矩阵是下面的样子:

 

 SLAM中的奇异值分解_第3张图片

 

它所描述的变换是下面的样子:

 SLAM中的奇异值分解_第4张图片

同理,正交矩阵的几何意义是坐标的旋转,对角矩阵的几何意义是坐标的缩放,三角矩阵的几何意义是对坐标的切边。因此对矩阵分解的几何意义就是将这种变换分解成缩放、切边和旋转的过程。

让机器学会抽取重要的特征,SVD是一个重要的方法。“奇异值”可能无法顾名思义迅速理解其本质,那咱们换个说法,称作“主特征值”,你可能就迅速了然了。

奇异值分解的几何含义为:对于任何的一个矩阵,我们要找到一组两两正交单位向量序列,使得矩阵作用在此向量序列上后得到新的向量序列保持两两正交。

 

奇异值分解求解:

 

奇异值分解的一个重要性质是:在实际大多数情况中,奇异值σ减小的速度特别快,因此可以使用前r个奇异值来对矩阵做近似(即丢弃U和V的后几列),将获得原始矩阵A在最小二乘意义下的最佳逼近。

 

 

r是一个远小于m、n的数,这样矩阵的乘法看起来像是下面的样子:

 

 SLAM中的奇异值分解_第5张图片

右边的三个矩阵相乘的结果将会是一个接近于A的矩阵,在这儿,r越接近于n,则相乘的结果越接近于A。而这三个矩阵的面积之和(在存储观点来说,矩阵面积越小,存储量就越小)要远远小于原始的矩阵A,我们如果想要压缩空间来表示原矩阵A,我们存下这里的三个矩阵:U、Σ、V就好了。

SVD分解的几何意义可以通过公式的重写获得:
AV=U\Sigma 或者 Av_j=\sigma _ju_j

即当矩阵A作用于任何基向量v_j时,会把v_j变换到u_j的方向,同时将的长度u_j变成\sigma _j。也可以看成先旋转然后缩放再旋转的过程。

SLAM中的奇异值分解_第6张图片

ref:

https://www.cnblogs.com/jian-gao/p/10781649.html

https://www.cnblogs.com/endlesscoding/p/10033527.html

https://blog.csdn.net/qq_41839222/article/details/96274251

https://www.bilibili.com/video/av6540378?from=search&seid=1910776378530218193

https://blog.csdn.net/zhyh1435589631/article/details/62218421

你可能感兴趣的:(vins-mono,SLAM,视觉slam)