SURF 论文阅读笔记

                          SURF阅读笔记

转载来源:https://blog.csdn.net/zilanpotou182/article/details/72848311
SURF的优点以及与其他特征提取算法的比较前面总结过了,而且通过实际的使用发现算法的稳定性着实很好,这里分享一下对Speeded Up Robust Features原文的翻译和理解,文章是去年翻译的,那时候刚开始看特征提取所以翻译的比较细,才疏学浅,有的地方可能理解的不对,欢迎大家拍砖。分成两部分,第一部分是特征点的提取,第二部分是特征点的描述,以及整个方法的总结。正文开始:

 

1.引言

    文章提出一种具有尺度和旋转不变性特点的特征点提取和描述方法,称作SURF算法。该算法对比与当前的算法具有相似甚至更好的可重复性、鲁棒性,并且计算的更快。具体实现:先使用积分图来计算卷积;然后使用Hessian响应来衡量某点是否为特征点,并创建描述子来描述该特征;以及对整个流程进行一定的优化。以上流程就得到了关于特征提取、描述和匹配的一整套的步骤。本文最后附上使用通用评价集的实验结果。

    在左右两幅图中寻找对应的点是个重要的环节。匹配点对的寻找可以分为三个步骤:1.找到兴趣点,这些兴趣点是有特色的(便于区分),评价一个寻找兴趣点的算法优劣的重要指标是它的可重复性;2.每个兴趣点的邻域点能使用特征向量(描述子)来表达,这个特征向量要对噪声有鲁棒性;3.特征向量在不同图像中进行匹配,这个匹配一般是基于距离的,比如马氏距离或欧氏距离,且特征向量的维度和计算时间非常相关,维度小的特征向量更好。

    目标是找到一种特征的检测和描述方法,这种方法要求计算速度快,但是还要保持性能性能。为了实现这个目标,就要在性能和速度之间取一个平衡,既降低描述子的维度,又要保证足够的区分度。

2.现有研究

2.1兴趣点检测

    使用最广泛的兴趣点检测算子是Harris角点检测算子(Harris算子对于L型角点检测精度高,稳定性好,但是角点信息有丢失和偏移的情况,且角点提取有聚簇现象),但其不具有尺度不变性。(尺度不变性的意义:当分析未知场景时,计算机无法预知物体的尺度,因此需要同时考虑图像在多尺度下的描述。比如在Harry特征检测人脸时,因为并不知道人脸的尺寸,所以需要生成一个不同大小的图像构成的金字塔,扫描其中的每一副图像来寻找可能的人脸。)后面这段研究现状就不翻译了,再翻译就真是献丑了。

    通过对现有的兴趣点检测算法的比较,可以得到结论:1.Hessian矩阵相比于基于Harris的方法,具有更加稳定和可重复性更强的特点;2.使用一些近似方法,比如DoG等方法,可以提高速度,又不至于造成较大的精度损失,这就说明近似计算的可行性。

2.2特征描述子

    SIFT算子区分性比较好,但是它的描述子维度很高,因此匹配环节非常耗时,如果用在普通计算机实时性场合,难以满足要求。有的研究采取措施降低匹配的耗时,但是会损失精度。

2.3本文的方法

    本文提出的方法基于Hessian矩阵,然后使用非常基础的近似方法,然后使用积分图来降低运算量。本方法的描述子是基于兴趣点的邻域内点的Harr-小波响应(下面会细讲)。最后得到的特征点的描述向量,维度是64,可以大大降低匹配时间。为了使文章的理论更自足,文章还将简单的介绍积分图的概念。

