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选择的点的分布方法,设我们处理的是S×S的patch大小,我们的对做binary
test的x和y点的选择有以下几种:

我们选择第二种,

BRIEF性能评价

1:不具备旋转不变性

2:对噪声敏感

3:不具备尺度不变性

4:在速度上是surf的10倍。

2.2 Steer BRIEF特征描述

ORB选择了BRIEF作为特征描述方法,但是我们知道BRIEF是没有旋转不变性的,所以我们需要给BRIEF加上旋转不变性,把这种方法称为“Steer BREIF”。

下面介绍ORB如何改进BRIEF使之具备旋转不变性:

对于做过n次binary
test的点对定义一个2×n大小的矩阵

BRIEF令人惊喜的特性之一是:对于n维的二值串的每个比特征位,所有特征点在该位上的值都满足一个均值接近于0.5,而方差很大的高斯分布。方差越大,说明区分性越强,那么不同特征点的描述子就表现出来越大差异性,对匹配来说不容易误配。但是当我们把BRIEF沿着特征点的方向调整为Steered
BRIEF时,均值就漂移到一个更加分散式的模式。可以理解为有方向性的角点关键点对二值串则展现了一个更加均衡的表现。而且论文中提到经过PCA对各个特征向量进行分析,得知Steered BRIEF的方差很小,判别性小,各个成分之间相关性较大。

2.3rBRIEF特征描述

为了把steered BRIEF方差增大,相关性降低,用了一种穷举方法挑选binary
test。该方法成为rBRIEF

提高BRIEF描述子对旋转变化保持不变性的方法是采用贪婪穷举算法暴力找到相关性较低的随机点对,即通过贪婪穷举的搜索方法找到相关系数接近0.5的图像点对。

首先建立一个大约300k关键点的测试集:

对于这300k个关键点中的每一个特征点,考虑它的31×31的邻域,我们将在这个邻域内找一些点对。不同于BRIEF中要先对这个Patch内的点做平滑,再用以Patch中心为原点的高斯分布选择点对的方法。ORB为了去除某些噪声点的干扰,选择了一个5×5大小的区域的平均灰度来代替原来一个单点的灰度,这里5×5区域内图像平均灰度的计算可以用积分图的方法。我们知道31×31的Patch里共有N=(31?5+1)×(31?5+1)个这种子窗口,那么我们要N个子窗口中选择2个子窗口的话,共有C2N种方法。所以,对于300k中的每一个特征点,我们都可以从它的31×31大小的邻域中提取出一个很长的二进制串,长度为M=C2N,表示为

那么当300k个关键点全部进行上面的提取之后,我们就得到了一个300k×M的矩阵,矩阵中的每个元素值为0或1。

对该矩阵的每个列向量,也就是每个点对在300k个特征点上的测试结果,计算其均值。把所有的列向量按均值进行重新排序。排好后,组成了一个向量T,T的每一个元素都是一个列向量。

进行贪婪搜索:从T中把排在第一的那个列放到R中,T中就没有这个点对了测试结果了。然后把T中的排下一个的列与R中的所有元素比较,计算它们的相关性,旭果相关超过了某一事先设定好的阈值,就扔了它,否则就把它放到R里面。重复上面的步骤,只到R中有256个列向量为止。如果把T全找完也,也没有找到256个,那么,可以把相关的阈值调高一些,再重试一遍。

这样,我们就得到了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

时间: 2024-11-05 12:26:12

ORB特征的相关文章

ORB特征点检测

Oriented FAST and Rotated BRIEF 这篇文章我们将介绍一种新的具有局部不变性的特征 —— ORB特征,从它的名字中可以看出它是对FAST特征点与BREIF特征描述子的一种结合与改进,这个算法是由Ethan Rublee,Vincent Rabaud,Kurt Konolige以及Gary R.Bradski在2011年一篇名为“ORB:An Efficient Alternative to SIFT or SURF”的文章中提出.就像文章题目所写一样,ORB是除了SI

