orblsam2-理论基础(三)

看到orbslam2初始化里的Initializer::ReconstructH和Initializer::ReconstructF两个子函数里用到了opencv::SVD分解。这里我将会详细讲解SVD的分解理论!

奇异值分解(Singular Value Decomposition)是线性代数中一种重要的矩阵分解

假设M是一个m×n阶矩阵,其中的元素全部属于域 K,也就是 实数域或复数域。如此则存在一个分解使得

M = UΣV*,

其中U是m×m阶酉矩阵;Σ是半正定m×n阶对角矩阵;而V*,即V的共轭转置,是n×n阶酉矩阵。这样的分解就称作M的奇异值分解。Σ对角线上的元素Σi,i即为M的奇异值。

常见的做法是为了奇异值由大而小排列。如此Σ便能由M唯一确定了。(虽然U和V仍然不能确定。)

其中酉矩阵定义为:

n阶复方阵U的n个列向量是U空间的一个标准正交基,则U是酉矩阵(Unitary
Matrix)。显然酉矩阵是正交矩阵复数域上的推广

矩阵Σ的对角线上的元素等于M的奇异值. U和V的列分别是奇异值中的左、右奇异向量。因此,上述定理表明:

一个m × n的矩阵至多有 p = min(m,n)个不同的奇异值。

总是可以找到在Km 的一个正交基U,组成M的左奇异向量。

总是可以找到和Kn的一个正交基V,组成M的右奇异向量。

U是M x M矩阵,其中U的列为MMT的正交特征向量,V为N
x N矩阵,其中V的列为M TM的正交特征向量,再假设r为M矩阵的秩,则存在奇异值分解:

M = UΣV*(v*是v的共轭转置)

其中MMT和MTM的具有相同的奇异值(如果是实数,则是具有相同的特征值)

在齐次方程中

其他非齐次方程组做最小二乘的方法

时间: 2024-11-29 10:12:55

orblsam2-理论基础(三)的相关文章

机器学习2——学习路线规划

一.学习路线 1)理论基础:微积分.线性代数.概论论与数理统计.典型算法: 2)编程语言.工具和环境: 3)基本工作流程 ===================================================== 二.理论基础 ===================================================== 三.环境准备 ===================================================== 四.工作流程 ======

并行计算复习————第三篇 并行计算理论基础:并行数值算法

第三篇 并行计算理论基础:并行数值算法 注:此篇较水,=.= Ch9 稠密矩阵运算 9.1 矩阵的划分 矩阵的划分一般分为带状划分和棋盘划分,在此基础上又有循环划分的变体: 带状划分:把矩阵的若干行或若干列连续地划分给一个处理器 循环带状划分:把矩阵的若干行或若干列间断且等间隔地划分给一个处理器 棋盘划分:把方阵连续地划分成若干子方阵,每个处理器指派一个子方阵 循环棋盘划分:把方阵间断且等间隔地划分成若干子方阵,每个处理器指派一个子方阵 一般情况下,棋盘划分的划分方法能够开发出更高并行度的算法

三色视者与四色视者身后的理论基础:色彩原理

理论上,常人的肉眼是三色视觉(Trichromacy),通过三种视锥细胞(也可以说感光色素)来生成蓝色.绿色和红色的波长.但是,肉眼的不足之处是存在同色异谱色(metamers),也就是说尽管色彩看起来相同,但实际上是由不同光谱组成的. 视锥细胞与色彩识别 我们眼睛的视网膜视锥细胞是可以分辨入射光线颜色变化的.常人一般拥有三种类型的视锥细胞,每种类型的细胞能够识别出一种颜色——绿色.红色,或蓝色,因此我们这样的普通人也被称为“三色视者”.每种类型视细胞经过不同波长的光发生不同的连锁反应,引起视觉

java理论基础学习三

