一起来学SLAM之ORB特征点

平台活动 第三期:一起来学SLAM上周分享了ORB-SLAM相机位姿初始化的两种方式基础矩阵,本质矩阵,单应性矩阵讲解,本周主要讲解图像的FAST角点和ORB特征点的理论知识。相信接触过视觉SLAM的小伙伴一定不陌生!

角点的定义

角点是一种局部特征,具有旋转不变性和不随光照条件变化而变化的特点,一般将图像中曲率足够高或者曲率变化明显的点作为角点。检测得到的角点特征通常用于图像匹配、目标跟踪、运动估计等方面。

目前的角点检测算法可归纳为3类:基于灰度图像的角点检测基于二值图像的角点检测基于轮廓曲线的角点检测。角点是图像很重要的特征,对图像图形的理解和分析有很重要的作用。本文主要讲解ORB特征点以及该特征点的基础FAST角点。

ORB特征点的基础FAST角点

FAST(Features from Accelerated Segment Test)由Edward Rosten和Tom Drummond在2006年首先提出【1】,它不仅计算速度快,还具有较高的精确度。FAST的方法主要是以一个像素为中心像素,检测在这个像素点附近的圆形窗口上的16个像素的灰度,如果有n个连续点都比中心像素的灰度大或者小的话,这样的中心点就是FAST角点。如下图所示,当N为12个点的时候称之为FAST-12,而实际上当n=9时,往往能取得较好的效果。

那么在论文中指出在比较中心像素与周围像素的灰度值大小时有一个阈值t

之后又出现了改进的方案是首先比较第1和第9个像素,如果两个点像素强度都在中心像素强度t变化范围内,则说明这不是角点,如果接下来检测第5和13点时,发现上述四点中至少有三个点同中心点不相似,则可以说明这是个角点。

算法很可能检测出的角点彼此相邻,所以提出了使用非极大值抑制算法来去除一部分的相邻角点,思路是 为每一个检测到的角点计算它的响应大小(score function)。响应定义为中心点和它周围16个像素点的绝对偏差的和。比较两个相邻的角点响应值。值较低的角点将会被删除。

该算法思想简单,运算量很小,适合实时检测方面的应用。不过也有缺点,主要表现为对于边缘点与噪点区分能力不强,并且FAST不产生多尺度特征和方向信息,这样就会失去旋转不变性。

原论文示例图

ORB特征点

以上就是FAST角点的基础内容,那么ORB特征点在FAST角点的基础上有了更多的改进。Oriented FAST and Rotated BRIEF,简称ORB【2】。

(1)FAST特征点是没有尺度不变性的,所以ORB通过构建高斯金字塔,在每一层金字塔图像上检测角点,来解决尺度不变性的问题。

(2)ORB采用的是FAST算子检测特征点,对于局部不变性,提出了一种利用灰度质心法来解决这个问题,给检测到的特征点加了特征方向信息,构成oFAST,解决了FAST算子不带有方向的严重缺陷。

(3)ORB特征检测在FAST特征点检测的基础上增加了BRIEF特征描述算法。弥补了FAST只是一种特点检测算法,并不涉及特征点的描述的缺陷。

ORB特征检测具有尺度和旋转不变性,对于噪声及其透视变换也具有不变性,并且其运行时间远远优于SIFT和SURF,可应用于实时性特征检测。良好的性能是的利用ORB在进行特征描述时的应用场景十分广泛。

高斯金字塔

所谓图像金字塔是图像多尺度表达的一种,是一种以多分辨率来解释图像的有效但概念简单的结构。一幅图像的金字塔是一系列以金字塔形状排列的分辨率逐步降低,且来源于同一张原始图的图像集合。其通过梯次向下采样获得,直到达到某个终止条件才停止采样,我们将一层一层的图像比喻成金字塔,层级越高,则图像越小,分辨率越低。

ORB的尺度不变性的实现使用高斯金字塔来实现,高斯金字塔的构建分为两部分:对图像做不同尺度的高斯模糊和对图像做降采样。

高斯金字塔在降采样的基础上加上了高斯滤波,使得图像更加平滑。将图像金字塔每层的一张图像使用不同参数做高斯模糊,使得金字塔的每层含有多张高斯模糊图像,将金字塔每层多张图像合称为一组(Octave),金字塔每层只有一组图像,组数和金字塔层数相等,使用下列公式计算,每组含有多张(也叫层Interval)图像。另外,降采样时,高斯金字塔上一组图像的初始图像(底层图像)是由前一组图像的倒数第三张图像隔点采样得到的,其中将采样就是将图像中所有偶数行和列去除。

其中M,N为原图像的大小,t为金字塔塔顶图像的最小维数的对数值。如对于大小为8*8的图像,金字塔上各层图像的大小如表所示:

灰度质心法

灰度质心法用来计算特征点的方向,假设角点的灰度与质心之间存在一个偏移,这个向量可以用于表示一个方向。这种方法的主要思想就是,首先把特征点的邻域范围看成一个patch,然后求取这个patch的质心,最后把该质心与特征点进行连线,求出该直线与横坐标轴的夹角,即为该特征点的方向。论文中定义了以下几个公式来计算方向,第一步计算

计算质心

然后求取向量OC的方向,同时如果把x,y的范围保持在[−r,r]之间(r为该特征点邻域的半径),以特征点为坐标原点,则得到的方向角为

BRIEF描述算法

BRIEF 【3】是2010年的一篇名为《BRIEF:Binary Robust Independent Elementary Features》的文章中提出,BRIEF是对已检测到的特征点进行描述,它是一种二进制编码的描述子,摈弃了利用区域灰度直方图描述特征点的传统方法,大大的加快了特征描述符建立的速度,同时也极大的降低了特征匹配的时间。

BRIEF算法提取得到的特征点描述符是一个二进制的字符串,假设当前的一个特征点的邻域空间patch,设为p,那么对该p定义为

其中p(x)表示的是在点x处的图像灰度值,也就是比较灰度值来决定是0还是1 ,这样就可以得到一个n位的二进制串用于特征点的匹配。

经过上面的特征提取算法,对于一幅图中的每一个特征点,都得到了一个256bit的二进制编码。接下来对有相似或重叠部分的两幅图像进行配准。特征配对是利用的汉明距离进行判决。

总结

ORB-SLAM中特征点匹配的大致步骤如下

(1)构建图像高斯金字塔

(2)在不同尺度的图像上采用fast角点检测

(3)使用质心法计算每个特征点的主方向

(4)计算特征点的描述子

(5)使用汉明距离特征点之间的匹配

References

1. Rosten E , Drummond T . Machine Learning for High-Speed Corner Detection[J]. 2006.

2. Rublee E , Rabaud V , Konolige K , et al. ORB: An efficient alternative to SIFT or SURF[C]// 2011 International Conference on Computer Vision. IEEE, 2012.

3. Calonder M , Lepetit V , Strecha C , et al. BRIEF: Binary Robust Independent Elementary Features[J]. 2010.

以上内容如有疑问或者补充请大家积极留言,并且希望大家能够推荐与三维视觉,点云,SLAM,深度学习,高精地图相关文章和内容给平台邮箱dianyunpcl@163.com,欢迎留言给平台,如果有必要将会推出与你推荐相关的资料。同时希望大家能够积极参与分享加入我们,志愿者活动,认识更多志同道合的小伙伴,点击点云PCL运营招募啦。文章内容如有侵权请第一时间联系平台,将及时删除。

原文发布于微信公众号 - 点云PCL(dianyunPCL)

原文发表时间:2019-08-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券