3.基于Hessian响应的特征检测算子

    对于图像中某点X=(x,y),下面的公式H(X,σ)代表在X点的σ尺度下的Hessian矩阵。其中Hessian矩阵的四项分别代表高斯二阶微分IxxIyyIxy与图像I的对应点进行卷积得到的结果。注意σ代表尺度系数,其含义下面还会讲,一个点会有多个σ值下的Hessian矩阵。


    高斯滤波器可以用在不同尺度下的分析中,实践中要求先对高斯二阶微分进行离散化和截断再使用。但是即使是用了高斯滤波器,当图像进行降采样时,仍然会发生混淆的情况。高斯滤波器的另外一个问题是,当进行降采样时,并不会出现新的特征,因此,高斯滤波器的重要性就没那么明显了,而它速度又不快,所以考虑使用另外的滤波器来近似这个高斯滤波器。而Lowe成功的使用DoG来近似LoG,这也给了作者启发,作者使用更进一步的近似方法,即盒滤波器。

    如图1的左边的两幅图,是对高斯二阶微分yy和xy离散化得到的LyyLxy,通过盒滤波器近似后得到右边的结果记为DyyDxy,可以看出,把高斯二阶微分滤波器使用盒滤波器来近似,也就是相当于把高斯滤波器进一步的只分成几块,这样下一步可以使用积分图进行快速计算,而后面的结果也证明,这么做的检测效果并没有太大的损失,但时间大大提升了。

    这就是说Hessian矩阵的求法,本来是需要与高斯二阶微分进行卷积,现在近似成与盒滤波器进行卷积。


    本来是根据Hessian矩阵的判别式来判断某点是否为特征点,现在Hessian已经做了近似,那么Hessian的计算也就要做相应的变换推导,重新推导得到Hessian矩阵的行列式的公式为公式2,此时就需要根据盒滤波器得到的DxxDxyDyy。

    此外,filter响应还要根据滤波器的尺寸进行归一化处理,以保证不同滤波器下Hessian矩阵的F范数相同。

    由于特征点需要具有尺度不变性,所以要进行多尺度下的计算。多尺度计算常见的方式是图像金字塔。一般来说,大多数人的方法是使用同样的滤波器对图像进行高斯平滑,然后对图像降采样,得到金字塔中上一层的图,然后不断进行。但是SURF算法为了使用盒子滤波器和积分图像,采用的方法是不改变图像大小,每次加大滤波器核的大小,这个措施保证了速度进一步提升。

    关于滤波器的尺寸的分多少情况,是先按组(也就是有几组金字塔),每组内又分层,滤波器尺寸大小=(2ctave*interval+1)*3,其中octave是组号,interval是组内的层号,也就是第1组的第1层尺寸为9*9,第1组第2层尺寸为15*15;第2组第1层尺寸为15,第2组第2层尺寸为27,即每组的组内各层的尺寸间隔组加倍。

    改变了每层的滤波器的尺寸以后,对应的尺度系数s也要更改,该系数与高斯二阶微分的系数σ是同一个。怎么改呢,9*9对应s=1.2,则27*27对应s=1.2*3,成比例增加。也就是说,不同的层数下,滤波器的尺寸不同,σ也不同,这样就生成不同的高斯滤波器。

    完成以上的步骤后,就可以求出Hessian矩阵的判别式,也叫Hessian响应。对于某个点,可以得到它在很多个层上面的Hessian响应值,那么哪一个才能代表这个点呢?对于某一组,其内部分成几层,也就是一个图像金字塔,如果某点的Hessian响应在其同层的8邻域点以及上一层和下一层的各9个点,即一共26个三维邻域点内,属于最大或者最小,那么该点就是该区域内的特征点。(这一点论文里面没写,我是参考《OpenCV编程入门》自己理解的,不知道对不对)。

    最后,对于得到的Hessian响应,当达到设定的阈值时,就确定这个点为特征点,这就完成了特征点的检测,接下来的步骤就是特征点的描述。

      上一部分主要是针对特征点的提取,下面的内容是特征点的描述,并在最后总结一下全部的步骤。


4.SURF特征描述子

    SURF算法使用的描述子跟SIFT相比复杂度更低。第一步是对每个兴趣点,基于其圆形区域内的信息,确定一个可重复的方向。第二步在兴趣点上构造一个与选定方向对齐的方框,从这个方框中提取SURF描述符。这两步下面会解释。最后,提出一种直立版本的描述符(U-SURF),它并不具有旋转不变性,但是也因此计算速度更快,它可以使用在相机近似水平的场合。

