ORB特征
ORB特征:
概述:
ORB算法是Ethan Rublee在ICCV 2011上提出的一种用于基于视觉信息的特征点检测与描述算法,特征点检测部分利用运算速度特别快的FAST角点检测子,并针对FAST特征不具备方向的问题,加入了FAST特征的方向信息,特征点描述部分则是利用基于像素点二进制位比较的BRIEF特征描述子,并改进了 BRIEF描述子对图像噪声敏感和不具备旋转不变性的缺点。
性能:(SIFT、SURF、ORB)
在对特征点的描述的细致程度上是SIFT算法高于SURF算法,SURF算法有高于ORB算法,但是在计算速度上这个顺序正好是相反的。因此在选择特征提取方法的时候要根据实际应用情况来选择,如进行离线的图像的拼接,3D建模等对时间要求不是很严格应用,可以选择SIFT,甚至是对仿射有很好抗性但是计算量很大的ASIFT特征。但是当应用场合是在线的实时检测,就要选择比较快速的SURF或ORB,另外在特征匹配的时候优秀的搜索算法也是提高速度的关键。
ORB特征提取可以分为两部分:1)具有方向的FAST兴趣点检测;2)具有旋转不变的BRIEF兴趣点描述子。
一、FAST兴趣点检测
FAST只是一种特征点检测算法,并不涉及特征点的特征描述。 FAST的提出者Rosten等将FAST角点定义为:若某像素与其周围邻域内足够多的像素点相差较大,则该像素可能是角点。
在ORB中Fast算法得到改进:使其具有旋转不变性
(1) FAST特征点是没有尺度不变性的,所以我们可以通过构建高斯金字塔,然后在每一层金字塔图像上检测角点,来实现尺度不变性。
(2) 那么,对于局部不变性,我们还差一个问题没有解决,就是FAST特征点不具有方向,ORB的论文中提出了一种利用灰度质心法来解决这个问题,灰度质心法假设角点的灰度与质心之间存在一个偏移,这个向量可以用于表示一个方向。
1.图像的质心计算
通过计算特征点的矩来得到点的方向。图像中某特征点点邻域的(p+q)阶矩的定义式为:
图像的0阶矩为:
图像的1阶矩为:
质心就是x坐标的和,y坐标的和再除以总数:
那么特征点与质心的夹角定义为FAST特征点的方向:
图示:
二、orb特征描述子
2.1 BRIEF特征描述
BRIEF的主要思想是在特征点附近随机选取若干点对组成图像块,把这些图像块的灰度值二值化后组成一个二进制串,并将这个二进制串作为该特征点的特征描述子。BRIEF描述子的每一位都是由随机选取的两个二进制点做比较得来的。定义一个经过高斯核做过平滑处理的图像块p的二进制比较准则为:
式中,p(x)为图像块p在像素点x(u,v)处的灰度值,同理可知p(y)为图像块p在像素点在y处的灰度值。选择n个(x,y)像素位置对,就可以得到BRIEF的n位二进制比特串。
一个BRIEF特征点可以定义为一个包含n次binary test的向量:
n可以为128,256,512等。
下面是一些技术细节:
1. 我们的binary test怎么选择点对?对哪些点做test?
虽然有很多binary test选择的点的分布方法,设我们处理的是
我们选择第二种,
BRIEF性能评价
1:不具备旋转不变性
2:对噪声敏感
3:不具备尺度不变性
4:在速度上是surf的10倍。
2.2 Steer BRIEF特征描述
下面介绍ORB如何改进BRIEF使之具备旋转不变性:
对于做过n次binary
test的点对定义一个
BRIEF令人惊喜的特性之一是:对于
2.3rBRIEF特征描述
为了把steered BRIEF方差增大,相关性降低,用了一种穷举方法挑选binary
test。该方法成为rBRIEF
提高BRIEF描述子对旋转变化保持不变性的方法是采用贪婪穷举算法暴力找到相关性较低的随机点对,即通过贪婪穷举的搜索方法找到相关系数接近0.5的图像点对。
首先建立一个大约300k关键点的测试集:
对于这300k个关键点中的每一个特征点,考虑它的
那么当300k个关键点全部进行上面的提取之后,我们就得到了一个
对该矩阵的每个列向量,也就是每个点对在300k个特征点上的测试结果,计算其均值。把所有的列向量按均值进行重新排序。排好后,组成了一个向量
进行贪婪搜索:从
这样,我们就得到了256个点对。上面这个过程我们称它为rBRIEF。
三种方法的比较:
三、利用BRIEF特征进行配准
经过上面的特征提取算法,对于一幅图中的每一个特征点,都得到了一个256bit的二进制编码。接下来对有相似或重叠部分的两幅图像进行配准。
特征配对是利用的汉明距离(异或)进行判决:
1、两个特征编码对应bit位上相同元素的个数小于128的,一定不是配对的。
2、一幅图上特征点与另一幅图上特征编码对应bit位上相同元素的个数最多的特征点配成一对。
例如特征点A、B的描述子如下。
A:10101011
B:10101010
我们设定一个阈值,比如80%。当A和B的描述子的相似度大于90%时,我们判断A,B是相同的特征点,即这2个点匹配成功。在这个例子中A,B只有最后一位不同,相似度为87.5%,大于80%。则A和B是匹配的。
我们将A和B进行异或操作就可以轻松计算出A和B的相似度。而异或操作可以借组硬件完成,具有很高的效率,加快了匹配的速度。
参考网站:
http://blog.csdn.net/gh_home/article/details/51511471
http://blog.csdn.net/akunainiannian/article/details/47656871
http://blog.csdn.net/chuhang_zhqr/article/details/50915203
http://blog.csdn.net/yang843061497/article/details/38553765
http://blog.csdn.net/z397164725/article/details/8426109