目录
一、引言
在局部特征点检测快速发展的时候,人们对于特征的认识也越来越深入,近几年来许多学者提出了许许多多的特征检测算法及其改进算法,在众多的特征提取算法中,不乏涌现出佼佼者。从最早期的Moravec,到Harris,再到SIFT、SUSAN、GLOH、SURF算法,可以说特征提取算法层出不穷。各种改进算法PCA-SIFT、ICA-SIFT、P-ASURF、R-ASURF、Radon-SIFT等也是搞得如火如荼,不亦乐乎。
一.FAST
1.1 FAST概述
在FAST( Features from Accelerated Segments Test )出来之前的一些算法如SIFT、SURF提取到的特征也是非常优秀(有较强的不变性),但是时间消耗依然很大,而在一个系统中,特征提取仅仅是一部分,还要进行诸如配准、提纯、融合等后续算法,因此提高特征检测的实时性是非常必要的。
Edward Rosten和Tom Drummond两位大神经过研究,于2006年在《Machine learning for high-speed corner detection》中提出了一种FAST特征点,并在2010年稍作修改后发表了《Features From Accelerated Segment Test》。
FAST是一种特征点(角点)提取算法,并不涉及特征点的特征描述。Rosten等将FAST角点定义为:若某像素与其周围邻域内足够多的像素点相差较大,则该像素可能是角点。
1.2 特征点提取 of FAST
1、建模。如上图所示,以一个像素p为中心,半径为3的圆上有16个像素点(a1、a2、...、a16),16个点呈现对称关系:<a1,a9>、<a2,a10>...,<a8,a16>。
2、一级候选点。定义一个阈值T,计算a1、a9与p的像素差绝对值|p-a1|、|pa9|。若{ |p-a1|,|p-a9| }2个值中至少存在1个(1/2)大于阈值T,则将p点定为一级候选点并继续考察,否则将p定为非FAST特征点。
3、二级候选点。在p是一级候选点的条件下,若{ |p-a1|,|p-a9| ,|p-a5| ,|p-a13| }4个值中至少存在3个(3/4)大于阈值T,则将p点定为二级候选点并继续考察,否则将p定为非FAST特征点。
4、三级候选点。在p是二级候选点的条件下,若{ |p-a1|,|p-a2|,...,|p-a16| }16个值中至少存在9个大于(9/16)阈值T,则将p点定为三级候选点(记为f点)并继续考察,否则将p定为非FAST特征点。
5、非极大值抑制。在三级候选点的邻域内可能存在其他的三级候选点,为解决特征点在邻域内的冗余,需要进行非极大值抑制。 首先为每个f点计算FAST分值s:
然后进行判断,选出FAST特征点:(1)若f邻域内有多个三级候选点,并且f是所三级候选点中s取值最大的,则将f选为FAST特征点,否则将f抑制掉。 (2)若f邻域内只有一 个特征点,则将f选为FAST特征点。
1.3 对FAST的评价
优点 | FAST算法比其他已知的角点检测算法要快很多倍 |
缺点 | 1.当图片中的噪点较多时,易受噪点影响。 2.算法的效果还依赖于一个阈值T。 3.FAST不产生多尺度特征,不具备尺度不变性。 4.FAST特征点没有方向信息,不具备旋转不变性不具备旋转不变性。 |
二、BRIEF
2.1 BRIEF概述
Lowe在2004提出的SIFT(Scale-invariant feature transform),是一种128维的浮点描述子,其不仅仅提取代价高,而且匹配代价十分高(虽然有KDTree),还造成了大量空间浪费。 BBRIEF(Binary Robust Indenpendent Elementary Features)是一种生成二值化描述子的算法,通过BRIEF可将一个特征点用一个二进制串进行描述,而并不需要去计算一个类似于SIFT的特征描述子。
BRIEF是由Michael Calonder, Vincent Lepetit, Christoph Strecha, and Pascal Fua等人完成发表在ECCV2010上,BRIEF用二进制串描述局部特征,有两个优点:
- 很少的bit就能描述独特的性质;
- 可以用汉明距离计算两个二进制串之间的特征,计算速度快。在实际应用中的好处是:算的准;算的快;省内存。
2.2 特征点描述 of BRIEF
1.建模。以特征点p为中心,取其大小为SxS的邻域P(论文中并未提及S的取值,也未讨论S的大小对结果的影响,但是通过原作者之后做的实验中发现,原作者使用的S大小为31)
2.去噪。原始图像可能存在大量噪声,在构造上述描述子时,只考虑了单个像素处的像素值,因此对噪声非常敏感,会对结果产生影响。因此,通过对区域P进行预平滑,可以降低这种敏感性,从而提高描述子的稳定性和可重复性。(原作者用的是高斯平滑,当1<σ<3时,识别率相对较好,实际中原作者用的σ=2,卷积核大小为9x9。)
3.随机选取点对。在特征点的邻域块P内选择n个点对{ <X,Y>|<x1,y1>,<x2,y2>,...<xn,yn> },Calonder的实验中测试了5种采样方法:
(a). X,Y均呈同一均匀分布。X~U(-S/2,S/2),Y~U(-S/2,S/2)。
![](https://i-blog.csdnimg.cn/blog_migrate/9fea7916cb678df7e4897cc1bdc99559.png)
(b). X,Y均呈同一高斯分布。X~N(0 , 1/(25*S^2)),Y~N(0 , 1/(25*S^2))。准则采样服从各项同性的同一高斯分布。
![](https://i-blog.csdnimg.cn/blog_migrate/279b51f757c1e6387f3be1dbeaa010a8.png)
(c). X,Y呈不同高斯分布,先采样X,再采样Y。X~N(0 , 1/(25*S^2)),Y~N(0 , 1/(100*S^2)),采样分两步进行,首先在原点处为X进行高斯采样,然后以X为中心,对Y进行采样。
![](https://i-blog.csdnimg.cn/blog_migrate/f6b5378bda73158ee8f38832f0fac2d9.png)
(d). X,Y在空间量化极坐标下的离散位置进行随机采样。
![](https://i-blog.csdnimg.cn/blog_migrate/bc946a8f66d1be80eb7c1559eaa0788b.png)
(e). 把X固定为(0,0),Y在空间量化极坐标下的离散位置进行随机采样。
![](https://i-blog.csdnimg.cn/blog_migrate/c1ca7cbb2f5fa7207f9076196233a92e.png)
说明:(e)较其他4种随机方法性能相差较多,故舍弃;(b)相对其他3种方法有略微的优势,所以原作者在paper中用的是(b)方法。原作者从五对图片中提取了大约4000个点对,特征字符串位数为256位,也就是说最大汉明距离为256,通过实验得知非匹配点的分布大致是以128为中心的高斯分布,而匹配点的汉明距离围绕在一个较小值附近,如下图所示。但是作为分离匹配点和非匹配点的具体策略和阈值,paper中并未给出。
4.生成BRIEF特征描述子。
P表示特征点p对应的邻域;I(x)为x点的像素值大小;brief(p),为针对特征点p,在其邻域P内生成的BRIEF二进制特征描述子;n为特征描述子的二进制维度,n=128,256或512。
也就是比较x,y点的像素值,如果y点像素值大则为1,否则为0。将n个结果从最低位到最高位依次组成二进制串,形成n维二进制描述子brief(p)。
选取点对的顺序很重要,因为在对比结果的时候也要用相同的顺序来计算二进制描述子brief(p),并且计算其他特征点的描述子的时候也要以相同的顺序选取点对。
2.3 关于BRIEF的实践经验
- 不匹配特征点的描述子的Hamming距离在128左右。对特征点进行匹配,这时计算两特征点描述子的Hamming距离。判断是否匹配的依据:经过大量实验数据测试,不匹配特征点的描述子的Hamming距离在128左右,匹配点对描述子的Hamming距离则远小于128。(Hamming距离:表示两个(相同长度)字对应位不同的数量。具体来说,就是对两个字符串进行异或运算,并统计结果为1的个数,那么这个数就是汉明距离。)
- 准确性上,BRIEF_512>BRIEF_256>SURF、U-SURF>BRIEF_128。512位的BRIEF表现最好。256位的BRIEF表现略差512位的BRIEF,但是优于SURF and U-SURF。128位的BRIEF太短了,表现比较局限。
- 角度敏感性。当旋转角度在10到15度时,几乎没什么影响,但是随后会急剧下降,也就是说不具备旋转不变性。BRIEF没有专门考虑旋转的问题,那么就从0°~360°进行旋转测试吧,发现:
- 小范围(0-15°)内,BRIEF识别率最高,其次是U-SURF,然后是SURF和o-BRIEF;
- 角度再大一点(15°~30°),BRIEF和U-SURF准确率迅速下降到0;
- 角度再大,则这两个算法的识别率保持为0.
- 而SURF和o-BRIEF这两个考虑旋转方向的算法,始终能保持大于60%的准确率,而且在90°的倍数角度处,识别率有极大值。
- 速度上,BRIEF>>SURF。匹配两张图片的特征点通常有一下三步:1)选择特征点;2)特征点描述;3)特征点匹配。速度测试结果(BRIEF -k,k=n/8,n是描述子维数,环境:2.66 GHz/Linux x86-64)如下图:
可以看出,BRIEF的速度远远高于SURF的速度。
2.4 对BRIEF的评价
优点 | 1.BRIEF抛弃了传统的用梯度直方图描述区域的方法,改用检测随机响应,描述子生成速度快; 2.计算汉明距离只需通过异或操作加上统计二进制编码中“1”的个数的操作,这些通过底层的运算即可实现,生成的二进制描述子匹配速度快,也便于在硬件上实现。 |
缺点 | 1.不具备旋转不变性; 2.不具备尺度不变性; 3.容易受噪声影响; |
三. ORB
3.1 ORB概述
ORB(Oriented FAST and Rotated BRIEF)是一种快速特征点提取和描述的算法,是由Ethan Rublee, Vincent Rabaud, Kurt Konolige 以及Gary R.Bradski在2011年一篇名为“ORB:An Efficient Alternative to SIFTor SURF”的文章中提出。ORB算法分为两部分,分别是特征点提取和特征点描述。
特征点提取是由FAST(见第二章)算法发展来的,特征点描述是根据BRIEF(见第三章)特征描述算法改进的。ORB特征是将FAST特征点的检测方法与BRIEF特征描述子结合起来,并在它们原来的基础上做了改进与优化,主要解决了BRIEF描述子不具备旋转不变性的问题。据说,ORB算法的速度是sift的100倍,是surf的10倍。
3.2 旋转不变性 of ORB
回顾一下BRIEF描述子的计算过程:在当前关键点P周围以一定模式选取n个点对,组合这n个点对的T操作的结果就为最终的描述子。
BRIEF选取点对的时候,是以当前关键点为原点,以水平方向为x轴,以垂直方向为y轴建立坐标系。当图片发生旋转时,坐标系不变,同样的取点模式取出来的点却不一样,计算得到的描述子也不一样,这是不符合我们要求的,如下图所示:
![](https://i-blog.csdnimg.cn/blog_migrate/3a5314fe6aef187a17fbec3ad27a887a.png)
因此,我们需要重新建立坐标系,使新的坐标系可以跟随图片的旋转而旋转,这样我们以相同的取点模式取出来的点将具有一致性。
ORB在计算BRIEF描述子时建立的坐标系是以关键点为原点,以关键点P和取点区域的质心M的连线PM为x轴正方向,垂直x轴方向为y轴建立坐标系。
我们知道P是固定的,质心M是随物体旋转而旋转,那么PM与物体的旋转保持一致,当我们以PM作为坐标轴时,在不同的旋转角度下,我们以同一取点模式取出来的点是一致的,这就解决了旋转一致性的问题。
![](https://i-blog.csdnimg.cn/blog_migrate/2740c6c59c7cb0fcd4c026fef85f9b82.png)
质心M的计算公式如下:
3.3 关于尺度不变性改进 of ORB
ORB算法本身并未解决尺度不变性问题,后人对ORB进行改进,以增加尺度不变性。(待续...2020.8.16)
3.4 对ORB的评价
优点 | ORB是一种快速的特征提取和匹配的算法。它的速度非常快。 ORB对BRIEF在建系方面进行了改进,其具有了较稳定的旋转不变性。 |
缺点 | ORB使用二进制串作为特征描述,相应的算法的质量较差,这就造成了高误匹配率。 ORB算法在增加算法的尺度变换的情况下仍然没有取得较好的结果,在尺度方面效果较差。 |