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

一、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操作,后非极大值抑制。
  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值