*background
计算视觉中,引入不变的特征,主要的思想每个特征点检测的到特征点都伴随对应的尺寸因子,当我们匹配不同图像时,经常会遇到图像尺寸不同的问题,不同图像中特征点距离变得不同,物体变成不同的尺寸,如果我们通过修正特征点的大小,就会造成强度不匹配。为了解决这个问题,提出尺度不变的SURF特征检测,在计算特征点的时候把尺度因素加入之中。SURF(speeded up roboust features)加速版鲁棒特征和SIFT(scale invariant feature transfrom)尺寸不变特征变换算法相似,SIFT算法比较稳定,检测特征点更多,但是负责度较高,而SURF运算简单,效率高,运算时间短一点。
从上述对SURF描述,可知:第一、SURF算法是对SIFT算法的加强版,同事加速的具有鲁棒性特征,第二、标准的SURF算子比SIFT快好几倍,并且在多幅图下具有更好的鲁棒性。SURF最大的特征在于采用了Harr特征以及积分图像integral image的概念,这大大加速了程序的运行时间。*
1.1算法描述
为了实现尺度不变性特征检测和匹配,SURF算法则利用hessian矩阵做候选点,然后进行非极大抑制,然后计算负责度大大降低了,整个算法有以下几部分构成。
1.1.1 hessian矩阵构建
SIFT算法建立一幅图像的金字塔,在每一层进行高斯滤波并求图像差(DOG)进行特征点的提取,而SURF则用的是Hessian matrix 提取图像特征,所以黑森矩阵是SURF算法的核心。假设函数f(x,y),Hessian矩阵H是由函数偏导数组成。首先来看看图像某个像素点的Hessian Matrix的定义:
H(f(x, y)) = [■((∂^2 f)/(∂x^2 )&(∂^2 f)/∂x∂y@(∂^2 f)/∂x∂y&(∂^2 f)/(∂y^2 ))]
从而每个像素点都可以求出一个Hessian Matrix,Hessian矩阵判别式为:
det(H)= (∂^2 f)/(∂x^2 ) (∂^2 f)/(∂y^2 )-((∂^2 f)/∂x∂y)^2
判别式的值是H矩阵的特征值,可以利用判别式的结果符合将所有点分类,根据判别式取值正负,从而判别改点是或不是极点值。在SURF算法中,通常用像素I(x, y)代替函数值f(x, y),然后选择二阶标准高斯函数作为滤波器,通过特定核间卷积计算二阶偏导数,这样就能计算出H矩阵的三个矩阵像素Lxx, Lxy, Lyy,从而计算H矩阵的公式如下:
H(x,σ)= [■(Lxx(x,σ)&Lxy(x,σ)@Lxy(x,σ)&Lyy(x,σ))]
由于我们的特征点需要尺寸无关性,所以在构建H矩阵前,需求对其进行高斯滤波。这样,经过高斯滤波计算后,H矩阵的计算公式如下:
L(x, t)= G(t) . I(x, t)
L(x, t)是一幅图像在不同解析度下的表示,利用高斯核G(t)和图像函数I(x)在点x的卷积下实现,其中高斯核为:
G(t)= (∂^2 g(t))/(∂x^2 )
其中G(t)为高斯函数,t为高斯方差,通过这种方法可以为图像中每个像素计算H矩阵的决定值,利用这个值来判别特征点,为此Herbert Bay提出了用近似值替代L(x , t),为平衡准确值和近似值间的误差引入权值,权值随尺度变化,H矩阵可表示为:
det(H_approx)= D_XX D_yy-(〖0.9D〗_xy )^2
其中,公式中0.9从而来呢,见下图[1],因为hessian先高斯平滑,然后在求二阶偏导数,这样离散的像素是在模板卷积下形成的。比如y方向上的模板Fig1(a)和Fig1(a).Fig1©即利用高斯平滑在y上求二阶偏导数,为加快运算使用了近似处理,结果如Fig1(b)所示,并且可以采用积分图运算提升运行速度。同理,在x和y方向上二阶偏导数模板Fig1©和Fig1(d)。
Fig1(a) Fig1(b)