SURF算法的理解

SURF算法的理解

1.SURF: Speeded Up Robust Features(SURF,加速稳健特征)
在SIFT算法上改进

2.SIFT:Scale-invariant feature transform(SIFT,尺度不变特征变换)

以上两种算法都是用于图像处理领域的一种描述。这种描述具有尺度不变性,可在图像中检测出关键点,也叫局部特征描述子。
在这里插入图片描述
在这里插入图片描述

算法步骤

SURF算法步骤
1.构建Hessian矩阵,计算特征值α
图像中某个像素点的Hessian矩阵:
在这里插入图片描述
其中,在这里插入图片描述是高斯二阶微分在这里插入图片描述在像素点(x,y)处与图像函数I(x,y)的卷积。
Lxx、Lxy、Lyy为高斯滤波后的图像 g(σ)在各个方向的二阶导数。Lxx(x,σ),Lxy(x,σ),Lxy(x,σ)则是对应的高斯微分算子(函数)
二阶导数计算方法为:d2L(x)/dx2=(L(x+1)-L(x))-(L(x)-L(x-1))=-2*L(x)+L(x+1)+L(x-1),其中L(x)=g(h(x)),h(x)为原始图像的灰度值,L(x)是将h(x)高斯滤波处理后的图像。
为了找出图像中的特征点,需要对原图进行变换,该变换图就是原图每个像素的Hessian矩阵行列式的近似值构成的。
公式:
在这里插入图片描述
其中,0.9为原文作者给出的一个经验值。
由于求Hessian时要先高斯平滑,然后求二阶导数,这在离散的像素点是用模板卷积形成的,这2种操作合在一起用一个模板代替就可以了,比如说y方向上的模板如下,以9*9的模板为例:
在这里插入图片描述
在这里插入图片描述
图中灰色像素代表0;上图中,图1是y方向的先高斯滤波然后二阶求导的处理,近似处理为图3,图2是x和y方向上的先高斯滤波然后二阶混合偏导,近似为图4。也就是将高斯滤波模板转化为盒子滤波器盒式滤波器(Boxfilter)对图像的滤波转化成计算图像上不同区域间像素和的加减运算问题,只需要简单几次查找积分图就可以完成。)。有了这个近似的模板以后,计算高斯滤波和二阶导数两个步骤就可以一个步骤完成,同时,为了提高计算效率,还引入了积分图像的概念,提高了速度。
积分图像作用:简化计算原图像某矩形区域的灰度值的和
什么是积分图像:
积分图像是输入的灰度图像经过一种像素间的累加运算得到种新的图像媒介。对于一幅灰度的图像,积分图像中任意一点(x,y)的像素值是指从图像的左上角到这个点的所构成的矩形区域内所有的点的灰度值之和

在这里插入图片描述
计算原灰度图某矩形内的所有像素(灰度值)的累加值,只需要在积分图像中找到对应四个位置的四个点像素的值进行加减运算公式:
S = D-C-B+A
S是原图ABCD区域像素值的和, A,B,C,D是对应积分图像中对应的坐标的像素值(又叫积分像素值)。
此时,下图中图3,图4这些近似模板中一块一块的矩形区域灰度值的和,就可以很快计算了,不需要重复计算各个点的灰度了,进而得出原图的Hessian矩阵,然后计算行列式的近似值就得出了我们需要寻找特征点的变换图像。
在这里插入图片描述
2.构造高斯金字塔
我们都知道了如何构建高斯金字塔(上采样与降采样)
在SIFT算法中:
每一组(octave)的图像大小不同,下一组是上一组图像的降采样(即1/4大小);但是每一组里面的几幅图像中,它们的大小是一样的,采用尺度σ不同。在模糊的过程中,他们的高斯模板大小总是不变的,只是尺度σ改变。
SURF算法中:
SURF算法的尺度空间同样由若干组(Octave)构成,每一组中包含若干层(Level)。图像的大小总是不变的,改变的只是高斯模糊模板的大小,当然,尺度σ也是在改变的没有降采样。
在这里插入图片描述
上图中a,高斯模板保持不变,图像大小改变的情况,适用于SIFT算法;图b是高斯模板改变,图像大小保持不变的情况,适用于SURF算法。因为SURF算法没有了降采样的过程,因此处理速度得到提高。
3.定位特征点
A:非极大值抑制过程
如下图,将经过hessian矩阵处理过的每个像素点与其空间领域的26个点(9+8+9)进行大小比较,如果它是这26个点中的最大值或者最小值,则保留下来,当做初步的特征点。
在这里插入图片描述
在这里插入图片描述
B:设定Hessian行列式的阀值
像亚像素级点的检测那样采取插值办法。采用3维线性插值法得到亚像素级的特征点,同时也去掉那些值小于一定阈值的点,增加极值使检测到的特征点数量减少,最终只有几个特征最强点会被检测出来。

4.确定特征点主方向
为了使特征具备较好的旋转不变性,需分配给每个特征点一个主方向。SURF算法不统计其梯度直方图,而是统计特征点领域内的Harr小波特征,以特征点为中心,计算半径为6s(S为特征点所在的尺度值)的邻域内,统计60度扇形内所有点在x(水平)和y(垂直)方向的Haar小波响应总和(Haar小波边长取4s),并给这些响应值赋高斯权重系数,使得靠近特征点的响应贡献大,而远离特征点的响应贡献小,然后60度范围内的响应相加以形成新的矢量,遍历整个圆形区域,选择最长矢量的方向为该特征点的主方向。这样,通过特征点逐个进行计算,得到每一个特征点的主方向。
在这里插入图片描述
其中左侧模板计算X方向的响应,右侧模板计算y方向的响应,黑色表示-1,白色表示+1。用其对圆形领域进行处理后,就得到了该领域内每个点对应的x,y方向的响应,然后用以兴趣点为中心的高斯函数(σ=2s)对这些响应进行加权。

具体遍历过程:在这个圆形领域内做一个60度的扇形区域,统计这个扇形区域内的haar小波特征总和,然后转动扇形区域,再统计小波特征总和。小波特征总和最大的方向为主方向。
在这里插入图片描述
在这里插入图片描述
5.构造特征描述子
SIFT算法
在SIFT中关键点描述是选取了关键点周围的领域,又将其划分为的区域,每个区域统计8个方向梯度,最后得到维度的描述向量。

SURF算法
在SURF中,我们在关键点周围选取一个正方形框,方向为关键点的主方向,边长为20S。将其划分为16个区域(边长为5S)这个框带方向,每个区域统计25个像素的水平方向和垂直方向的Haar小波特性(均相对于正方形框的主方向确定的)
在这里插入图片描述
该小波特征包括水平方向值之和,水平方向绝对值之和,垂直方向值之和和垂直方向绝对值之和(为了把强度变化的极性信息也包括描述符中,所以对绝对值进行累加)。这样每个区域有4个值,则每个正方形框有4*16=64维,即每个关键点描述是64维,比SIFT描述(128维)少了一半

SURF算法与SIFT算法总结对比

(待)

参考博客:
https://blog.csdn.net/streamchuanxi/article/details/50924549
https://www.cnblogs.com/gfgwxw/p/9415218.html
https://baike.baidu.com/item/SIFT/1396275?fr=aladdin

发布了50 篇原创文章 · 获赞 24 · 访问量 2427

猜你喜欢

转载自blog.csdn.net/qq_44861675/article/details/104024889