一
先验:统计历史上的经验而知当下发生的概率;
后验:当下由因及果的概率;
网上有个例子说的透彻:
1)先验——根据若干年的统计(经验)或者气候(常识),某地方下雨的概率;
2)似然——下雨(果)的时候有乌云(因/证据/观察的数据)的概率,即已经有了果,对证据发生的可能性描述;
3)后验——根据天上有乌云(原因或者证据/观察数据),下雨(结果)的概率;
二、
相似变换:
相似变换比欧氏变换多了一个自由度,它允许物体进行均匀的放缩,其矩阵表示形式为:
注意到旋转部分多了一个缩放因子 s ,表示我们在对向量旋转之后,可以在 x , y , z 三个坐标上进行均匀的缩放。你可以想像一个边长为1的立方体通过相似变换后,变成边长为10的样子(但仍是正方体)。
仿射变换:
仿射变换的矩阵形式如下:
与欧式变换不同的是,仿射变换只要求 A 是一个可逆矩阵,而不必是正交矩阵。仿射变换也叫正交投影。经过仿射变换之后,立方体就不再是方的了,但是各个面仍是平行四边形。
投影变换
投影变换是最一般的变换,它的矩阵形式为:
它左上角为可逆矩阵 A,右上为平移 t, 左下缩放 a^T 。由于采用齐坐标,当 v =\ 0 时,我们可以对整个矩阵除于 v得到一个右下角为 1 的矩阵;否则,则得到右下角为 0 的矩阵。因此,2D 的射影变换一共有8个自由度,3D则共有15个自由度。
从真实世界到相机照片的比那还可以看成一个投射变换。可以想象成一个原本方形的地板砖,在照片当中是什么样子:首先,它不再是方形的。由于近大远小的关系,他甚至不是平行四边形,而是一个不规则的四边形。
RANSAC:
算法的基本假设是样本中包含正确数据(inliers,可以被模型描述的数据),也包含异常数据(outliers,偏离正常范围很远、无法适应数学模型的数据),即数据集中含有噪声。这些异常数据可能是由于错误的测量、错误的假设、错误的计算等产生的。同时RANSAC也假设,给定一组正确的数据,存在可以计算出符合这些数据的模型参数的方法。
关键帧的选择:
确定关键帧的标准如下:
(1)在上一个全局重定位后,又过了20帧;
(2)局部建图闲置,或在上一个关键帧插入后,又过了20帧;
(3 ) 当前帧跟踪到大于50个点;
(4)当前帧跟踪到的比参考关键帧少90%
把当前帧构造为关键帧,同时把当前关键帧设为当前帧的参考帧。
相邻的关键帧:
定义相邻为重合特征点数大于15
共视关键帧:
能够观测到同一个地图点的关键帧之间存在共视关系
视图方向Ni:
这是它的所有视图方向的平均单位向量(视图方向为那些连接观测到这个点的关键帧的光心和这个点的射线)
一级关联帧:
共同Map Point大于10
BA优化:
SLAM中的BA优化,先根据相机模型和A,B图像特征匹配好的像素坐标,求出A图像上的像素坐标对应的归一化的空间点坐标,然后根据该空间点的坐标计算重投影到B图像上的像素坐标,重投影的像素坐标(估计值)与匹配好的B图像上的像素坐标(测量值),不会完全重合,BA的目的就是每一个匹配好的特征点建立方程,然后联立,形成超定方程,解出最优的位姿矩阵或空间点坐标(两者可以同时优化)。
Covisilibilty Graph
Covisilibilty Graph的顶点是相机的Pose,而边是Pose-Pose的变换关系——所以也算是Pose Graph 一种吧。当两个相机看到相似的空间点时,它们对应的Pose就会产生联系(我们就可以根据这些空间点在照片上的投影计算两个相机间的运动)。根据观测到的空间点的数量,给这个边加上一个权值,度量这个边的可信程度。
Essential Graph
Essential Graph保留了所有的节点(就是关键帧), 但是有更少的边, 这仍然能够保持一个强网络以产生精确的结果。 系统从初始关键帧开始,增量地建立一个生成树, 这个生成树提供了一个有着最小数量的边的Covisibility Graph 的子图。 当一个新的关键帧被插入时, 这个关键帧被加入数中, 并被链接到和这个新关键帧有最多共同观测点的一个关键帧上; 当一个关键帧被筛选策略剔除时,系统更新与这个关键帧有关的所有链接
共视图(covisibility graph):将每个关键帧作为一个节点,若两个关键帧存在一定数量(至少15个)共视地图点则这两个这两个关键帧之间存在一条边,边的权重为共视地图点的数量。
本质图(essential graph):使用位姿图来校正闭环处的累积误差,由于共视图中边的数量较多,我们创建共视图的子图-本质图。本质图包含生成树、共视地图点数量超过100的边和回环的边
生成树(spanning tree):ORB-SLAM系统在第一个关键帧开始就维护一个生成树,每个关键帧只与共视点最多的相邻帧产生边。本质图包含生成树、共视地图点数量超过100的边和回环的边。
闭环候选帧:
主要步骤是:
(1)找出与当前帧pKF有公共单词的所有关键帧pKFi,不包括与当前帧相连的关键帧;
(2)统计所有闭环候选帧中与pKF具有共同单词最多的单词数,将最多单词数的80%设置为阈值,然后找出所有单词数超过阈值,且相似度检测大于相邻关键帧最低分数的关键帧。
(3)对于第二步中筛选出来的pKFi,每一个都要抽取出自身的共视(共享地图点最多的前10帧)关键帧分为一组(注意这里的组是以每一个关键帧为中心,加上与其相邻的关键帧所形成的,一个关键帧可以在多个组里面),然后计算每组的总得分以及每组得分最高的关键帧。
(4)以组得分最高的0.75作为阈值,找出高于这个阈值的所有组里面得分最高的帧,作为候选帧。
一致性检验:
就是通过两个for循环将当前帧及其相邻帧与闭环候选关键帧及其相邻帧进行匹配,也就是是否有相同的相邻关键帧,如果大于3那么就认为当前帧通过检测。但是此时还是有一些候选的关键帧。
sim3
将当前关键帧地图点和闭环关键帧地图点进行Bow匹配,匹配上的两组3D点集之间可以用RANSAS求解Sim3变换,从而获得当前关键帧相对于闭环关键帧的Sim3,然后传播到相连关键者,并调整地图点,从而完成闭环调整。
范数:
给定向量 x = (x1, x2, x3, … xn)
L1范数:向量各个元素绝对值之和,
L2范数:向量各个元素绝对值平方求和然后平方根,
Lp范数:向量各个元素绝对值p次方求和然后1/p次方,
L∞ (Lc范数)范数:向量各个元素求绝对值,其中的最大值。