一.盒式滤波与积分图

盒式滤波器:

 

 

积分图的知识见积分图像 - 小凉拖 - 博客园 (cnblogs.com)

二.Hessian矩阵与DOH

 每个像素的Hessian矩阵如下:

 

 当Hessian矩阵的判别式取得局部极大值时,判定当前点是比周围邻域内其他点更亮或更暗的点,由此来定位关键点的位置,Hessian矩阵的判别式为(也就是它的行列式为Determinant of Hessian, DoH):

                                  

.带有高斯核的Hessian矩阵

 但是由于我们的关键点需要具备尺度无关性(唯有高斯核通过不同的方差(也就是尺度)才能体现出图像由远及近的效果,也就是所谓的尺度无关性),所以在进行Hessian矩阵构造前,需要对其进行高斯滤波。具体步骤为先对高斯核带入Hessian矩阵,然后结果矩阵的每个元素对图像进行卷积得到一个新的矩阵(此步对先对图像进行高斯卷积,再求取高斯卷积后的图像的Hessian矩阵的简便求法,这个过程用到了卷积的微分性质)。

1.卷积的微分性质:

2.复习下卷积的微积分性质:

 3.高斯核带入Hessian矩阵的表达式为

分别将上述矩阵的四个元素的和图像进行卷积,以第一个元素(1,1)为例,根据高斯核进行二阶求导后生成任意尺寸的窗口,然后与图像进行卷积,该结果为,则最终结果为H(x,y,σ)

上述提到的简便算法为:

 

H(x,y,σ)的行列式为:

 

 det(H(x,y,σ))=

 四.带有盒式核的Hessian矩阵

  由于高斯核是服从正态分布的,从中心点往外,系数越来越低,为了提高运算速度,Surf使用了盒式滤波器来近似替代高斯滤波器,提高运算速度。 盒式滤波器(Boxfilter)对图像的滤波转化成计算图像上不同区域间像素和的加减运算问题,只需要简单几次查找积分图就可以完成。

盒式滤波器核高斯滤波器比较

 带有盒式滤波的Hessian矩阵为

Hbox=

 

det(Hbox)=DxxDyy-Dxy^2

但在SURF算法中用于近似带有高斯核的Hessian矩阵的行列式的盒式矩阵的行列式得稍加修改:

权重w为了平衡因使用盒式滤波器近似所带来的误差。

 

 

 

这里的面积归一化处理应该就是第一节里面的盒式滤波的归一化,这里的滤波响应是Hessian矩阵的行列式。

这最终用于SURF的响应为

 

