Computer Vision: ORB

ORB(Oriented FAST and rotated BRIEF) 是一种快速稳定的的局部特征检测算法,来源于2011年的一篇名为“ORB: An efficient alternative to SIFT or SURF”的论文,从论文题目来看它声称可以作为大名鼎鼎的 SIFTSURF 算法的替代品,的确在计算速度,匹配表现和专利应用方面是优于前两者的,特别是专利方面, SIFTSURF 算法的应用是需要付费的,然而ORB却是完全免费!!这种开源的高质量思路共享使用似乎也日益流行起来,这对一个算法的不断完善,学术知识到商业应用的落地都是大有益处的。

算法

ORB 基本上是FAST关键点检测器BRIEF描述子的融合表示策略。首先用FAST找到关键点, 然后Harris角点检测将其中最好的N个点找出来作为特征点,BRIEF将对这些特征点进行描述。
在人眼对物体的观察中,同一物体在距离我们不同距离,发生旋转或者明暗不同的情况下我们都能分辨出这一物体。而特征点描述子是计算机对物体的观察,若物体上同一个点,在物体发生缩放,旋转或明暗变化的情况下,这个点的描述子是一致的或者足够相似的,那么计算机也能够和人眼一样对物体进行准确的识别。如此就有两点需要注意:

  1. (解决缩放)解决特征点不满足尺度变化: OPENCV函数中利用尺度图像金字塔策略用来实现多尺度特征;
  2. (解决旋转) BRIEF计算出的特征点描述子不包含方向信息,采用了“灰度质心”的方式对FAST特征点先确定其主方向,然后用BRIEF计算特征点描述子;
    以下将分别对FAST, “灰度质心”,BRIEF进行介绍。

FAST(Features From Accelerated Segment Test)

FAST角点的定义:若某像素与其邻域内足够多的像素点有较大的灰度差异,则该像素可能是角点;
Computer Vision: ORB_第1张图片
算法步骤:

  1. 选取图像中一个点 p ,假设该点的像素灰度值为Ip
  2. 设置一个阈值T, 根据实验阈值一般设定是T=Ip *20%;
  3. 以点p为圆心,以3为半径所形成的圆上,将有16个像素落在圆;
  4. 如果点p有资格被认定为兴趣点,它周围的16个点中需要有n个相邻的点的灰度值与Ip之差的绝对值超过阈值 T;
  5. 为了保证算法速度,如上图所示,首先计算编号为1,5,9,13四个点与Ip之差的绝对值,若至少三个点与Ip之差的绝对值超过阈值T,则该点有可能是关键点;
  6. 若至少三个点与Ip之差的绝对值超过阈值T, 则计算所有的16个点的灰度值与Ip之差的绝对值,若他们至少有连续的9个差值超过阈值,则确认为关键点;
  7. 通过Harris角点检测计算角点响应,选取部分响应较大的作为特征点;

BRIEF(Binary Robust Independent Elementary Features)

BRIEF来源于2010年的一篇名为《BRIEF:Binary Robust Independent Elementary Features》的文章,该论文提出用二值序列来作为一种有效的特征点描述子,同时辅以"汉明距离"来计算描述子之间的相似性,相比常用的相似性计算方式L2-norm,在计算效率上有极大的提高。
算法步骤:

  1. 为减少噪声的干扰,采用高斯滤波对图像进行降噪(方差为2,窗口尺寸9*9)
  2. 以特征点为中心的S×S的邻域窗口内,随机的选取一对点,比较两者的像素值,按照如下方式进行二进制赋值:
    在这里插入图片描述
    x,y是随机选取出来的一对点,p(x), p(y)是各自的灰度值。(对于随机点x,y的选取方式,x,y都采用高斯分布[0, 1/25*S^2]的效果比较好)
  3. 在以上邻域窗口内随机选取N对随机点(一般N=256),重复步骤2,形成一个长度为N的二值序列,这个序列就是对特征点的描述,即特征描述子。
  4. BRIEF对特征点进行描述以后,特征配对利用”汉明距离“进行判决:当两个特征点的二值序列对应bit位上相同元素的个数小于128的,一定不配对; 一幅图中的某特征点与另一幅图中所有特征点的二值序列对应bit位上相同元素最多的特征点将配成一对;

灰度质心(Intensity Centroid)

方法的主要思想如下,求取每个特征点一定邻域范围内的质心,将找到的质心和特征点进行连线,求出该直线与水平坐标轴的夹角,该角度就可以用来表示特征点的方向。

  1. 邻域的力矩被定义成:
    在这里插入图片描述
    注意上式中pq不是上角标,是求幂次;

  2. 邻域 x∈[-R,R], y∈[-R,R] 的质心(QX,QY)计算方式如下:
    Computer Vision: ORB_第2张图片

  3. 那么质心与特征点连线以后,该连线与水平坐标轴的夹角可以有以下公式得出:
    在这里插入图片描述
    atan2是反正切,得到的θ 就是FAST特征点的主方向。利用这个主方向θ对特征点邻域内产生的256对随机点进行旋转,后进行判定,生成二值序列。如下:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    S表示随机点位置(2×n的矩阵),Sθ表示旋转后的随机点的位置(2×n的矩阵),得到新的随机点位置后,进行BRIEF描述,就解决了旋转一致性的问题。对此处不理解的可以看下文reference中给出的博客链接第6条,或许有所补充。本文像是Harris角点检测算法如何计算角点响应还未涉及,有时间会补上,ORB部分大概思路如上,最好阅读原论文做整体把控。

reference:

  1. 《ORB: an efficient alternative to SIFT or SURF》http://www.willowgarage.com/sites/default/files/orb_final.pdf
  2. 《BRIEF: Binary Robust Independent Elementary Features⋆》https://www.cs.ubc.ca/~lowe/525/papers/calonder_eccv10.pdf
  3. 《Features from Accelerated Segment Test (FAST)》http://homepages.inf.ed.ac.uk/rbf/CVonline/LOCAL_COPIES/AV1011/AV1FeaturefromAcceleratedSegmentTest.pdf
  4. ORB: https://blog.csdn.net/yang843061497/article/details/38553765
  5. FAST:https://blog.csdn.net/hujingshuang/article/details/46898007
  6. 计算一点绕另一点旋转n度后的坐标:https://blog.csdn.net/can3981132/article/details/52518833

你可能感兴趣的:(计算机视觉)