Surf: Speed up robust feature的回顾和思考

原创 2013年12月03日 16:20:31

一、Surf由来

SIFT算法比较稳定,检测到的特征点也比较多,但是其最大的缺点是计算复杂度较高。为此,不少学者进行了改进,其中比较出名的就是SURF算法,中文意思为快速鲁棒特征。它是瑞士苏黎世联邦理工学院Herbert Bay和比利时鲁汶大学Tinne Tuytelaars, Luc Van Gool提出的.

 

二、 Surf提取过程

1. 构造高斯金字塔尺度空间

2. 利用非极大值抑制初步确定特征点

3. 精确定位极值点

4. 选取特征点的主方向

5. 构造Surf特征点描述算子

 

1. 构造高斯金字塔尺度空间

SURF构造的金字塔图像与SIFT有很大不同,SIFT构建的是DOG图像,而SURF构建的是Hessian矩阵行列式近似值图像。因为这些不同,才加快了其检测的速度。但是,两者本质上都是获取原图像的一个变换图像,因为要在这个变换图像上寻找特征点,然后将其位置反映射到原图像中。SIFT的变换图像是DOG图像,SURF的变换图像就是由原图像每个像素的Hessian矩阵行列式近似值构成的。

首先,理论上如何计算?

第一,图像经高斯滤波后,计算Hessian矩阵:

第二,计算Hessian矩阵行列式的近似值:

其中,0.9是计算的近似值,具体来由参考原论文。

其次,实现时如何操作?

在离散的像素点上,高斯滤波再计算Hessian矩阵可以用模板卷积,两种操作合在一起用一个模板即可代替(左半图)。简化近似处理,可采用积分图进一步加快运算(右半图)。


最后,得到的是一张Hessian行列式近似图,类似于SIFT中的DOG图。但是,DOG图分为很多层,每一层叫做一个octave,每一个octave又有多张尺度不同的图片。在SIFT算法中,同一个octave层中的图片尺寸(即大小)相同、尺度(即模糊程度)不同,且不同的octave层之间的图片尺寸大小也不相同,因为它是由上一层图片降采样得到的在进行高斯模糊时,SIFT的高斯模板大小是始终不变的,只是在不同的octave之间改变图片的大小。在SURF中,图片的大小是一直不变的,不同的octave层得到的待检测图片是改变高斯模糊尺寸大小得到的,当然同一个octave中的图片用到的高斯模板尺度也不同由于SURF采用这种方法节省了降采样过程,其处理速度自然也就提上去了。

 

2. 利用非极大值抑制初步确定特征点

此步骤和SIFT类似,将经过Hessian矩阵处理过的每个像素点与其3维邻域的26个点进行大小比较,如果它是这26个点中的最大值或者最小值,则保留下来,当做初步的特征点。

在此我们是不是该问一问:Hessian矩阵既然可以筛选极值点,为什么还要非极大值抑制?

定理:在某一点上,若Hessian矩阵是正定的,且各分量的一阶偏导数为0,则该点为极小值点;若Hessian矩阵是负定的,且各分量的一阶偏导数为0,则该点为极大值点。

对于某个局部区域,若Hessian矩阵是半正定的,则这个区域是凸的(反之依然成立);若负定,则这个区域是凹的(反之依然成立)。而对于正定和负定来说,不管Hessian矩阵是正定还是负定,其行列式总是大于0。若某个点是极大值/极小值,Hessian矩阵的行列式必然要大于等于0,但是满足大于等于0,这个点却不一定是极大值/极小值(还要判断一阶导数是否等于0)。非极大值抑制就是去除一阶导数不等于0的情况。

 

3. 精确定位极值点

这里也和SIFT算法中的类似,采用3维线性插值法得到亚像素级的特征点,同时也去掉那些值小于一定阈值的点。

 

4. 选取特征点的主方向

该步与SIFT大有不同。SIFT选取特征点主方向是采用在特征点领域内统计其梯度直方图,取直方图bin值最大的以及超过最大bin值80%的那些方向做为特征点的主方向。而在SURF中,不统计其梯度直方图,而是统计特征点领域内的haar小波特征。即在特征点的领域(比如说,半径为6s的圆内,s为该点所在的尺度)内,统计60度扇形内所有点的水平haar小波特征和垂直haar小波特征总和,haar小波的尺寸变长为4s,这样一个扇形得到了一个值。然后,60度扇形以一定间隔进行旋转,最后将最大值那个扇形的方向作为该特征点的主方向。

该过程的示意图如下:

 

5. 构造Surf特征点描述算子

在特征点周围取一个正方形框,框的边长为20s(s是所检测到该特征点所在的尺度)。该框带方向,方向就是第4步检测出来的主方向。然后把该框分为16个子区域,每个子区域统计25个像素的水平方向和垂直方向的haar小波特征,这里的水平和垂直方向都是相对主方向而言的。该haar小波特征为水平方向值之和、水平方向绝对值之和、垂直方向之和、垂直方向绝对值之和(如图)。这样每个小区域就有4个值,所以每个特征点就是16*4=64维的向量,维度比SIFT少了一半,这在特征匹配过程中会大大加快匹配速度。

 

二、 SURF vs SIFT


是否SURF比SIFT好吗?论文“Acomparison of SIFT, PCA-SIFT and SURF”对SIFT/PCA-SIFT/SURF三种方法的性能进行了比较,对同一图像进行尺度、旋转、模糊、亮度变化、仿射变换等操作后,再与原图像进行匹配,统计匹配的效果。(SURF的速度是SIFT的3倍)


最后,作者是如何提出SURF特征的呢?个人认为“逆思维”至关重要!在构建尺度空间时,SIFT构建的是图像的金字塔,滤波器保持不变,而SURF构建的是滤波器的金字塔,图像保持不变;在特征点检测中,SIFT先非极大值抑制,后Hessian操作,而SURF先Hessian操作,后非极大值抑制。
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

SURF: speed up robust feature

SURF: speed up robust feature SURF特点: 1.使用积分图像完成图像卷积(相关)操作; 2,使用Hessian矩阵检测特征值; 3,使用基于分布的描述符(局部信...

Speed-Up Robust Features(SURF)

  • 2013-06-20 21:51
  • 638KB
  • 下载

Opencv 介绍 SURF(Speeded-Up Robust Features)

SUFR 的基础 OpenCV 中的 SURF

SURF Speeded Up Robust Features

  • 2015-10-28 18:06
  • 1.05MB
  • 下载

Speeded-Up Robust Features (SURF)

  • 2010-03-08 17:08
  • 2.77MB
  • 下载

OpenCV学习笔记——2维特征Feature2D,SURF

基于特征点的图像匹配是图像处理中经常会遇到的问题,手动选取特征点太麻烦了。比较经典常用的特征点自动提取的办法有Harris特征、SIFT特征、SURF特征。 先介绍利用SURF特征的特征描述办法...

Speeded-Up Robust Features (SURF)

  • 2011-08-14 23:15
  • 2.77MB
  • 下载

SURF+Speeded+Up+Robust+Features

  • 2011-02-23 11:40
  • 706KB
  • 下载

OpenCV中feature2D学习——SURF和SIFT算子实现特征点检测

在opencv的features2d中实现了SIFT和SURF算法,可以用于图像特征点的自动检测。具体实现是采用SurfFeatureDetector/SiftFeatureDetector类的det...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)