ORB特征提取和匹配

1 什么是ORB特征

特征是图像信息的一种表达方式,我们可以把角点、边缘和区块都可以看作图像中有代表性的地方,我们发现,图像中的角点、边缘相比于区块更加“特别”,一种直观的提取特征的方式就是在不同的图像间辨认角点,确定它们的对应关系。在这种做法中,角点就是所谓的特征。角点的提取算法有很多,例如Harris角点、FAST角点、GFTT角点等等,然而ORB(Oriented Fast and Rotated BRIEF)是Oriented Fast + Rotated BRIEF的缩写,是目前最快速稳定的特征点检测和提取算法。

同一幅图像同时提取约1000个特征点的情况下:

检测器ORBSURFSIFT
一帧耗时(ms)15.3217.35228.7

2 FAST关键点

算法步骤:
1、选取像素点p,假设他的亮度为lp;
2、设置一个阈值T(比如lp的20%);
3、以像素p为中心,选取半径为3的圆上的16个像素点;
4、假如选取的圆上,有连续的N个点的亮度大于lp+T或者小于lp+T,那么像素p可以被认为是特征点;(N通常取12即FAST-12,其他常用的N取值为9或者11,他们分别被称为FAST-9和FAST-11)
5、循环以上4步,对每个像素执行相同操作。

在这里插入图片描述

在FAST-12算法中,为了更高效,增加了一项预测试的操作,以快速地排除绝大多是不是角点的像素点:
对于每个像素,直接检测领域圆上第1,5,9,13上的亮度,只有当这4个中的3个的亮度同时大于lp+T或者小于lp+T,才有可能是角点,否则直接排除。

原始的FAST角点经常出现”扎堆“的现象,为了解决这个问题,可以采用非极大值抑制的算法:

  • 假设 p , q p,q pq两点相邻,分别计算出两个点与其周围16个像素点之间的差分和为 V V V

  • 去除 V V V值较小的点,即把非最大的角点抑制掉。

缺点及解决办法:

  • 尺度不变性:可以通过金字塔解决;
  • 旋转不变性:可以用质心标定方向解决。

3 尺度不变性

算法步骤:
1、对图像做不同尺度的高斯模糊;
2、对图像做降采样;
3、对每层金字塔做FAST特征点检测;
4、 N N N副不同比例的图像提取出的特征点总和作为这幅图像的FAST特征点。

4 旋转不变性

旋转不变性是通过灰度质心法计算出特征方向,在描述子中利用这一角度,消除由于旋转带来的影响。

4.1 灰度质心法

1、在一个小的图像块 B B B中,定义图像块的矩为:
m p q = ∑ x , y ∈ B x p y q I ( x , y )         p , q   =   { 0 , 1 } m_{pq} = \sum_{x,y\in B} x^{p}y^{q}I(x,y)\ \ \ \ \ \ \ p,q\ =\ \{0,1 \} mpq=x,yBxpyqI(x,y)       p,q = {0,1}

2、通过矩可以找到图像块的质心:
C   =   ( m 10 m 00 , m 01 m 00 ) C\ =\ (\frac{m_{10}}{m_{00}},\frac{m_{01}}{m_{00}} ) C = (m00m10,m00m01)
3、连接图像块的几何中心 O O O与质心 C C C,得到一个向量 O C → \overrightarrow{OC} OC ,于是特征点的方向可以定义为:
θ   =   a r c t a n ( m 01 / m 10 ) \theta\ = \ arctan(m_{01}/m_{10}) θ = arctan(m01/m10)
在公式中, I ( x , y ) I(x,y) I(x,y)表示像素坐标 ( x , y ) (x,y) (x,y)处的灰度值; m 10 m 00 = ∑ x , y ∈ B x I ( x , y ) ∑ x , y ∈ B I ( x , y ) \frac{m_{10}}{m_{00}}=\frac{\sum_{x,y\in B} xI(x,y)}{\sum_{x,y\in B} I(x,y)} m00m10=x,yBI(x,y)x,yBxI(x,y) x x x加权的总量与总和相比显示处 x x x在图像的那一列的时候像素值比较大,代表了图像像素在 x x x方向上的偏重,即是质心的 x x x坐标;同样的, m 01 m 00 = ∑ x , y ∈ B y I ( x , y ) ∑ x , y ∈ B I ( x , y ) \frac{m_{01}}{m_{00}}=\frac{\sum_{x,y\in B} yI(x,y)}{\sum_{x,y\in B} I(x,y)} m00m01=x,yBI(x,y)x,yByI(x,y)代表了图像像素在 y y y方向上的偏重,即是质心的 y y y坐标。

4.2 rBRIEF描述子

rBRIEF特征描述是在BREIF的基础上加入旋转因子改进的,下面首先介绍BREIF描述子的算法原理。

4.2.1 BREIF描述子

