【图像处理】SURF特征点检测

参考

surf特征点检测
Surf算法特征点检测与匹配

SURF(Speeded-Up Robust Features)是对SIFT的改进,提升了算法的执行效率,为算法在实时计算机视觉系统中应用提供了可能。


特征点检测

SURF的兴趣点检测是基于Hessian矩阵的,它依靠Hessian矩阵行列式的局部最大值定位兴趣点位置。当Hessian矩阵行列式局部最大时,所检测出的实际上是斑状结构(blob-like structures)。所谓斑状结构是指:比周围区域更亮或更暗的一个小区域。

图像 f ( x , y ) 的Hessian矩阵表示如下:

H ( f ( x , y ) ) = [ 2 f x 2 2 f x y 2 f x y 2 f y 2 ]

图像 f ( x , y ) 经过高斯滤波后的的Hessian矩阵表示如下:
H ( x , σ ) = [ L x x ( x , σ ) L x y ( x , σ ) L x y ( x , σ ) L y y ( x , σ ) ]

在构建多尺度空间时,SURF算法使用 盒式滤波(box filter)近似代替SIFT算法中的二阶高斯函数,然后与原始图像做卷积,并在这一过程中应用了 积分图像(的技巧,这是两者最根本的区别。

这里写图片描述

对于x、y方向上的滤波,黑色区域赋权重为-2,白色区域赋权重为l,其余区域不赋权重;对于xy方向的滤波,黑色区域赋权重为-1,白色区域赋权重为1。这样一来,Hessian矩阵的二阶导数行列式就可以近似为:

d e t ( H ) = D x x D y y ( w D x y ) 2

其中, D x x 是对像素的二阶求导:
(105) D x x = [ f ( x + 1 , y ) f ( x , y ) ] [ f ( x , y ) f ( x 1 , y ) ] (106) = f ( x + 1 , y ) + f ( x 1 , y ) 2 f ( x , y )

w 取0.9较为合理。利用盒式滤波结合积分图像求取尺度空间函数的方法非常巧妙,这也正是该算法比SIFT检测算法更快速的主要原因。


特征点描述

同Sift一样,Surf的尺度空间也是由O组L成组成,不同的是,Sift中下一组图像的尺寸是上一组的一半,同一组间图像尺寸一样,但是所使用的高斯模糊系数逐渐增大;而在Surf中,不同组间图像的尺寸都是一致的,不同的是不同组间使用的盒式滤波器的模板尺寸逐渐增大,同一组间不同层间使用相同尺寸的滤波器,但是滤波器的模糊系数逐渐增大,如下图所示:

这里写图片描述

为使兴趣点描述算子具有旋转不变的性能,首先要赋予每一个兴趣点方向特征。我们在以某个兴趣点为圆心,以6s(s为该兴趣点对应的尺度)为半径的圆形邻域里,用尺寸为4s的Haar小波模板对图像进行处理,求x、y两个方向的Haar小波响应。Haar小波的模板如下图所示,其中左侧模板计算x方向的响应,右侧模板计算y方向的响应,黑色表示一1,白色表示+1。

这里写图片描述

用Haar小波滤波器对圆形邻域进行处理后,就得到了该邻域内每个点所对应的x、y方向的响应,然后用以兴趣点为中心的高斯函数( σ = 2 s )对这些响应进行加权。用一个圆心角为 π / 3 扇形以兴趣点为中心旋转一周,计算该扇形处于每个角度时,它所包括的图像点的Haar小波响应之和。由于每一点都有x、y两个方向的响应,因此扇形区域中所有点的响应之和构成一个矢量。把扇形区域环绕一周所形成的矢量都记录下来,取长度最大的矢量,其方向即为该兴趣点所对应的方向。

这里写图片描述

为了构建描述子向量,首先要确定一个以兴趣点为中心的正方形邻域。该邻域的边长为20s(s为该兴趣点对应的尺度),把上面所确定的兴趣点方向作为该邻域的y轴方向。我们直接使用Haar小波滤波器直接对原始图像进行处理,然后对所得响应进行插值处理,从而得到相对于兴趣点方向的dx、dy。把该正方形区域分成4x4个子块区域,在每一个子块区域中用Haar小波滤波器进行处理(该处的Haar小波模板尺寸为2sx2s)。我们用dx表示水平方向的Haar小波响应,用dy表示竖直方向的Haar小波响应。这里的水平和竖直是相对于兴趣点方向来说的。在构建描述子向量之前,对于所有的dx、dy都要用一个以兴趣点为中心的高斯函数加权,该高斯函数的σ=3.3s。

这里写图片描述

在每个子块区域中对dx、dy、|dx|、|dy|求和,从而得到一个4维向量。把4*4个子块区域的向量连接起来就得到了一个64维的向量,此向量就是描述该兴趣点的描述子(deseripror)特征向量。如果我们对dx、Idxl求和时分成dy<0,dy>=0两种情况,相应的在对dy、|dy|求和时分成dx<0,dx>=两种情况,我们就会得到128维的描述子向量。

特征点匹配

与Sift特征点匹配类似,Surf也是通过计算两个特征点间的欧式距离来确定匹配度,欧氏距离越短,代表两个特征点的匹配度越好。不同的是Surf还加入了Hessian矩阵迹的判断,如果两个特征点的矩阵迹正负号相同,代表这两个特征具有相同方向上的对比度变化,如果不同,说明这两个特征点的对比度变化方向是相反的,即使欧氏距离为0,页直接予以排除。

猜你喜欢

转载自blog.csdn.net/qq_28193895/article/details/80866260