SIFT算法与SURF算法在图像识别中的区别

电脑杂谈  发布时间:2020-08-01 00:03:04  来源:网络整理

图像特征识别_指纹 识别 算法_图像识别算法

SIFT由David Lowe于1999年提出,并于2004年完善. 在数字图像的特征描述中,SIFT应该被称为最受欢迎和最热门的产品. 许改进了SIFT,并诞生了一系列SIFT变体. SIFT已申请专利.

SIFT功能基于对象上某些局部出现的兴趣点,与图像的大小和旋转无关. 光线,噪声和微视角变化的容忍度也很高. 基于这些特征,它们非常重要并且相对容易捕获. 在具有大量字符的特征中,很容易识别对象,很少会误识别. 使用SIFT特征描述进行部分物体遮挡的检测率也很高,甚至超过3个SIFT目标特征也足以计算位置和方向. 在当前计算机硬件速度和小特征条件下,识别速度可以接近实时计算. SIFT功能具有大量信息,适合在海量中进行快速准确的匹配.

SURF算法,全名是Speeded-Up Robust Features. 在保持SIFT运算符出色的性能特征的基础上,该运算符解决了SIFT计算复杂度高和耗时的缺点. 改进了兴趣点的提取和特征向量的描述,提高了计算速度.

SURF(加速鲁棒特征)也是类似于SIFT的兴趣点检测和描述符算法. 它使用Hessian矩阵的行列式确定关注点的位置,然后根据邻域中关注点的Haar小波响应来确定描述符. 描述符的大小仅为64维(也可以扩展为128维以获得更好的结果). 一个非常好的兴趣点检测算法. 本文主要从SURF的原始文本开始,结合我自己的一些理解,比较了sift方法,并总结了其算法原理.

一个,快速的黑森州检测

首先,像SIFT方法一样,SURF还必须考虑如何确定兴趣点的位置,但是SIFT使用DOG代替LOG运算符,并在比例尺和图像中找到其局部极值作为特征点,而SURF方法基于Hessian矩阵,并且通过对图像进行积分大大减少了计算时间,称为FAST-Hessian. (这里提到SIFT通过DOG近似LOG,这实际上等效于计算拉普拉斯算子,可以将其视为Hessian矩阵的轨迹,而SURF近似于Hessian矩阵的行列式)

首先,我们考虑一个Hessian矩阵:

图像识别中SIFT算法与SURF算法的区别

Lxx在这里是指在高斯两步模板卷积之后获得的图像,以及像素在x方向上的两步程度. SURF方法考虑使用box函数逼近高斯两步模板,如下图所示:

图像特征识别_图像识别算法_指纹 识别 算法

图像识别中SIFT算法与SURF算法的区别

这样,我们可以轻松地通过积分图像计算高斯第二梯度,并获得其近似值:

图像识别中SIFT算法与SURF算法的区别

因为这是一个近似值,所以我们还需要平衡两者之间的相关比. 这里我们假设比例为1.2的高斯模板可以用9 * 9框函数模板代替,然后按如下比例计算归一化比例模板,

是指Frobenius规范:

图像识别中SIFT算法与SURF算法的区别

最后,Hessian矩阵的行列式,我们可以将其近似为:

图像识别中SIFT算法与SURF算法的区别

图像特征识别_指纹 识别 算法_图像识别算法

因此,这里的归一化比率为0.9,因此在任何比例下,我们都可以使用该比率来补偿近似值所引起的误差,因此在任何比例下,我们都可以计算出近似的Hessian行列式值.

2. SURF尺度空间

比例空间通常是通过高斯金字塔实现的. 需要对图像进行重复的高斯平滑处理,然后逐层连续进行子采样,直到塔顶为止,例如采用筛分法. 虽然SUFR使用框函数和积分图像,但我们不需要像SIFT方法那样在每个组之间进行采样,也不需要将与上组相同的过滤器应用于当前组,而SURF方法不需要执行采样操作. 应用不同大小的过滤器.

为什么可以这样做?因为它们全都可以获取不同比例的图像,并且通过采样操作进行的筛选操作比图像卷积操作要少,并且对于SURF而言,没有这样的问题,因为对框函数和积分图像的操作计算量也很小. 另一方面,由于不需要采样,因此不会出现锯齿.

下图说明了这种情况. 左图是筛选算法,它在模板保持不变的情况下减小图像大小(此处仅指每个组与组内各层之间的差异). SURF算法(如右图所示)正好相反. 图像大小不变,而模板大小被放大.

图像识别中SIFT算法与SURF算法的区别

