特征点检测之ORB

一、orb简介

二、orb检测步骤

1. oFAST

1.1 FAST检测子

1.2 灰度质心定向

2. rBRIEF

2.1 brief描述子

2.2 方差和相关性

2.3 好的二进制特性

总结


一、orb简介

    ORB,an efficient alternative to SIFT or SURF,基于著名的FAST关键点检测子和BRIEF描述子得出来的,因此称之为ORB(Oriented FAST and Rotated BRIEF)。主要贡献如下对图像的缩放,旋转,平移等变换,具有特征不变性:

A:  FAST提取的特征点增加一个特征点方向;
B:  有向性的BRIEF算法的对特征点进行描述;
C:  有向性的BRIEF特征方差和相关性分析;
D:  一种基于学习的去关联性的BRIEF算法,优化了特征点求得的最近邻点。

二、orb检测步骤

    ORB特征点检测步骤主要包括oriented fast算子检测和rotated brief描述子。

1. oFAST

    FAST特征由于其计算特性而被广泛使用,但是没有定向组件,在进行特征检测和描述时需要添加方向。

1.1 FAST检测子

    FAST角点定义Faster and better: a machine learning approach to corner detection,一个像素周围有一定数量的像素与该点像素值不同,则认为其为角点。步骤如下:

A:  在图像中任选一点p, 假定其像素(亮度)值为  Ip
B:  以r为半径画圆,覆盖p点周围的M个像素,如下图所示: r=3, M=16

C:  设定阈值t,如果这周围的16个像素中有连续的N个像素的像素值减去Ip−t或者有连续的N个像素都大于Ip+t,如果t=0,那么就可以理解为:有连续N个像素大于或小于Ip的灰度值。那么这个点就被判断为角点。

    由于在检测特征点时是需要对图像中所有的像素点进行检测,然而图像中的绝大多数点都不是特征点,如果对每个像素点都进行上述的检测过程,那显然会浪费许多时间,因此论文中采用了一种进行非特征点判别的方法。

   如上图中,对于每个点都检测第1、5、9、13号像素点,如果这4个点中至少有3个满足都比Ip+t大或者都比Ip−t小,则继续对该点进行16个邻域像素点都检测的方法,否则则判定该点是非特征点(也不可能是角点,如果是一个角点,那么上述四个像素点中至少有3个应该和点相同),直接剔除即可。 这种做法在大幅减少了判断特征点的运算量,提升了算法的运行速度。如果N>=9(FAST-9)或者N>=12(FAST-12),则p为角点,官方推荐N取9。但是两点不足:

A:  提取到的特征点没有方向;
B:  提取到的特征点不满足尺度变化。

    针对特征点不满足尺度变化,作者像SIFT算法中那样,建立尺度图像金字塔,通过在不同尺度下的图像中提取特征点以达到满足尺度变化的效果。 针对提取到的特征点没有方向的问题,作者采用了Rosin提出的一种称为“intensity centroid”灰度质心的方法确定了特征点的方向。

1.2 灰度质心定向

    FAST特征点不具有方向性,在图像旋转下,性能变差。可以利用灰度质心法(IntensityCentriod)为每个特征点计算了主方向。灰度质心法假设角点和质心之间存在偏移,这个向量能够计算出一个方向。这种方法的主要思想就是,首先把特征点的邻域范围看成一个window,然后求取这个window的质心,最后把该质心与特征点进行连线,求出该直线与横坐标轴的夹角,即为该特征点的方向。

图像的(p+q)阶矩定义为:

图像的0阶矩,1阶矩为:

质心的定义如下:

然后求取向量 OC的方向,同时把 x,y的范围保持在[−r,r]之间,以特征点为坐标原点,则得到的方向角为:

    通过两个梯度测量来比较了质心法,BIN和MAX。在这两种情况下,通过一张平滑的图像来计算X和Y方向的梯度。MAX选择关键点矩的最大梯度;BIN以10度为间隔形成梯度直方图,并且选择最大二进制。对模拟数据集中图像平面进行旋转并加上噪声后的方向的方差,即使在较大的图像噪声下,质心也给出了均匀良好的定向。