OpenCV特征点检测------ORB特征

OpenCV特征点检测------ORB特征 ORB是是ORiented Brief的简称.ORB的描述在下面文章中: Ethan Rublee and Vincent Rabaud and Kurt Konolige and Gary Bradski, ORB: an efcient alternative to SIFT or SURF, ICCV 2011 没有加上链接是因为作者确实还没有放出论文,不过OpenCV2.3RC中已经有了实现,WillowGarage有一个talk也提到了这个

ORB 特征点 (Oriented FAST and Rotated BRIEF)

ORB 是一种具有局部不变形的特征点特征,是FAST特征点和BRIEF描述子的结合. FAST特征: 1.从图片中选择像素点P,亮度L 2.设定threshold T 3.consider a circle with R=3 , meaning 16 points in total 4. if there are n consective points on the circle, > I+T or <I-T , it is a corner point. n can be 12 or 9 w

开源词袋模型DBow3原理&amp;源码(二)ORB特征的保存和读取

util里提供了create_voc_step0用于批量生成features并保存,create_voc_step1读入features再生成聚类中心,比较适合大量语料库聚类中心的生成. 提取一张图的特征如下: 第一行是文件头,分别用32bit表示特征来自几张图(1).特征描述子长度(128bit,=32B), 特征长度(89), 特征类型(cv8u) ./utils/create_voc_step0 orb fea0 zs00.jpg Extracting features... readin

sift、surf、orb 特征提取及最优特征点匹配

目录 sift sift特征简介 sift特征提取步骤 surf surf特征简介 surf特征提取步骤 orb orb特征简介 orb特征提取算法 代码实现 特征提取 特征匹配 附录 sift sift特征简介 SIFT(Scale-Invariant Feature Transform)特征,即尺度不变特征变换,是一种计算机视觉的特征提取算法,用来侦测与描述图像中的局部性特征. 实质上,它是在不同的尺度空间上查找关键点(特征点),并计算出关键点的方向.SIFT所查找到的关键点是一些十分突出.

OpenCV特征点检测匹配图像-----添加包围盒

最终效果: 其实这个小功能非常有用,甚至加上只有给人感觉好像人脸检测,目标检测直接成了demo了,主要代码如下: // localize the object std::vector<Point2f> obj; std::vector<Point2f> scene; for (size_t i = 0; i < good_matches.size(); ++i) { // get the keypoints from the good matches obj.push_bac

BRIEF特征点描述算法

简介 BRIEF是2010年的一篇名为<BRIEF:Binary Robust Independent Elementary Features>的文章中提出,BRIEF是对已检测到的特征点进行描述,它是一种二进制编码的描述子,摈弃了利用区域灰度直方图描述特征点的传统方法,大大的加快了特征描述符建立的速度,同时也极大的降低了特征匹配的时间,是一种非常快速,很有潜力的算法. BRIEF具体算法 由于BRIEF仅仅是特征描述子,所以事先要得到特征点的位置,可以利用FAST特征点检测算法或Harris

ORB算法

简介 ORB的全称是ORiented Brief,是文章ORB: an efficient alternative to SIFT or SURF中提出的一种新的角点检测与特征描述算法.实际上,ORB算法是将FAST角点检测与BRIEF特征描述结合并进行了改进. ORB算法 在上一篇文章<BRIEF特征点描述算法>中,指出了BRIEF的优缺点,ORB算法就是针对BRIEF算法的缺点1.2提出来的.ORB算法分为两个部分:FAST特征点检测.BRIEF特征描述. FAST特征检测 在文章<

特征匹配篇

1. ORB特征匹配 BruteForce-Hamming匹配 //使用ORB特征匹配两张图片,并进行运行时间,对称性测试,ratio测试 #include <iostream> #include <ctime> //#include <dirent.h> #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/non