SURF还将金字塔分成几组(八度),每组有几层. 它使用9 * 9大小的过滤器结果作为初始比例组,这意味着高斯比例为1.2. 然后,每个下一组将通过逐渐增加的模板过滤图像. 通常,过滤器的尺寸会随着比例的增加从9 * 9、15 * 15、21 * 21、27 * 27等变化,过滤器尺寸之间的差异也会增加. 因此,对于每个组,过滤器大小增加的数量(15-9)增加了一倍(例如,从6到12,然后是24). 同时,用于提取兴趣点的采样间隔也加倍(以便获得较小的比例变化范围). 以下是模板的更改图:

图像识别中SIFT算法与SURF算法的区别

下图反映了组和图层之间的比例更改以及滤镜模板长度更改过程. 我们发现层之间的采样间隔扩大了2倍,因此随着层规模的增加,尺度变化的粒度减小,但是我们发现第一组中每层的尺度变化粒度太大,因此这里我们需要在比例空间中引入更好的插值运算.

图像特征识别_图像识别算法_指纹 识别 算法

图像识别中SIFT算法与SURF算法的区别

建立尺度空间后,像进行筛选操作一样,我们在尺度和图像空间的3 * 3 * 3范围内找到非最大抑制图像识别算法,并找到局部极点(Hessian行列式),并且最后再应用比例尺和图像空间的插值运算来获得兴趣点的精确位置(原文使用Brown方法,也可以参考sift方法,在此不再赘述)

3. 获取兴趣点的主要方向

为了获得旋转不变性,我们需要确定感兴趣区域的主方向. SIFT方法使用在感兴趣点附近大小为3 *1.5Ϭ的圆形区域中的方向直方图的计算,并选择最大方向作为主方向. SURF方法计算在x和y方向上的Haar小波响应,该方向位于围绕感兴趣点的半径为6s的圆形区域中. 当然,小波变换的大小也与尺度参数s有关,步长为s,大小为4s.

一旦计算出该区域中的所有小波响应,就对所有小波响应(以兴趣点为中心,标度为2.5s)执行高斯加权,然后建立小波响应dx和dy的坐标系(dx是x方向上的小波,dy是y方向上的小波的响应),该坐标系中表示区域中的每个点,如下图所示,选择60度扇区(灰色区域) (如下图所示),并对其进行计数. 该扇区的所有响应之和即为总方向(下图中的红色箭头). 旋转整个扇区,以找到最长的向量方向作为主要方向.

图像识别中SIFT算法与SURF算法的区别

四个SURF描述符

与sift算法类似,SURF还将感兴趣点周围区域中的信息用作描述符,但sift使用邻点的方向,而SURF使用Haar小波响应.

SURF首先在兴趣点附近建立一个20平方英寸的区域. 为了获得旋转不变性,就像sift算法一样,我们需要先将其旋转到主方向,然后将正方形区域划分为16(4 * 4)个子域. 对于每个子域(大小为5s * 5s),我们计算Haar小波响应dx和dy为25(5 * 5)个空间归一化采样点.

图像特征识别_指纹 识别 算法_图像识别算法

之后,我们将每个子区域的dx和dy相加(总共4 * 4),因此每个区域都有一个描述符(如下所示). 为了提高鲁棒性,我们可以在描述符权重(标度为3.3s,以兴趣点为中心)上添加高斯

图像识别中SIFT算法与SURF算法的区别

最后,将所有16个子区域中的四位描述符组合在一起,并获得感兴趣点的64位描述符

图像识别中SIFT算法与SURF算法的区别

因为小波响应对于光流的偏差是不变的,所以描述符具有光流不变性,并且可以通过将描述符归一化为单位矢量来获得对比度不变性.

此外,还建立了一个128位SURF描述符,该描述符细分了原始小波结果. 例如,dx的总和将根据dy的符号分为两类,因此此时每个子区域中有8个分量图像识别算法,SURF-128效果很好,如下图所示.

图像识别中SIFT算法与SURF算法的区别

五,快速的索引匹配

我们发现兴趣点的拉普拉斯算子(Hessian矩阵的迹线)可以区分具有相同对比度形状的不同区域,例如深色背景上的白色斑点和相反的区域.

图像识别中SIFT算法与SURF算法的区别

考虑到检测时,我们很容易遇到两个类似的结构(因为感兴趣的特征点通常是这样的斑点形状). 最初,我们必须为这两个结构创建描述符. 现在我们只需要一个创建一个描述符并给另一个索引. 在匹配过程中,只要比较一个描述符,就可以确定两个位置是否属于两个结构之一. 如果是,则使用该跟踪确定这是这两个结构之一.

因为引入功能不需要额外的计算(它是在测试过程中计算出的). 因此,在匹配过程中,可以快速获得结果.


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-289531-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      • 苏迷
        苏迷

        美国主子这不是变相承认中国人造岛礁是领土吗

      热点图片
      拼命载入中...