Eclipse 是一个开放源码的.基于java的可扩展开发平台 最初主要用来java语言开发,但目前也有人通过插件使其作为其它计算机语言比如C++.python.安卓的开发 下载地址:http://eclipse.org/downloads 包 Package jdk常用的包 生成API文档 javadoc 项目右击-->Export-->java-->javadoc

自定义View 篇三 《手动打造ViewPage》

有了之前自定义View的理论基础,有了ViewPage.事件分发机制.滑动冲突.Scroller使用等相关知识的铺垫,今天纯手动打造一款ViewPage. 1.完成基本的显示: 在MainActivity中: public class MainActivity extends AppCompatActivity { private MyViewPage mViewPage; int[] imageIds = new int[]{ R.drawable.pic_0, R.drawable.pic_

转载--理解数字信号处理的三把钥匙

原址 在数字信号处理大厦中,有许许多多的小房间,有的门上写着"DFT",有的门上写着"滤波",有的门上写着"卷积",有的门上写着"相关",等等.每一个房间都藏着知识的秘密,每一个房间都要用属于自己的钥匙才能打开.但就整体上来说,理解数字信号处理有三把"万能"的钥匙:时域与频域的相互切换.向量和MATLAB软件.充分应用这三把钥匙,能为深入理解数字信号处理提供有力的帮助. 1.时域与频域的相互切换 深入理解数

细菌觅食优化算法:理论基础,分析,以及应用(未完)

原作者:Swagatam Das,Arijit Biswas,Sambarta Dasgupta,和Ajith Abraham  [摘 要]细菌觅食优化算法(Bacterial foraging optimization algorithm[BFOA])已经被分布式优化和控制的同行们当作一种全局性的优化算法接受.BFOA是由大肠杆菌的群体觅食行为所启发而总结出来 的.BFOA已经吸引了足够多的研究者的注意,由于它出现在解决真实世界中一些应用领域上优化问题的高效性.E.coli 的群体策略的生物基

软件优化理论基础以及方法论小结.

就像我其他博文中说的,对于软件的优化除开算法,全部都是为流水线服务的.所以优化的时候要时刻记住一这点.由于优化的东西比较杂,我写的不是很好,所以在文章的最后,我会试着提炼出一些通用性的原则. 由于之前在WPS上写的,所以代码没有用模版来排版,各位看官就将就着看吧..我也只是为了提炼一次知识,真正的优化还是认真看一遍书来的好. 有哪些方法优化软件? 通常有两种方式,一种是通过编译器,另一种则是自己写.因为编译器会考虑到特殊情况,所以能做的优化很多时候并不是特别多.这时候就需要自己写优化来帮助 一.

【51CTO学院三周年】我的网络求学之路

我是一名电脑爱好者. 也是一名非科班毕业的IT从业者 回想我的第一台电脑是286,1M内存,VGA显卡,14寸VGA单显,1.2M的软驱,这个配置在当时已经算是超前的了(因为当时的流行配置是8086,EGA单显). 电脑到手,我就成了"电脑教"的狂热教徒,每天顶礼膜拜,花费所有的时间在电脑上面,从早到晚,从晚到早,永不停歇.以至于家人强迫我离开电脑桌去做别的活动. 在这种近乎于神经质的狂热追求下,我的电脑技术开始提高了.我当时的工作是邮政局的邮递员,这为我学电脑创造了极其有利的条件,因

简析TCP的三次握手与四次分手(TCP协议头部的格式,数据从应用层发下来,会在每一层都会加上头部信息,进行封装,然后再发送到数据接收端)good

2014-10-30 分类:理论基础 / 网络开发 阅读(4127) 评论(29) TCP是什么? 具体的关于TCP是什么,我不打算详细的说了:当你看到这篇文章时,我想你也知道TCP的概念了,想要更深入的了解TCP的工作,我们就继续.它只是一个超级麻烦的协议,而它又是互联网的基础,也是每个程序员必备的基本功.首先来看看OSI的七层模型: 我们需要知道TCP工作在网络OSI的七层模型中的第四层——Transport层,IP在第三层——Network层,ARP在第二层——Data Link层:在第二