视觉里程计:特征点法(ORB特征)
视觉里程计(也称SLAM的前端)根据相邻图像的信息估计出粗略的相机运动,给后端提供较好的初始值。视觉里程计主要分大类:特征点法和直接法。其中特征点法是主流方法。优点是:稳定、对光照和动态物体不敏感的优势,目前方案比较成熟。
1 特征点
视觉里程计的核心问题是:如何根据图像估计相机运动。如果直接从矩阵层面考虑运动估计,将会非常困难。因此,需要从图像中找出具有代表性的点(特征点),这些点在相机视角发生少量变化后会保持不变,于是我们可以在各个图像中找到相同的点(匹配过程)。然后,基于此,讨论相机位姿估计问题和这些点的定位问题。在经典SLAM中,这些点称为路标;在视觉SLAM中,成为图像特征(Feature)。
特征点是图像中一些特别的地方。这些特别的地方包括:角点、边缘和区块。相比之下,角点更加特别,在不同的图像之间的辨识度更高。
角点算法(2000年之前提出):Harris角点、FAST角点、GFTT角点
更加稳定的局部图像特征:STFT、SURF、ORB等
这些局部图像特征的优点有:
1.可重复性:相同的特征可以在不同的图像中找到
2.可区别性:不同的特征有不同的表达
3.高效性:同一图像上,特征点的数量远小于像素的数量
4.本地性:特征仅与一小片图像区域有关
特征点:由关键点(Key-point)和描述子(Descriptor)组成。
关键点:特征点在图像中的位置,有些特征点还具有朝向、大小等信息。
描述子:通常是一个向量,描述了该关键点周围像素的信息。(描述子是按照:外观相似的特征应该有相似的描述子的原则设计的。因此,只要两个特征点的描述子在向量空间上的距离相近,就可以认为它们是相同的特征点)
SIFT(尺度不变特征变换):考虑了图像变换过程中光照、尺度、旋转等变化,但是计算量很大。
FAST关键点(没有描述子):适当降低精度和鲁棒性,以提升计算的速度。
ORB:改进了FAST检测子不具有方向性的问题,并采用速度极快的二进制描述子BRIEF。特征提取速度大大加快,同时具有旋转、尺度不变性。
2 ORB特征
ORB由关键点(称为Oriented FAST)和描述子(称为BRIEF)两部分组成。
提取ORB特征分为如下两个步骤:
1) FAST角点提取:相比FAST,ORB中计算了特征点的主方向,为后续的BRIEF描述子增加了旋转不变性。
2) BRIEF:对前一步提取出特征点的周围图像区域进行描述。ORB对BRIEF进行了一些改进,主要是指在BRIEF中使用了之前计算的方向信息。
优点:由于考虑到了旋转和缩放,ORB在平移、旋转和缩放的变换下仍有良好的表现。同时FAST和BRIEF的组合也非常高效,使得ORB特征在实时SLAM中非常受欢迎。
2.1 FAST关键点
FAST是一种角点,主要检测局部像素灰度变化明显的地方,速度很快。它的思想是:如果一个像素与邻域的像素差别较大(过亮或过暗),那么它更可能是角点。相比于其他角点检测算法,FAST只需比较像素亮度的大小,十分快捷。
检测过程如下:
(1) 在图像中选取像素p,其亮度为I,设置阈值为T(比如I的20%)
(2) 以像素p为中心,选取半径为3的圆上的16个像素点
(3) 如果圆上有连续的N个点的亮度在(I-T,I+T)之间,那么像素p可以被认为是特征点(N常取12,即FAST-12。N也可取9或者11)。
原始的FAST角点经常出现“扎堆”的现象。所以在第一遍检测之后,还需要用非极大抑制,在一定区域内仅保留响应极大值的角点,避免角点集中的问题。
FAST特征点不足之处:重复性不强、分布不均匀、不具有方向信息、尺度问题。
尺度问题:比如当取FAST的固定半径为时,远处看着是角点的地方,在近处像素放大后,很可能就不是角点了。
改进方法:
(1) 尺度不变性由构建图像金字塔,并在金字塔的每一层上检测角点来实现。
金字塔底层是原始图像,每往上一层,就对图像进行一个固定倍率的缩放,这样就得到了不同分辨率的图像。较小的图像可以看成是远处看过来的场景。在特征匹配算法中,我们可以匹配不同层上的图像,从而实现尺度不变性。
(2) 为解决旋转问题,计算特征点附近的图像灰度质心。所谓质心是值以图像灰度值作为权重的中心,具体操作步骤如下:
通过以上改进,FAST角点便有了尺度不变性和旋转不变性。从而大大提升了其在不同图像之间的鲁棒性。所以将这种改进后的FAST称为Oriented FAST。
2.2 BRIEF描述子
在提取Oriented FAST关键点后,对每个点计算其描述子。ORB使用改进的BRIEF特征描述。
BRIEF是一个二进制描述子,该描述子向量由0和1组成。取关键点附近两个随机像素(比如q和q),如果p>q,则取1;否则取0。如果我们去128个这样的p、q,最后得到的是128维的向量。
优点:BRIEF使用了随机点比较,速度很快;使用二进制表达,存储也十分方便,适用于实时的图像匹配。
3 特征匹配
作用:特征匹配解决了视觉SLAM中的数据关联问题,即确定当前看到的路标(特征点)与前一帧看到的路标之间的对应关系。通过图像与图像或者图像与地图之间的描述子进行准确匹配,可以为后续的姿态估计、优化等操作减轻大量负担。
最简单的暴力匹配:对当前帧每一个特征点与后一帧所有的特征点计算描述子的距离,再排序,最近的一个表示是最为相似的,作为匹配点。
描述子距离:可以取不同的距离度量范数。比如浮点型的描述子可用欧式距离进行度量;而对于二进制的描述子(比如BRIEF),往往使用汉明距离作为度量,两个二进制串之间的汉明距离,指的是:不同位数的个数
当特征量很大时,比如想匹配某个帧和一张地图的时候,此时可用快速近似最临近(FLANN)算法。(该算法实现已集成到OpenCV上了)
文章来源: ai-wx.blog.csdn.net,作者:AI 菌,版权归原作者所有,如需转载,请联系作者。
原文链接:ai-wx.blog.csdn.net/article/details/104451332
- 点赞
- 收藏
- 关注作者
评论(0)