视觉里程计就是通过对图像进行特征提取与匹配得到两帧之间的位姿,并进行估计相机运动。
经典SLAM中以相机位姿-路标来描述SLAM过程
特征提取与匹配
- 路标是三维空间中固定不变的点,可以在特定位姿下观测到
- 在视觉SLAM中,可利用图像特征点作为SLAM中的路标
特征点
特征点是图像中最具代表性的部分,如轮廓、边缘、最暗或最亮的部分
特征点具有以下性质
特征点的信息:
- 关键点:位置、大小、方向、评分等
- 描述子:特征点周围的图像信息
ORB特征
ORB特征的关键点是:Oriented FAST(一种改进的FAST角点)
描述子:改进BRIEF
FAST关键点:
FAST:主要检测局部像素灰度变化明显的地方,(如果一个像素与邻域的像素差别较大,则更可能是角点),检测过程如下:
在FAST12中,提出一个高效的测试,来快速排除一大部分非特征点的点,该测试仅仅检查位置1、5、9、13四个位置的像素,如果不满足至少三个角点亮度大于I+T或小于I-T,那么p不可能是一个角点。
FAST缺点:
- 原始FAST角点经常出现扎堆的现象。所以在第一遍检测之后,还需要用非极大抑制,在一定区域内仅保留响应极大值的角点,避免角点集中问题。
- 由于FAST角点不具有方向信息且存在尺度问题,ORB添加了尺度和旋转的描述:尺度不变性通过构建图像金字塔来实现,旋转是由灰度质心法来实现的。
Oriented FAST:
👉尺度不变性
很好的避免了尺度不变性
👉旋转是由灰度质心实现的
质心是指以图像块灰度值作为权重的中心。
描述子:
一种二进制描述子,其描述向量由许多01组成
- 1:关键点附近两个像素p>q
- 0: 关键点附近两个像素p<q
example:
那么怎么旋转的呢?
BRIEF描述子总结
- 优点:使用了随机选点的比较,速度标记快,由于使用二进制表达,存储起来十分方便
- 缺点:原始的BRIEF描述子具有旋转不变性,在图像发生旋转时容易丢失,而ORB在FAST特征提取阶段计算了关键点的方向,计算了旋转之后的BRIEF特征使ORB的描述子具有较好的旋转不变性。
- BRIEF是一种二进制描述,需要用汉明距离度量(即其中01个数的差异)
特征匹配
特征匹配解决了SLAM中的数据关联问题,即确定当前看到的路标与之前看到的路标之间的对应关系。
通过对图像或者图像与地图之间的描述子进行准确匹配,可以为后续的姿态估计、优化等操作减轻大量负担,然而,由于图像特征的局部特征、误匹配的情况存在。
对于两个时刻的图像:
- 在图像It中提取到特征点xm(m=1,2…M)在图像It+1时刻提取到特征点xn(n=1,2…N)
- 暴力匹配:对于每一个特征点xm与所有xn测量描述子的距离,然后排序,取最近的一个作为匹配点
- 当特征点数量很大时,匹配的运算量会变得很大,选用一些改进算法:快速近似最近邻算法
计算相机运动
2D-2D对极集合
)
需要用到相机坐标系->像素坐标系相关知识
👉 对极几何
本质矩阵仅依赖于外部参数R,t
👉八点法求E
将E看作3*3的矩阵,去掉尺度因子后剩下8个自由度,考虑一对匹配点,其归一化坐标为:
把上述方程记为
Ae=0