Board logo

标题: ORB: an efficient alternative to SIFT or SURF [打印本页]

作者: look_w    时间: 2017-11-4 12:47     标题: ORB: an efficient alternative to SIFT or SURF

本帖最后由 look_w 于 2017-11-4 12:50 编辑

介绍目前SIFT特征准确度高,但是计算复杂度也高。很多时候需要用到匹配、追踪什么的,使用SIFT就比较慢。本文作者提出了ORB(Oriented FAST and Rotation BRIEF)特征。ORB有个特点是这个特征没有申请专利,另外这种特征的好处是:
关键点(keypoint 就是图片中比较重要的位置,比如角点)使用FAST检测子寻找。
描述子(descriptor 就是对关键点进行描述)这里使用的是BRIEF描述子。但是BRIEF没有方向,所以这里就给BRIEF一个方向。
FAST关键点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的东西。
具体计算方法就是:



作者在这里提到为了找到方向,他特地使用MAX和BIN的方法计算方向,但是他发现还是center centroid的方法最好。
rBRIEF描述子rBRIEF(rotation-aware BRIEF)描述子。
首先先来了解一下什么是BRIEF【6】、【7】、【8】、【9】、【10】、【11】。
描述子是对关键点进行一个描述,刚才我们已经通过了FAST特征找到了关键点的位置和方向。
下面是详细的步骤:
在随机选取特征点的时候,有几种随机选取的方法【6】。
在ORB特征中,选取的随机点是高斯分布的。长度n=256。在进行计算描述子的时候,采用的高斯核是5x5的31x31的区域内进行。
为了让BRIEF具有旋转不变性,这里使用了得当初寻找FAST的关键点的方向的作为BRIEF的方向,这样就可以得到:



所以从整个步骤中我们可以看到ORB特征还是比较简单的,复杂度也比较低,速度很快。有方向和尺度的信息,这是之前BRIEF没有的。
具体的这个特征的分析,比如后面PCA说为什么ORB更好呀,就得自己看论文咯,已经写得很清楚了。当然特征还有SIFT、SURF、AKAZE、HIST等等。之前CV课上都有做过东西,没有来得及总结,以后有空再把追踪、场景识别、图像拼接等等这些东西从原理到代码介绍一遍。
看完这些,再回到ORB-SLAM的计算特征的部分,再梳理一遍。




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0