视觉里程计就是通过对图像进行特征提取与匹配得到两帧之间的位姿,并进行估计相机运动。
经典SLAM中以相机位姿-路标来描述SLAM过程
特征点是图像中最具代表性的部分,如轮廓、边缘、最暗或最亮的部分
ORB特征的关键点是:Oriented FAST(一种改进的FAST角点)
描述子:改进BRIEF
FAST关键点:
FAST:主要检测局部像素灰度变化明显的地方,(如果一个像素与邻域的像素差别较大,则更可能是角点),检测过程如下:
在FAST12中,提出一个高效的测试,来快速排除一大部分非特征点的点,该测试仅仅检查位置1、5、9、13四个位置的像素,如果不满足至少三个角点亮度大于I+T或小于I-T,那么p不可能是一个角点。
FAST缺点:
很好的避免了尺度不变性
旋转是由灰度质心实现的
质心是指以图像块灰度值作为权重的中心。
描述子:
一种二进制描述子,其描述向量由许多01组成
特征匹配解决了SLAM中的数据关联问题,即确定当前看到的路标与之前看到的路标之间的对应关系。
通过对图像或者图像与地图之间的描述子进行准确匹配,可以为后续的姿态估计、优化等操作减轻大量负担,然而,由于图像特征的局部特征、误匹配的情况存在。
对于两个时刻的图像:
对极几何
本质矩阵仅依赖于外部参数R,t
八点法求E
将E看作3*3的矩阵,去掉尺度因子后剩下8个自由度,考虑一对匹配点,其归一化坐标为:
把上述方程记为
Ae=0
如果给定的匹配点多于8,该方程构成一个超定方程,即不一定存在e使得上式成立,此时可以计算一个最小二乘解
求出了在最小二乘意义下的E矩阵。
(超定方程是指具有多于未知数的方程组。在超定方程中,未知数的个数大于等于方程的个数。这种情况下,通常不存在一个恰好满足所有方程的解。因此,超定方程往往没有唯一解,而是寻求最小二乘解或最优解。最小二乘解是使得所有方程误差的平方和最小化的解,而最优解则是根据给定的目标函数和约束条件来确定的最佳解)
(U与V是正交阵,)
奇异值分解(SVD)是一种矩阵分解的方法。对于一个m×n维的矩阵A,它可以表示为以下形式的矩阵乘积:
A = UΣV^T
其中,U是一个m×m维的正交矩阵,Σ是一个m×n维的对角矩阵,V是一个n×n维的正交矩阵的转置。
在Σ中,对角线上的元素称为奇异值,按照从大到小的顺序排列。而U和V中的列向量分别称为左奇异向量和右奇异向量,它们都是正交向量。
1.3D:上一帧的相机坐标系下的3D点。
2.2D:两幅图片的匹配点信息,像素坐标。
3.其他:相机内参
> 求: 两帧之间的变化矩阵R,t
直接线性变换(DLT)
P3P
输入数据为3对 3D-2D匹配点
P3P总结:
利用三角形相似性质,求解A,B,C在当前相机坐标系下的3D坐标,转换一个3D-3D的位姿估计问题=》ICP
❗❗❗非线性优化不太会
前面说的线性优化方法,往往是先求相机位姿,再求空间点位置,非线性优化则是把它们都看成优化变量,放在一起优化,因此可以构建一个定义于李代数上的非线性最小二乘问题。
分析目标函数:我们通过特征匹配知道p1,p2是同一空间点的投影,估计了一个相机位姿,使得3D的实际投影位置与观测位置存在一个误差(重投影误差),则把误差求和,构建最小二乘问题,然后寻找最好的相机位姿,使其最小化。