BRIEF算法计算出来的是一个二进制串的特诊描述符,它是在一个特征点的领域Path内,通过一种选定的方式来挑选N个点对,然后通过对每个点对 ( p , q ) (p,q) (p,q)比较这两点的亮度值,如果 I ( p ) > I ( q ) I(p)>I(q) I(p)>I(q)则这个点对生成的二进制串中一个值为1,如果 I ( p ) ≤ I ( q ) I(p)≤I(q) I(p)I(q)则对应二进制串中的值为0。一般的,N取128、256或512,OpenCV默认为256,并且为了增加描述子的抗噪性,算法首先需要对图像进行高斯平滑处理。

关于点对的选择,假设我们在特征点的领域块 S × S S×S S×S内选择N个点对 ( p , q ) (p,q) (p,q),Calonder的实验中测试了5种采样方法:

  • 在图像块内平均采样;
  • p p p q q q都符合 ( 0 , 1 25 S 2 ) (0,\frac{1}{25}S^{2}) (0,251S2)的高斯分布;
  • p p p符合 ( 0 , 1 25 S 2 ) (0,\frac{1}{25}S^{2}) (0,251S2)的高斯分布,而 q q q符合 ( 0 , 1 100 S 2 ) (0,\frac{1}{100}S^{2}) (0,1001S2)的高斯分布;
  • 在空间量化极坐标下的离散位置随机采样;
  • p p p固定为 ( 0 , 0 ) (0,0) (0,0) q q q在周围平均采样;

下面是以上5种采样方法的结果示意图:

在这里插入图片描述在这里插入图片描述

论文指出,第二种方法可以取得较好的匹配结果。

经过上述步骤,我们可以得到每个特征点表示的一串二进制编码。

4.2.2Hamming距离

汉明距离是使用数据阐述差错制控制编码里面的,汉明距离是一个概念,它表示两个(相同长度)字对应位不同的数量,我们以 d ( x , y ) d(x,y) d(x,y)表示两个字 x , y x,y x,y之间的汉明距离。对两个字符串进行异或运算,并统计结果为1的个数,那么这个数就是汉明距离。

  • 两个特征编码对应bit位上相同元素的个数小于128的,一定不是配对的;
  • 一幅图上特征点与另一幅图上特征编码对应bit位上相同元素的个数最多的特征点配成一对。
    其实就是按位求异或的过程。(相同为0,不同为1)
ABP
000
011
101
110

所以,对于BRIEF来说,描述子里不包含旋转属性,一旦当匹配的图像有稍微大的旋转角度,按照Hamming算法,匹配度将大幅下降。

4.2.3 rBRIEF描述子

首先,进行前期的优化:

1、采用积分图像来进行平滑;
2、在特征点的31×31的领域内,随机产生点对,并以随机点为中心,取5×5的子窗口;
3、比较两个随机点的子窗口内25个像素的大小进行编码。(而不仅仅是两个随机点了)

其次,增加了旋转不变性:

  • 对于任意特征点,在31×31领域内位置为 ( x i , y i ) (x_i,y_i) (xi,yi) n n n对点集,可以用 2 × n 2×n 2×n的矩阵来表示:

S = ( x 1 , . . . , x n y 1 , . . . , y n ) S=\left( \begin{matrix} x_1, & ... & ,x_n \\ y_1, & ... & ,y_n \end{matrix} \right) S=(x1,y1,......,xn,yn)

  • 利用FAST求出的特征点主方向 θ \theta θ和对应的旋转矩阵 R θ R_\theta Rθ,计算出来的 S θ S_\theta Sθ来代表 S S S

θ   =   a r c t a n ( m 01 / m 10 ) \theta\ = \ arctan(m_{01}/m_{10}) θ = arctan(m01/m10)
S = [ c o s θ − s i n θ s i n θ c o s θ ] S=\left[ \begin{matrix} cos\theta & -sin\theta \\ sin\theta & cos\theta \end{matrix} \right] S=[cosθsinθsinθcosθ]
S θ = R θ S S_\theta = R_\theta S Sθ=RθS

  • 计算旋转描述子(steered BRIEF)

g n ( p , θ ) : = f n ( p ) ∣ ( x i , y i ) ∈ S θ g_n(p,\theta):=f_n(p)|(x_i,y_i)\in S_\theta gn(p,θ):=fn(p)(xi,yi)Sθ

其中, f n ( p ) : = ∑ i ≤ i ≤ n 2 i − 1 ( p ; x i , y i ) f_n(p):=\sum_{i≤i≤n}2^{i-1}(p;x_i,y_i) fn(p):=iin2i1(p;xi,yi)为BRIEF的描述子。

steered BRIEF得到的描述子具有旋转不变性,但是描述子的相关性却不如原始的BRIEF算法,rBRIEF没有采用原始5种去点对的方法,而是通过机器学习的方法重新选择了点对集合。
至此,ORB的优化就结束了。

5 小结

  • FAST是用来寻找特征点的,ORB在FAST的基础上通过金字塔、灰度质心标定解决了尺度不变和旋转不变,即oFAST;
  • BRIEF是用来构造描述子的,ORB在BRIEF的基础上通过引入oFAST的选择角度和机器学习解决了选择特性和特征点难以区分的问题。
  • 最终,通过计算Hamming距离计算描述子的距离,即两特征之间的相似程度。

参考文献
[1] 《视觉SLAM十四讲从理论到实践》 高翔,张涛

  • 0
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值