图像特征点检测和匹配-SURF算法

SURF算法是一种快速鲁棒特征检测方法,它改进了SIFT算法的计算复杂度和耗时问题。通过构建Hessian矩阵、高斯金字塔等步骤实现特征点定位及描述,确保了良好的旋转和尺度不变性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载
SURF 算法,全称是 Speeded-Up Robust Features。该算子在保持 SIFT 算子优良性能特点的基础上,同时解决了 SIFT 计算复杂度高、耗时长的缺点,对兴趣点提取及其特征向量描述方面进行了改进,且计算速度得到提高。

1 构建Hessia矩阵

对一个像素点f(x,y),其Hessian矩阵如下:
在这里插入图片描述
在构造Hessian矩阵前需要对图像进行高斯滤波,经过滤波后的Hessian矩阵表述为:
在这里插入图片描述
在surf算法中,变换图为每个像素点高斯滤波后的Hessia矩阵的行列式近似值构成的,近似计算公式为:
在这里插入图片描述
其中,0.9为原文作者给出的一个经验值,目的平衡使用盒状滤波器带来的误差。下面解释盒装滤波器。
由于求Hessian时要先高斯平滑,然后求二阶导数,这在离散的像素点是用模板卷积形成的,这2种操作合在一起用一个模板代替就可以了,比如下图1表示二维高斯函数对y求2阶导数,得到y方向上的模板,以9*9的模板为例,近似处理为图3,图中灰色部分为0,黑色为-2,白色为1;同理图4为近似的二维高斯函数对x和y求偏导的模板,其中图2和图4就是盒装滤波器。
在这里插入图片描述
有了这个近似的模板以后,计算高斯滤波和二阶导数两个步骤就可以一个步骤完成,同时,为了提高计算效率,还引入了积分图像的概念,提高了速度。 积分图像概念可参考转载博文。

2 构造高斯金字塔

在sift算法中,每一组(octave)的图像大小是不一样的,下一组是上一组图像的降采样(1/4大小);在每一组里面的几幅图像中,他们的大小是一样的,不同的是他们采用的尺度σ不同。而且在模糊的过程中,他们的高斯模板大小总是不变的,只是尺度σ改变。对于surf算法,图像的大小总是不变的,改变的只是高斯模糊模板的尺寸,当然,尺度σ也是在改变的。
在这里插入图片描述
上图中a为高斯模板保持不变,图像大小改变的情况,适用于sift算法,图b是高斯模板改变,图像大小保持不变的情况,适用于surf算法。因为surf算法没有了降采样的过程,因此处理速度得到提高。

3 特征点定位

首先初步定为特征点,如下图,将经过hessian矩阵处理过的每个像素点与其3维领域的26个点进行大小比较,如果它是这26个点中的最大值或者最小值,则保留下来,当做初步的特征点。
在这里插入图片描述
然后,跟sift算法类似,采用3维线性插值法得到亚像素级的特征点,同时也去掉那些值小于一定阈值的点。

4 确定特征点主方向

为了保证旋转不变性,在SURF中,不统计其梯度直方图,而是统计特征点领域内的Harr小波特征。即以特征点为中心,计算半径为6s(S为特征点所在的尺度值)的邻域内,统计60度扇形内所有点在x(水平)和y(垂直)方向的Haar小波响应总和(Haar小波边长取4s),并给这些响应值赋高斯权重系数,使得靠近特征点的响应贡献大,而远离特征点的响应贡献小,然后60度范围内的响应相加以形成新的矢量,遍历整个圆形区域,选择最长矢量的方向为该特征点的主方向。这样,通过特征点逐个进行计算,得到每一个特征点的主方向。该过程的示意图如下:
在这里插入图片描述

5 构造特征描述子

在特征点周围取一个正方形框,框的边长为20s(s是所检测到该特征点所在的尺度)。该框带方向,方向当然就是第4步检测出来的主方向了。然后把该框分为16个子区域,每个子区域统计25个像素的水平方向和垂直方向的haar小波特征,这里的水平和垂直方向都是相对主方向而言的。该haar小波特征为水平方向值之和,水平方向绝对值之和,垂直方向之和,垂直方向绝对值之和。该过程的示意图如下所示:
在这里插入图片描述
这样每个小区域就有4个值,所以每个特征点就是16*4=64维的向量,相比sift而言,少了一半,这在特征匹配过程中会大大加快匹配速度。
(特征点匹配利用特征向量的欧氏距离来确定匹配度,欧氏距离越短,匹配度越好。)
综上所述,可知SURF采用Henssian矩阵获取图像局部最值还是十分稳定的,但是在求主方向阶段太过于依赖局部区域像素的梯度方向,有可能使得找到的主方向不准确,后面的特征向量提取以及匹配都严重依赖于主方向,即使不大偏差角度也可以造成后面特征匹配的放大误差,从而匹配不成功;另外图像金字塔的层取得不足够紧密也会使得尺度有误差,后面的特征向量提取同样依赖相应的尺度,在这个问题上我们只能采用折中解决方法:取适量的层然后进行插值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值