ORB: an efficient alternative to SIFT or SURF
来源:互联网 发布:ubuntu 界面 编辑:程序博客网 时间:2024/04/30 15:07
- 介绍
- FAST关键点
- rBRIEF描述子
转载请注明出处:http://blog.csdn.net/c602273091/article/details/56008370
介绍
目前SIFT特征准确度高,但是计算复杂度也高。很多时候需要用到匹配、追踪什么的,使用SIFT就比较慢。本文作者提出了ORB(Oriented FAST and Rotation BRIEF)特征。ORB有个特点是这个特征没有申请专利,另外这种特征的好处是:
- 给FAST检测子方向和快速计算;
- 高效计算带有方向的BRIEF特征
关键点(keypoint 就是图片中比较重要的位置,比如角点)使用FAST检测子寻找。
描述子(descriptor 就是对关键点进行描述)这里使用的是BRIEF描述子。但是BRIEF没有方向,所以这里就给BRIEF一个方向。
FAST关键点
FAST的基本方法可以写成:
图中是计算半径为3的FAST关键点。
1、计算1和9是否会大于阈值,如果大于阈值则可以进入下一个,否则就不是关键点。
2、计算1,9,5,13是不是大于阈值的个数超过3个,不是的话,就不是关键点。是的话进入下一步。
3、计算一个像素点,取周围距离为3的一个圆,然后这个像素点与周围的【1-16】的差值大于阈值的个数count,如果会大于阈值,则计算的count+1。如果count大于等于9,那么就作为候选项。
4、使用NMS,如果在3x3或5x5的邻域内,如果没有有比当前像素更大的score的点,那么就抑制这个点。
在ORB特征里,使用的是FAST-9,圆的半径是9(在这里也有人说FAST-9是半径为3,这个具体看了代码再说)
计算完这些以后,FAST特征没有对特征的正确度进行排序,所以这里使用了Harris角点进行计算排序。首先去较低的阈值获取超过N个关键点,然后再根据Harris角点的计算进行排序。与此同时,FAST没有产生多尺度的特征,所以使用在计算图片的尺度金字塔,在不同尺度计算FAST关键点。
之后需要计算FAST的方向了,在计算方向的时候,这里提出了一个叫做intensity centroid的东西。
具体计算方法就是:
- 首先是计算moment,就是在某个领域内计算m,计算公式如下图:
- 这里计算的就是强度中心。
- 然后我们从中点O(也就是FAST的关键点)到C点就有了一个向量:
OC→ 计算FAST的方向就可以使用下面的公式计算咯。在ORB特征里面,它使用的领域就是一个圆。
作者在这里提到为了找到方向,他特地使用MAX和BIN的方法计算方向,但是他发现还是center centroid的方法最好。
rBRIEF描述子
rBRIEF(rotation-aware BRIEF)描述子。
首先先来了解一下什么是BRIEF【6】、【7】、【8】、【9】、【10】、【11】。
描述子是对关键点进行一个描述,刚才我们已经通过了FAST特征找到了关键点的位置和方向。
下面是详细的步骤:
- 为减少噪声干扰,先对图像进行高斯滤波(方差为2,高斯窗口为9x9)。
- 以特征点为中心,取SxS的邻域大窗口。在大窗口中随机选取一对(两个)5x5的子窗口,比较子窗口内的像素和(可用积分图像完成),进行二进制赋值。(一般S=31)
- 在大窗口中随机选取N对子窗口,重复步骤2的二进制赋值,形成一个二进制编码,这个编码就是对特征点的描述,即特征描述子。(一般N=256)
在随机选取特征点的时候,有几种随机选取的方法【6】。
在ORB特征中,选取的随机点是高斯分布的。长度n=256。在进行计算描述子的时候,采用的高斯核是5x5的31x31的区域内进行。
为了让BRIEF具有旋转不变性,这里使用了得当初寻找FAST的关键点的方向的作为BRIEF的方向,这样就可以得到:
- 把关键点周围的要用来计算的坐标列成2xn的矩阵。
- 计算通过旋转矩阵之后这些点的坐标。旋转矩阵就是[cos a sin a; sin a -cos a]这个矩阵。
- 这里就是计算旋转之后的坐标中取出点来计算BRIEF描述子。
所以从整个步骤中我们可以看到ORB特征还是比较简单的,复杂度也比较低,速度很快。有方向和尺度的信息,这是之前BRIEF没有的。
具体的这个特征的分析,比如后面PCA说为什么ORB更好呀,就得自己看论文咯,已经写得很清楚了。当然特征还有SIFT、SURF、AKAZE、HIST等等。之前CV课上都有做过东西,没有来得及总结,以后有空再把追踪、场景识别、图像拼接等等这些东西从原理到代码介绍一遍。
看完这些,再回到ORB-SLAM的计算特征的部分,再梳理一遍。
参考链接:
FAST Corner:
【1】 http://blog.csdn.net/hujingshuang/article/details/46898007#reply
【2】 http://blog.csdn.net/went2011/article/details/8020943
【3】 http://blog.csdn.net/candycat1992/article/details/22285979
【4】 http://blog.csdn.net/yang_xian521/article/details/7411438
【5】 http://www.tuicool.com/articles/e6Bv2q
Brief:
【6】 http://www.mamicode.com/info-detail-922469.html
【7】 http://blog.csdn.net/lhanchao/article/details/52612954
【8】 http://blog.csdn.net/eternity1118_/article/details/51182354
【9】 http://blog.csdn.net/eternity1118_/article/details/51351514
【10】 http://blog.csdn.net/lhanchao/article/details/52612954
【11】 http://wenku.baidu.com/link?url=vq8-lKMiQa90mlz4dk6CvN0IegknJmlvJfHeFYpSbjqGs06e-WopvHgq9pgreJkIfon7N4KfIIH16NQt0cuzdpwAkxLwjKxs9YVEwxnVmqC
- ORB: an efficient alternative to SIFT or SURF
- ORB: an effiient alternative to SIFT or SURF
- SIFT/ SURF/ORB综述
- 特征匹配,sift,surf,orb,brisk,brief
- SIFT/SURF/ FAST / BREIF / ORB特征
- Bag-of-Features Descriptor on SIFT ORB SURF (BoF-SIFT)
- An alternative to suspend blockers
- Ropes:an alternative to strings
- An convenient alternative to findViewById
- OpenCv sift surf orb等特征点检测
- OpenCv的sift surf orb等特征点检测
- SIFT,SURF,ORB,FAST 特征提取算法比较
- SIFT,SURF,ORB,FAST,BRISK 特征提取算法比较
- SURF SIFT ORB三种特征检测算法比较
- ORB 一种特征匹配替代方法:对比SIFT或SURF
- SIFT,SURF,ORB,FAST 特征提取算法比较
- 两张图片sift,surf,orb,lbp对比
- SIFT,SURF,ORB,FAST 特征提取算法比较
- LoadRunner实现DES加密(二)
- java环境变量配置
- Win7 64bit VS2010 配置 opencv3.2.0
- Java利用 DES / 3DES / AES 这三种算法分别实现 对称加密
- 体检套餐项目
- ORB: an efficient alternative to SIFT or SURF
- 常用编码总结
- LxFTPRequest 进行下载操作,提示:@"LxFTPRequest: The serverURL is illegal!"
- RecycleView的问题笔记
- 利用腾讯云COS云对象存储定时远程备份网站
- 矩形覆盖
- Java运行时数据区域
- 深入浅出HTTPS基本原理
- CVE-2016-1000031 Apache Commons FileUpload 反序列化漏洞深入分析