视觉里程计第一部分
最近学习了高翔博士的视觉SLAM十四讲,所以就想做一些笔记,通过CSDN这个平台记录下来。
视觉里程计主要完成的工作就是:图片特征的提取——匹配——寻找几何关系——确定空间几何这样一个过程
一. 特征点
书中介绍的是ORB特征提取,选取的是FAST关键子和BRIEF描述子。
FAST的原理书中已经记录,我在这里要记录一下其运算过程和公式。
ORB对原始的FAST进行了改进,原始的FAST仅仅通过每个点与周围若干个点的亮度对比选定特征点,这种选法下特征点数量不可知,但是为了工程实践需要控制数量N,就需要使用HARRIS进行R值得评定,选择R值高的前N位。
第一步:计算图像内各个点,在X、Y方向上的灰度梯度。Ix ,Iy , Ix2 , Iy2 , Ix✖Iy ,这后三个.
第二步:使用高斯函数对 Ix2 , Iy2 , Ix✖Iy进行高斯加权,生成M矩阵的元素 A,B,C
第三步:每一点都可以计算自己的M矩阵,同样的每个点都可以计算自己的R值。K是一个可选择的常数0.04~0.06.
M是来自视窗内灰度值变化的矩阵,经过一阶泰勒化简,并去除了视窗偏移量的影响
总之HARRIS算法是用来判断视窗内各个点是否为角点并为这种判断估值的算法。
这个是一篇介绍HARRIS的博文,有兴趣的可以看一下。https://www.jianshu.com/p/efc81fdb8afb
这种角点具有尺度变化问题,和旋转方向性的问题。
1.1尺度问题
使用高斯金字塔来解决尺度不变性。
步骤可以分为两步:1.通过高斯滤波器进行平滑处理。2.对滤波器处理过的图像进行下采样。
如上图所示,高斯模糊 是将一个点周围3×3,5×5或7×7,或更多的点,进行高斯加权计算得到一个值,来替代原来这个点的值。
降采样 的意思,比如,要得到第二张图,就只选取第一张图中的奇数行和奇数列的像素进行传递。所以第二张图比第一张图的尺寸要小,仅为第一张图的1/4。分辨率逐渐降低。
上采样 的意思,就是,第二张图是第一张图通过在奇数行奇数列的位置,通过某种插值,插入元素。分辨率逐渐升高。
1.1.1 高斯金字塔的构建
整合自https://blog.csdn.net/dcrmg/article/details/52561656
1.将原图扩大一倍作为金字塔 1组1层,这张图经过高斯滤波后成为 1组2层。σ在SIFT中取1.6
2.1组3层 由 1组2层 滤波所得,σ(i+1)=k*σ(i) ,所以一组中图片尺寸一致,但是平滑系数不同,模糊程度不同,是越来越模糊的。
- 1组n-2层,也就是倒数第三层,做比例因子为2的降采样得到 2组1层,2组1层到2层的σ也从1.6开始。各组内,组外以此类推。
高斯金字塔构建成功。同组尺寸一样,后一组尺寸是前一组的一半。后一层是前一层平滑因子的k倍。
最后在每一层上进行角点检测。
1.1.2 差分金字塔DOG
整合自
https://blog.csdn.net/dcrmg/article/details/52561656
DOG差分金字塔是SIFT算法中应用的,因为这个算法的特征点提取不是从高斯金字塔提取而是DOG。
如下图所示,DOG金字塔的1组1层是由高斯金字塔的1组1层和1组2层差分得到的。可以明显看到,DOG每一组都比 高斯的每一组 少一层。
1.2 旋转问题
前面为了解决尺度问题,提出了高斯金字塔,旋转问题运用灰度质心法。
二.描述子
ORB使用的是BRIEF描述子,方法:假如是128位描述子,
1.根据一个预先设定好的选取点的模式,在关键子的周围 选择128对点,计算其明暗关系,用0,1表示。即创建了一个二进制数,存储了这128个点的信息。
三.匹配
尺度变化:前面用高斯金字塔做尺度不变性的目的————如果不同的尺度下都有同样的关键点,那么在不同的尺度的输入图像下就都可以检测出来关键点匹配了。
(整合自https://blog.csdn.net/sulanqing/article/details/16350061)
即为了匹配不同拍摄距离下,同一个物体周围的 关键子 。(比如把一个图放大,其描述子之间的距离会增加 导致无法匹配) 高斯金字塔创造出了不同尺度(模仿不同距离拍摄)。
方向变化:灰度质心法可以得出每个关键子的方向,第二幅图由于相对于第一幅图发生旋转,描述子也会发生旋转,此时只要让描述子以关键子为圆心转两幅图要匹配的关键子之间角度差,就可以了进行匹配了。
全文仅供本人记录学习之用,不希望产生任何收益。