SURF特征原理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SURF特征提取分析
背景引言
计算机视觉中,引入尺度不变的特征,主要的思想是每个检测到的特征点都伴随着对应的尺寸因子。当我们想匹配不同图像时,经常会遇到图像尺度不同的问题,不同图像中特征点的距离变得不同,物体变成不同的尺寸,如果我们通过修正特征点的大小,就会造成强度不匹配。为了解决这个问题,提出一个尺度不变的SURF特征检测,在计算特征点的时候把尺度因素加入之中。SURF与SIFT算法相似,SIFT算法比较稳定,检测特征点更多,但是复杂度较高,而SURF要运算简单,效率高,运算时间短一点。相关SIFT算法请详见博文【图像分析】尺度不变特征变换(SIFT)特征提取分析。本节介绍SURF算法相关知识。基本介绍
首先,我们引用[3]中对SURF描述为:“SURF (Speeded Up Robust Features)is a robust local feature detector, first presented by Herbert Bayet al. in 2006, that can be used in computer vision tasks likeobject recognition or 3D reconstruction. It is partly inspired by the SIFT descriptor.The standard version of SURF is several times faster than SIFT and claimed by its authors to be more robust against different image transformations than SIFT. SURF is based on sums of2D Haar wavelet responses and makes an efficient use ofintegral images.It uses an integer approximation to the determinant of Hessian blob detector, which can be computed extremely quickly with an integral image (3 integer operations). For features, it uses the sum of the Haar wavelet response around the point of interest. Again, these can be computed with the aid of the integral image".
从上述对SURF描述,可知:第一、SURF算法是对SIFT算法加强版,同时加速的具有鲁棒性的特征。第二、标准的SURF算子比SIFT算子快好几倍,并且在多幅图片下具有更好的鲁棒性。SURF最大的特征在于采用了harr特征以及积分图像integral image的概念,这大大加快了程序的运行时间。
算法描述
为了实现尺度不变性的特征点检测与匹配,SURF算法则先利用Hessian矩阵确定候选点,然后进行非极大抑制,计算复杂度降低多了。整个算法由以下几个部分组成。
1.Hessian黑森矩阵构建
我们知道:SIFT算法建立一幅图像的金字塔,在每一层进行高斯滤波并求取图像差(DOG)进行特征点的提取,而SURF则用的是Hessian Matrix进行特征点的提取,所以黑森矩阵是SURF算法的核心。假设函数f(x,y),Hessian矩阵H是由函数偏导数组成。首先来看看图像中某个像素点的Hessian Matrix的定义为:
从而每一个像素点都可以求出一个Hessian Matrix. Hessian矩阵判别式为:
判别式的值是H矩阵的特征值,可以利用判定结果的符号将所有点分类,根据判别式取值正负,从来判别该点是或不是极点的值。在SURF算法中,通常用图像像素I(x,y)取代函数值f(x,y)。然后选用二阶标准高斯函数作为滤波器。通过特定核间的卷积计算二阶偏导数,这样便能计算出H矩阵的三个矩阵元素Lxx, Lxy, Lyy,从而计算出H矩阵公式如下:
但是由于我们的特征点需要尺度无关性,所以在进行Hessian矩阵构造前,需要对其进行高斯滤波。这样,经过滤波后在进行Hessian的计算,其公式如下:
L(x,t)是一幅图像在不同解析度下的表示,可以利用高斯核G(t)与图像函数I(x)在点x的卷积来实现,其中高斯核G(t)为:
其中g(t)为高斯函数,t 为高斯方差。通过这种方法可以为图像中每个像素计算出其H矩阵的决定值,并用这个值来判别特征点。为此Herbert Bay提出用近似值现代替L(x,t)。为平衡准确值与近似值间的误差引入权值。权值随尺度变化,则H矩阵判别式可表示为:
其中为何式中0.9呢.请详见[1]。因求Hessian时要先高斯平滑,然后求其二阶导数,这在离散的像素是用模板卷积形
成的。这比如说y方向上的模板Fig1(a)和Fig1(c).Fig1(a)即用高斯平滑后在y方向上求二阶导数的模板。为了加快运算用了近似处理,其处理结果如Fig1(b)所示,这样就简化了很多。并且可以采用积分图来运算,大大的加快了速度。同理,x和y方向的二阶混合偏导模板Fig1(b)与Fig1(d)。
2. 尺度空间生成
图像的尺度空间是这幅图像在不同解析度下的表示。上面讲的这么多只是得到了一张近似Hessian行列式图,这类似SIFT中的DOG图,但是在金字塔图像中分为很多层,每一层叫做一个octave,每一个octave中又有几张尺度不同的
图片。在SIFT算法中,同一个octave层中的图片尺寸(即大小)相同,但是尺度(即模糊程度)不同,而不同的octave层中的图片尺寸大小也不相同,因为它是由上一层图片降采样得到的。在进行高斯模糊时,SIFT的高斯模板大小是始终不变的,只是在不同的octave之间改变图片的大小。而在SURF中,图片的大小是一直不变的,不同的octave层得到的待检测图片是改变高斯模糊尺寸大小得到的,当然了,同一个octave中个的图片用到的高斯模板尺度也不同。算法允许尺度空间多层图像同时被处理,不需对图像进行二次抽样,从而提高算法性能。上图左边是传统方式建立一个如图所示的金字塔结构,图像的寸是变化的,并且运算会反复使用高斯函数对子层进行平滑处理,上图右边说明SURF算法使原始图像