2. rBRIEF

    SIFT特征采用了128维的特征描述子,由于描述子用的浮点数,所以它将会占用512 bytes的空间。类似地,对于SURF特征,常见的是64维的描述子,它也将占用256bytes的空间。当必须存储数百万个描述符时,这变得很重要。减少此数量的方法主要有三类。

A: 主成分分析(PCA)或线性判别嵌入(LDE)。 PCA非常易于执行,并且可以在不损失识别性能的情况下减小描述符的大小。
B: 将其浮点坐标量化为以更少的位编码的整数。虽然内存增加,但是可以获得更快的匹配速度。
C: 减少描述符可将其二值化,描述符之间的相似度通过对应的二进制字符串之间的汉明距离来衡量。同时通过位异或操作和位计数非常有效地计算汉明距离。
尽管所有这三种缩短技术都提供令人满意的结果,但从某种意义上说,依靠它们仍然是低效的,因为首先计算一个长描述符,然后将其缩短涉及大量耗时的计算。

2.1 brief描述子

    brief通过比较点对的强度来直接构建简短的描述符,而无需创建长点。brief算法提取得到的特征点描述符是一个二进制的字符串,建设当前的一个特征点的邻域空间patch,设为p,那么对该面片p定义的一个二进制测试:

    其中p(x)表示的是在点x处的图像灰度值,那么这样就可以得到一个n位的二进制串:

    但是该二进制串有如下两点需改进:

A:  采用积分图像解决brief算法的噪声敏感性;
B:  对brief生成的描述子进行旋转,使得描述子具有旋转不变性;

    图像中有噪声的干扰,在实际的求取特征点描述符的过程中,需要对图像进行平滑操作。论文中使用的方法是,在对比操作τ进行的时候,不是对比的一个点,而是对比的在31∗31的patch中的若干个5∗5的子窗口。BRIEF算法形成的描述符对于旋转操作非常敏感,当旋转的角度增大时,利用brief算法的描述符进行匹配的结果极大的降低。

    对于x和y的坐标分布在本文中使用的是以特征点为中心的高斯分布,这种分布情况在Brief的论文原文中被证明是最好的,同样选择的n=256。实验中5种采样方法测试如下:

A: 在图像块内平均采样;
B: 𝑝和𝑞都符合(0, 𝑆2)的高斯分布;
C: 𝑝符合(0,𝑆2)的高斯分布,而𝑞符合(0,a𝑆2)的高斯分布;
D: 在空间量化极坐标下的离散位置随机采样;
E: 把𝑝固定为(0,0),𝑞在周围平均采样;

    让BRIEF算法具有旋转不变性,那么我们需要使特征点的邻域旋转一个角度,在特征点窗口内通过一组旋转和透视线来计算BRIEF描述子,但这样的解决方法计算消耗太大。一种更高效的方法是通过关键点方向来旋转BRIEF描述子。对于任意一个特征点,n位二进制测试可以2 Xn的矩阵来表示:

利用角度θ形成的旋转矩阵为Rθ,那么旋转后匹配点的坐标为:

将角度离散为2π/30(12度)的增量,并构造的BRIEF模式的查找表。只要关键点的主方向正确的一组点将会用于计算其描述:

2.2 方差和相关性

    brief的一个较好的特性是每一位特征具有大的方差和接近0.5的均值。差越大说明数据的差异性越大,也就是说更能很好的区分不同的点。同样steered brief算法的结果中,所有特征点在各个位上的平均的分布则比较平均,这是因为进行旋转角度θ以后,均值就漂移到更加均衡的模式。

    在brief向量中分析相关性和方差的测试,观察10万个关键点的brief和旋转brief的响应。运用PCA处理数据,画出最高的40个特征值。brief和旋转brief的初始特征值很高,表明了二进制测试的相关性——基本上所有的信息都包含在前10至15个数据里面。旋转brief具有显著的低方差,然而特征值比较小,因此不太有差别。显然,brief取决于关键点的随机方向,以获得良好的性能。

2.3 好的二进制特性

为了恢复旋转BRIEF的方差损失,并且减少二进制测试的相关性,提出一种选择好的二进制测试子集的学习方法。

 

 

总结


例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值