视觉SLAM中的数学——解方程AX=b与矩阵分解:奇异值分解(SVD分解) 特征值分解 QR分解 三角分解 LLT分解
前言
本博客主要介绍在SLAM问题中常常出现的一些线性代数相关的知识,重点是如何采用矩阵分解的方法,求解线性方程组AX=B。主要参考了《计算机视觉——算法与应用》附录A以及Eigen库的方法。本博客可能不会对分解讲的特别深入,主要是想弄清楚各个分解的条件、分解结果以及应用(或特点)。
包括:
1、三角分解(LU分解)
2、LDLT分解与LLT分解(Cholesky分解)
3、QR分解
4、奇异值分解(SVD分解)
5、特征值分解
在矩阵分解之前
为什么要进行矩阵分解
1、矩阵分解可以在一定程度上降低存储空间,可以大大减少问题处理的计算量(如对一个矩阵进行求逆、求解方程组等),从而高效地解决目标问题。
2、矩阵分解可以提高算法的数值稳定性。
矩阵与矩阵分解的几何意义
在矩阵分解中,我们常常期望将矩阵分解成正交矩阵、对角矩阵以及上三角(下三角)矩阵的乘积。以三维矩阵为例,一个普通矩阵的几何意义是对坐标进行某种线性变换,而正交矩阵的几何意义是坐标的旋转,对角矩阵的几何意义是坐标的缩放,三角矩阵的几何意义是对坐标的切边。因此对矩阵分解的几何意义就是将这种变换分解成缩放、切边和旋转的过程。
常用矩阵分解
LU三角分解
三角分解又称为LU分解或LR分解,是将原正方(square)矩阵分解成一个上三角矩阵和一个下三角矩阵。
A=LDU=L(DU)=(LD)UA = LDU = L(DU) = (LD)UA=LDU=L(DU)=(LD)U
其中L是单位下三角矩阵,D是对角矩阵,U是单位上三角矩阵。
三角分解的主要用途在于简化一个大矩阵行列式值计算过程,或求解方程组(即高斯消元法)等。
LDLT分解
为A为对称矩阵,且任意一K阶主子阵均不为0时,A有如下唯一的分解形式:
A=LDLT=(100L2110L31L321)(D1000D2000D3)(1L21L3101L32001)A = LDL^T=\left(\begin{array}{ccc}{1} & {0} & {0} \\ {L_{21}} & {1} & {0} \\ {L_{31}} & {L_{32}} & {1}\end{array}\right)\left(\begin{array}{ccc}{D_{1}} & {0} & {0} \\ {0} & {D_{2}} & {0} \\ {0} & {0} & {D_{3}}\end{array}\right)\left(\begin{array}{ccc}{1} & {L_{21}} & {L_{31}} \\ {0} & {1} & {L_{32}} \\ {0} & {0} & {1}\end{array}\right)A=LDLT=⎝⎛1L21L3101L32001⎠⎞⎝⎛D1000D2000D3⎠⎞⎝⎛100L2110L31L321⎠⎞
即L为下三角单位矩阵,D为对角矩阵。LDLT方法实际上是Cholesky分解法的改进(LLT分解需要开平方),用于求解线性方程组。
LLT分解(Cholesky分解)
LLT分解即矩阵的Cholesky分解,又被称为平方根分解,是LDLT分解的一种特殊形式,即其中的D为单位矩阵。
对称正定矩阵A可以分解成一个下三角矩阵L和L的转置LT相乘的形式:
A=LLT=RTRA = LL^T = R^T RA=LLT=RTR
其中的L是下三角矩阵,R是上三角矩阵。
(正定要求矩阵的所有特征值必须大于0,因此分解的下三角对角元也是大于0的)
LLT分解常用于求解最小二乘问题中的ATAx=ATbA^TAx = A^TbATAx=ATb。
令C=ATA=RRC=A^TA=R^RC=ATA=RR,又有d=ATbd=A^Tbd=ATb,
因子经过因子分解后,x可以通过解下面的方程获得,即只需求解两个三角系统,通过一系列前向和后向迭代运算。
RTz=d,Rx=zR^Tz= d,Rx=zRTz=d,Rx=z
LLT分解的总操作数为O(N2)O(N^2)O(N2),对于系数矩阵来说操作数会大大降低。
QR分解
如果A是mxn实(复)矩阵,且其n个列线性无关,则A有分解:
A=QRA=QRA=QR
其中Q是正交矩阵(或酉矩阵),QQT=1QQ^T =1QQT=1,R是上三角矩阵。
QR分解有三种常用方法:Givens 变换、Householder 变换,以及 Gram-Schmidt正交化。
QR分解是一项广泛用于稳定求解病态最小二乘问题的方法,也是一些更复杂算法的矩阵,如计算SVD及特征值分解。在计算机视觉中,QR分解可以用于将相机矩阵转换为一个旋转矩阵和一个上三角的标定矩阵。
奇异值分解
设A是一个mxn的矩阵,则存在一个分解的m阶正交矩阵U、非负对角阵Σ和n阶正交矩阵V:
A=UDVT=U[Σ000]VTA=U D V^{\mathrm{T}}=U\left[\begin{array}{cc}{\Sigma} & {0} \\ {0} & {0}\end{array}\right] V^{\mathrm{T}} A=UDVT=U[Σ000]VT
其中Σ=diag(σ1,σ2,...,σr)Σ=diag(\sigma_1,\sigma_2,...,\sigma_r)Σ=diag(σ1,σ2,...,σr),σ\sigmaσ为矩阵A的全部非零奇异值,且一般我们会将Σ的值从大到小排序。奇异值分解的一个重要性质是:在实际大多数情况中,奇异值σ\sigmaσ减小的速度特别快,因此可以使用前r个奇异值来对矩阵做近似(即丢弃U和V的后几列),将获得原始矩阵A在最小二乘意义下的最佳逼近。
矩阵的奇异值分解通常是不唯一的。
SVD分解在最优化问题、特征值问题、最小二乘问题(尤其是亏秩最小二乘问题)等具有巨大的作用。
SVD分解的几何意义可以通过公式的重写获得:
AV=UΣ或Avj=σjujAV = UΣ 或 Av_j = \sigma_j u_j AV=UΣ或Avj=σjuj
即当矩阵A作用于任何基向量vjv_jvj时,会把vjv_jvj变换到uju_juj的方向,同时将uju_juj的长度变成σj\sigma_jσj。也可以看成先旋转然后缩放再旋转的过程。
特征值分解
如果A是一个NxN的方阵,且有N个线性无关的特征向量,则可以被写成特征值分解的形式:
A=UΛUTA=UΛU^TA=UΛUT
其中Q为NxN方阵,且第i列为A的特征向量,Λ为对角矩阵,其对角线上的元素为对应的特征值。注意只有可对角化矩阵才能作特征值分解。
特征值分解可用于求解矩阵的逆:
A−1=UΛ−1UTA^{-1}=UΛ^{-1}U^TA−1=UΛ−1UT
在数据统计分析中常常出现A为半正定矩阵,其表示数据点的协方差,此时特征值分解就是通常所说的主分量分析(PCA),因为它完成了对数据点分布在其中心周围变化的主方向和幅度的建模。
在求解最小二乘问题时,常常通过一系列外积之和构造对称矩阵C,此时C也是半正定的:
C=∑iaiaiT=AATC=\sum_i {a_ia_i^T} = AA^TC=i∑aiaiT=AAT
此时C的特征值和特征向量与A的奇异值和奇异向量:
A=UDVTA=U D V^TA=UDVT
C=AAT=UDVTVDTUT=UΛUTC = AA^T = U D V^T V D^T U^T=UΛU^TC=AAT=UDVTVDTUT=UΛUT
由此我们可以得到特征值λi=σi2\lambda_i = \sigma_i^2λi=σi2
视觉SLAM中的数学——解方程AX=b与矩阵分解:奇异值分解(SVD分解) 特征值分解 QR分解 三角分解 LLT分解相关推荐
- 解方程AX=b与矩阵分解:奇异值分解(SVD分解) 特征值分解 QR分解 三角分解 LLT分解
文章目录 1. 前言 2. LU三角分解 3. Cholesky分解 - LDLT分解 4. Cholesky分解 - LLT分解 5. QR分解 6. 奇异值分解 7. 特征值分解 1. 前言 本博 ...
- 视觉SLAM中,本质矩阵、基础矩阵、单应性矩阵自由度和秩分析
视觉SLAM中,本质矩阵.基础矩阵.单应性矩阵自由度和秩分析 1.各个矩阵的自由度 由于基础矩阵和本质矩阵都是由对极约束来的 1.1 本质矩阵E的自由度为5,秩为2 1.1.1 自由度: 首先,旋转和 ...
- 视觉SLAM中的数学基础 第三篇 李群与李代数
转自:http://www.cnblogs.com/gaoxiang12/p/5137454.html 致敬原作者,请移步原作者博文详细浏览 前言 在SLAM中,除了表达3D旋转与位移之外,我们还要对 ...
- OA-SLAM:在视觉SLAM中利用对象进行相机重新定位
作者 | 鱼肖浓 编辑 | 汽车人 原文链接:https://zhuanlan.zhihu.com/p/587010197 点击下方卡片,关注"自动驾驶之心"公众号 ADAS巨卷 ...
- SLAM | 视觉SLAM中的后端:后端优化算法与建图模板
点击上方"AI算法修炼营",选择加星标或"置顶" 标题以下,全是干货 前面的话 前面系列一中我们介绍了,VSLAM 是利用多视图几何理论,根据相机拍摄的图像信息 ...
- 视觉SLAM中PNP求解
PNP(Perspective-n-points)是SLAM中估计位姿的重要方法.已知条件为路标点在相机1中的相机坐标以及投影到相机2中的像素坐标,据此去估计相机1.相机2间的位姿.主要解法包括DLT ...
- SVO: 视觉SLAM中特征点法与直接法结合
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 前面的话 VSLAM 是利用多视图几何理论,根据相机拍摄的图像信息 ...
- SLAM | 视觉SLAM中特征点法与直接法结合:SVO
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 前面的话 VSLAM 是利用多视图几何理论,根据相机拍摄的图像信息对相机进行定位并同时构建周围环境地图 ...
- 2017广东工业大学程序设计竞赛决赛 题解源码(A,数学解方程,B,贪心博弈,C,递归,D,水,E,贪心,面试题,F,贪心,枚举,LCA,G,dp,记忆化搜索,H,思维题)...
心得: 这比赛真的是不要不要的,pending了一下午,也不知道对错,直接做过去就是了,也没有管太多! Problem A: 两只老虎 Description 来,我们先来放松下,听听儿歌,一起&qu ...
最新文章
- 【vue】vue-znly
- 技术图文:如何爬取一个地区的气象数据(上)?
- 高效程序猿之(四)VS2010其他技巧
- 结构体成员管理AVClass AVOption之2AVOption,设置选项值
- 并联系统的失效率公式推导_电容的串并联计算方法
- 方法的反射---反射学习笔记(二)
- python生成元组_python 列表生成、元组、字典
- c mysql 双主复制_mysql双主复制及使用keepalived作高可用的配置详解
- 区块链开发(二)以太坊客户端基本操作命令
- MaxScript 冷门知识点
- C++入门项目必练100题
- IT培训分享:11种热门编程语言的主要用途
- 【读书笔记】《Web全栈工程师的自我修养》
- linux shell 脚本手动执行没问题,但在任务计划中执行有问题
- 如何写一个好的缺陷(Defect)报告
- 工业设备软件的研发测试
- 逻辑回归LR vs 支持向量机SVM
- 性能测试中的服务器数据监控
- python爬虫api接口,网易云音乐python爬虫api接口
- 电子商务的概念及应用
热门文章
- IDEA导出jar(引用外部jar包)
- 复盘双12就是复盘团队协同工具的实操能力
- [HBNIS2018]excel破解——buuctf
- ByteBuffer转String与解析为json对应的对象
- Android JSONObject 转 String / String转JSONObject
- Matlab初阶绘图(2022b)
- 序贯概率比检验法matlab编程,序贯概率比测试法(SPRT)PCM帧同步性能分析
- 计算机网络知识点笔记
- 苹果youtube无法连接网络_杂项其一 “IOS系统某些app无法连接到网络,其他正常”解决办法...
- 野火 STM32 F103 指南者LED灯闪烁作业