4.1方向的确定

    为了使描述子对图像不同的旋转角度都有同样的描述,要给每个兴趣点都定义一个可重复的方向(这里可重复的意思大概就是不同旋转角度下都能选出来把)。为此,对每个兴趣点,以6s为半径(s的定义见第3章,为该兴趣点所在的尺度),计算圆形邻域内x和y方向的Harr小波响应,采样的步长也选为s,这样又可以使用积分图快速进行滤波计算了。得到每个点的x和y方向的响应以后,对响应值使用以兴趣点为中心的滤波器进行高斯加权,这就相当于水平Harr小波特征映射到了x,把垂直Harr小波特征映射到了y,到了这一步以后,怎么选择我们要找的方向呢。方法就是,用一个60°的扇形,以兴趣点为中心以一定的角度间隔扫描,统计当前扇形内所有x方向和y方向上的响应的和,这个x和y方向的响应的和是一个矢量,那么最长的这个矢量就是要找的主矢量,主矢量就是说代表这个特征点的方向。

4.2描述子的提取

      为了提取描述子,第一步是在兴趣点附近选个点,以此为中心构造一个方框,方框的方向是上一步确定的主矢量的方向。方框的尺寸是20s。第二步是将这个方框拆分成4*4的区域(16个)。对于每个这样的小区域,统计25个像素的水平和垂直方向的Harr小波响应。为了提高鲁棒性,对于dx和dy,可以进行高斯滤波,滤波器的中心选在兴趣点上,并且现在的水平和垂直Harr小波响应都是相对于主矢量方向而言的。第三步,对每一个子区域,计算它内部的四项数据,分别是水平方向值之和,垂直方向值之和,水平方向绝对值之和,垂直方向绝对值之和,这四个数就组成了向量v,也就是说每个小区域用一个v表示,所以把这些矢量连在一起,每个大方框就有一个长度为64的矢量。把这个向量化为单位向量,就具有尺度不变特征。根据图3的结果可以看到,采用这个64维的方案的时候,可以使这个描述子具有更好的可区分性。此外还提到,他们所进行的其他描述子的尝试,但是不是精度差点,就是速度慢点,综合来看当前的方案最好。

      最后,作者对SURF特征的匹配提了建议,为了实现匹配阶段中的快速索引,可以考虑使用兴趣点的拉普拉斯的符号(如Hessian的迹)来辅助判断。一般来说,找出来的兴趣点都是一个点那种形式,而暗背景上的明亮点和明亮背景上的暗点它们的拉普拉斯符号是不一样的。这个特征并不需要占用提取环节的计算消耗,因为在特征点检测环节就已经计算出来了。在匹配环节,我们只需要看着两个符号就可以判断出白背景上的黑点和黑背景上的白点不匹配,只有通过这个初筛,再去动用匹配度的计算。这样可以节省时间。


最后总结一下SURF的流程:

1.计算图像上每个点的Hessian响应,根据Hessian响应的值来确定某点是否为特征点。为了更高效,引入盒子滤波器,并使用积分图来计算;为了实现尺度不限,进行多组和多尺度下的计算;

2.对于选好的特征点,找到其描述子,包括两个步骤:

2.1确定特征点的方向:在以感兴趣点为中心,以6s为半径的圆形邻域内计算x和y方向的Harr小波响应;使用一个π/3的滑动窗口,计算窗口内的响应总和,这就得到一个局部的方向矢量,然后以响应最大的矢量作为该兴趣点的描述矢量;

2.2提取描述子:为了提取描述子,首先在兴趣点附近选个点,以此为中心构造一个方框,方框的方向是上一步确定的主矢量的方向;然后将这个方框拆分成4*4的区域,对于每个小区域,统计25个像素的水平和垂直方向的Harr小波响应;最后对每一个子区域,计算它内部的四项数据,分别是水平方向值之和,垂直方向值之和,水平方向绝对值之和,垂直方向绝对值之和,这四个数就组成了小区域的描述向量v,16个v组合起来就得到特征点的64维描述子。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值