使用近似的Hessian矩阵行列式来表示一个图像中某一点处的斑点响应值(斑点通常是指与周围有着颜色和灰度差别的区域遍历图像中的所有像素,便形成了在某一尺度下斑点检测的响应图像。使用不同的模糊尺度和模板尺寸,便形成了多尺度斑点响应的金字塔图像,利用这一金字塔图像,可以进行斑点响应极值点的搜索定位,其过程与SIFT算法类似。总结起来就是求盒式滤波的Hassian矩阵,然后将Hassian矩阵的各个元素与原图像卷积,之后求Hassian矩阵的行列式作为最终的像素值

五.SURF变换的步骤

1.构建尺度空间

要想检测不同尺度的极值点,必须建立图像的尺度空间金字塔。一般的方法是通过采用不同σ的高斯函数,对图像进行平滑滤波,然后重采样获得更高一层的金字塔图像。SIFT算法中是通过相邻两层高斯金字塔图像相减得到DoG图像,然后在DoG金字塔图像上进行关键点检测。与SIFT特征不同的是,SURF算法不需要通过降采样的方式得到不同尺寸大小的图像建立金字塔,而是借助于盒式滤波和积分图像,不断增大盒式滤波模板(上采样),通过积分图快速计算盒式滤波的响应图像。然后在响应图像上采用非极大值抑制,检测不同尺度的关键点。SURF算法的近似DoH金字塔如下图所示:

 

我们使用9×9的模板对图像进行滤波,其结果作为最初始的尺度空间层(此时,尺度值为s=1.2,近似σ=1.2的高斯微分),至于为什么是1.2为什么是9×9这个论文原文没有说,记住就行了。这样盒式滤波组成的金字塔,每层的尺寸是完全固定的,不随图像的改变而改变。那么盒式滤波的最初尺度空间层的Dxx,Dyy,Dxy也是固定的,其模板如下

 

上图分别给出了Dyy,Dxy,它们近似的1.2尺度的高斯二阶微分如下:

 

 接下来增大盒式滤波器的模板

 

 

 21怎么求出来的呢:(5+2)×3, 27怎么求出来的呢(7+2)×3,以此类推。

 9×9到27×27作为第一组的所有模板

第二组的初始模板为9+6×2^m-1(m=1,2,3……),m是组数减1,那么第二组的模板为(15,27,39,51),第三组为(27,51,75,99)

注意增大模板增大的是Dxx,Dxy,Dyy的模板,三个模板都遵循以上规则。

构建好模板接下来就是将Hassian矩阵的各个元素Dxx,Dxy,Dyy与原图像卷积,之后求Hassian矩阵的行列式作为最终的像素值,至此构建好了SURF的金字塔。

2.关键点的定位

和SIFT算法一样,这里和DoG不同的是不用剔除边缘导致的极值点了,因为Hessian矩阵的行列式就已经考虑到边缘的问题了。

注意这里的σ求法为:

 

3.主方向的确定

个人认为在求完每层的极大值后,这些极大值是亚像素点,哪一层的σ为与亚像素点的σ最接近就选哪一层。接下来在被选为确定主方向的层中的关键点的位置以6*s(s=1.2∗L/9为关键点的尺度)为半径的圆形区域,对图像进行Haar小波响应运算(就是以Haar小波的模板对该区域中的图像进行滤波,该模板的尺度为4s×4s,该模板的中心对准所求像素点)。

其中左侧模板计算X方向的响应,右侧模板计算y方向的响应,黑色表示-1,白色表示+1。用其对圆形领域进行处理后,就得到了该领域内每个点对应的x,y方向的响应,这里分别得到了一个x方向的响应和y方向的响应图像,然后用以关键点为中心的高斯函数(\sigma =2s)对这些这两幅图像的响应进行加权(每一个图像乘以他的权值)。

 

为了求取主方向值,需要设计一个以关键点为中心,张角为60度的扇形滑动窗口,统计这个扇形区域内的haar小波特征总和。以步长为0.2弧度左右,旋转这个滑动窗口,再统计小波特征总和。小波特征总和最大的方向为主方向。特征总和的求法是对图像Harr小波响应值dx、dy进行累加,得到一个矢量(m_{w},\theta _{w})

 

主方向为最大Harr响应累加值所对应的方向,也就是最长矢量所对应的方向,即

 

 (也就是最大mw对应的θw)

 

 

可以依照SIFT求方向时策略,当存在另一个相当于主峰值80%能量的峰值时,则将这个方向认为是该特征点的辅方向。一个特征点可能会被指定具有多个方向(一个主方向,一个以上辅方向),这可以增强匹配的鲁棒性。和SIFT的描述子类似,如果在m_{w}中出现另一个大于主峰能量max[m_{w}]的80%时的次峰,可以将该特征点复制成两个特征点。一个主的方向为最大响应能量所对应的方向,另一个主方向为次大响应能量所对应的方向。

4.特征描述子的求取

以关键点为中心选取一个正方形框住一个图像区域,再将此区域中所有像素点连同这个区域旋转到关键点的主方向(关键点到矩形边框的线段表示关键点的主方向),边长为20S。将其划分为16个区域(边长为5S,也就是被划分为4×4个子块),每个子块利用尺寸2s的Harr模板对该5S×5S子块内所有像素响应值计算,然后对所有像素的响应值进行统计∑dx、∑|dx|、∑dy、∑|dy|(所有像素x方向响应的加和,所有像素x方向响应绝对值的加和,所有像素y方向响应的加和,所有像素y方向响应绝对值的加和,且注意dy沿主方向,dx垂直于主方向)形成特征矢量。

 

 特征描述子共由4×4×4=64维特征矢量组成。

SURF描述子不仅具有尺度和旋转不变性,还具有光照不变性,这由小波响应本身决定,而对比度不变性则是通过将特征向量归一化来实现。

 

 

一般而言,特征矢量的长度越长,特征矢量所承载的信息量就越大,特征描述子的独特性就越好,但匹配时所付出的时间代价就越大。对于SURF描述子,可以将它扩展到用128维矢量来表示。具体方法是在求∑dx、∑|dx|时区分dy<0和dy≥0情况。同时,在求取∑dy、∑|dy|时区分dx<0和dx≥0情况。这样,每个子块就产生了8个梯度统计值,从而使描述子特征矢量的长度增加到8×4×4=128维。

       为了实现快速匹配,SURF在特征矢量中增加了一个新的变量,即特征点的拉普拉斯响应正负号。在特征点检测时,将Hessian矩阵的迹的正负号记录下来,作为特征矢量中的一个变量(Hessian矩阵的迹为拉普拉斯响应)。这样做并不增加运算量,因为特征点检测进已经对Hessian矩阵的迹进行了计算()。在特征匹配时,这个变量可以有效地节省搜索的时间,因为只有两个具有相同正负号的特征点才有可能匹配,对于正负号不同的特征点就不进行相似性计算。

       简单地说,我们可以根据特征点的响应值符号,将特征点分成两组,一组是具有拉普拉斯正响应的特征点,一组是具有拉普拉斯负响应的特征点,匹配时,只有符号相同组中的特征点才能进行相互匹配。显然,这样可以节省特征点匹配的时间。

 

 实际上有文献指出,SURF比SIFT工作更出色。他们认为主要是因为SURF在求取描述子特征矢量时,是对一个子块的梯度信息进行求和,而SIFT则是依靠单个像素梯度的方向。

 

以上只是个人理解,欢迎批评指正。

 参考文章:

 (53条消息) 【OpenCV 例程200篇】56. 低通盒式滤波器_YouCans的博客-CSDN博客_盒式滤波

 [基础知识] Speeded Up Robust Features (SURF特征) - 知乎 (zhihu.com)

 (53条消息) SURF算法_菜鸟知识搬运工的博客-CSDN博客_surf算法全称

posted on 2023-02-28 22:42  小凉拖  阅读(147)  评论(0编辑  收藏  举报