SURF网格化特征点提取算法流程(一)

SURF网格化特征点提取算法流程(一)


相关:
SURF网格化特征点提取的算法流程(二)
SURF网格化特征点提取的算法流程(三)

SURF网格化算法主要包括下面三个阶段:

第一部分:特征点检测

1、积分图像的生成

2、构建Hessian(黑塞矩阵),生成所有的兴趣点,用于特征的提取

3、尺度金字塔构造

第二部分:特征点描述

1、特征点方向的分配

2、基于 Haar 小波的特征点描述子

第三部分:SURF网格化的特征点提取

1、SURF网格化特征点提取的算法思路

2、SURF网格化处理前后的对比实验

第一部分:特征点检测

1、积分图像的生成

  积分图像,就是当前的每个像素的灰度都是它与坐标原点(0,0)形成的对角线的矩形内的所有像素的灰度值之和。如下图 所示:

请添加图片描述
  图中蓝色像素的积分图像的灰度值就是黄色框内的所有像素的灰度值之和。其他像素同样的计算方法。

  有了积分图像的概念,在计算某个矩形框内的像素灰度值之和时,就可以很简单的得出了。如下图所示:
请添加图片描述
​  利用积分图像可以计算原图像中任意矩形内像素灰度值之和
  如上图中灰色矩形框内的灰度值之和就是A-B-C+D,就是很简单的一个矩形面积计算公式,A代表AO对角线矩形的面积,以此类推。 更重要的是,无论矩阵面积多大,所需要的运算量都是相同的。因此当算法中需要大量重复的计算不同矩阵区域内的灰度值之和时,应用积分图像就可以大大地提高效率。
  SURF 算法正是很好的利用了这个性质,以近乎恒定的时间完成了不同尺寸大小的盒状滤波器( box filter )的快速卷积运算。这样,对于接下来计算像素的Hessian矩阵时,将会非常的方便,只需要知道该矩形块的4个顶点像素的积分图像的值,便可以求出该矩形块的灰度值之和。

2、构建Hessian(黑塞矩阵),生成所有的兴趣点,用于特征的提取

  我们求出了原图的Hessian矩阵,然后计算行列式的近似值就得出了我们需要寻找特征点的变换图像。
  目前检测特征点最好的方法是基于Harris 矩阵的方法基于Hessian 矩阵的方法, Harris 矩阵能够检测出角点类特征点,Hessian 矩阵能够检测出斑点类特征点。
  SURF 算法应用的是Hessian 矩阵,这是因为该矩阵在运算速度和特征点检测的准确率上都具有一定的优势。
  Hessian 矩阵检测特征点的方法是计算图像所有像素的Hessian 矩阵的行列式,极值点处就是图像特征点所在的位置。由于在特征点检测的过程中采取了一系列加速运算量的方法,此 SURF算法中的特征点检测方法也称为因Fast‐Hessian 方法。
  SURF构造的金字塔图像与SIFT有很大不同,就是因为这些不同才加快了其检测的速度。SIFT采用的是DOG图像,而SURF采用的是Hessian矩阵行列式近似值图像

在这里插入图片描述在这里插入图片描述   为了将模板与图像的卷积转化成盒子滤波(Box Filter)运算,我们需要对高斯二阶微分模板进行简化,使得简化后的模板只是由几个矩形区域组成,矩形区域内填充同一值,如下图4-14所示,在简化模板中白色区域为1,黑色区域为-1(Lxy的简化)或者-2(Lxx和Lyy的简化),灰色区域的值为0.
在这里插入图片描述  当我们用sigma = 1.2的高斯二阶微分滤波,模板尺寸为9X9的大小,并用它作为最小的尺度空间值对图像进行滤波和斑点检测,用Dxx、Dyy和Dxy表示模板与图像进行卷积后的结果。Hession矩阵的行列式可做如下简化:
在这里插入图片描述  理论上说,对于不同sigma值和对应的模板尺寸,Y值是不相同的,但为了简化,可以认为它是一个常数。同样也可以认为C为常数,由于常数C不影响极大值的求取,所以最终简化式如下,这也是SURF论文里面Hession响应值计算公式的来源:
在这里插入图片描述  当Hessian矩阵的判别式取得局部极大值时,判定当前点是比周围邻域内其他点更亮或更暗的点,由此来定位关键点的位置。为了找出图像中的特征点,需要对原图进行变换,在SIFT算法中,是在DOG图像中进行,那么,在SURF算法中,该变换图就是原图每个像素的Hessian矩阵行列式的近似值构成的。
在这里插入图片描述  使用近似的Hessian矩阵行列式来表示图像中某一点x处的斑点响应值,遍历图像中所有的像素点,便形成了在某一尺度下斑点检测的响应图像。为了提高运算速度,SURF使用了盒式滤波器来近似替代高斯滤波器,所以在Dxy上乘了一个加权系数0.9,目的是为了平衡因使用盒式滤波器近似所带来的误差。使用不同的模板尺寸,便形成了多尺度斑点响应的金字塔图像,利用这一金字塔图像,就可以进行斑点响应极值点的搜索

3、尺度金字塔构造

​  在SURF中,采用不断增大盒子滤波器模板尺寸与积分图像求取Hession矩阵行列式的响应图像,然后在响应图像上采用3D非最大值抑制,求取各种不同尺度的斑点,以下是两种不同的金字塔,SURF的金字塔属于第二种:
在这里插入图片描述
  SURF中采用9X9尺寸的滤波器作为起始滤波器,之后的滤波器尺寸可由以下公式计算得出:
在这里插入图片描述  octave、interval在公式中都是从1开始,也就是当第0组第0层时,在公式中octave=1, interval=1.采用这种方式来定义滤波器尺寸的理由如下:
​  与SIFT算法类似,我们需要将尺度空间空间划分成若干组(Octave)。一个组代表了逐步放大的滤波模板对同一输入图像进行滤波的一系列响应图。每个组又由若干固定的层组成。由于积分图像离散化的原因,两个层之间的最小尺度变化量是由高斯二阶微分滤波器在微分方向上对正负斑点响应长度l0决定的,它是盒子滤波模板尺寸的1/3。对于9×9的盒子滤波模板,l0为3。下一个层的响应长度至少应该在l0的基础上增加2个像元,以保证一边一个像元,即:l0=5,这样,模板的尺寸就为15×15,如图4-16所示。以此类推,我们可以得到一个尺寸逐渐增大模板序列,它们的尺寸分别为:9×9,15×15,21×21,27×27,黑色、白色区域的长度增加偶数个像元,以保证一个中心像元的存在。
  滤波器响应长度、滤波器尺寸、组索引O、层索引S、尺度sigma之间的关系如下:

在这里插入图片描述  采用类似的方法来处理其他几组的模板序列。其方法是将滤波器尺寸增加量翻倍(6,12,24,38)。这样,可以得到第二组的滤波器尺寸,它们分别为15,27,39,51。第三组的滤波器尺寸为27,51,75,99。如果原始图像的尺寸仍然大于对应的滤波器尺寸,尺度空间的分析还可以进行第四组,其对应的模板尺寸分别为51,99,147,195。下图显示了第一组至第三组的滤波器尺寸变化。组之间有相互重叠的目的是为了覆盖所有可能的尺度。
在这里插入图片描述
  在通常尺度分析情况下,随着尺度的增大,被检测到的斑点数量迅速衰减。所以一般进行3-4组就可以了,与此同时,为了减少运算量,提高计算的速度,可以考虑在滤波时,将采样间隔设为2。
  为了在图像及不同尺寸中定位兴趣点,我们用了3×3×3邻域非最大值抑制:
  所有小于预设极值的取值都被丢弃,增加极值使检测到的特征点数量减少,最终只有几个特征最强点会被检测出来。检测过程中使用与该尺度层图像解析度相对应大小的滤波器进行检测,以3×3的滤波器为例,该尺度层图像中9个像素点之一图2检测特征点与自身尺度层中其余8个点和在其之上及之下的两个尺度层9个点进行比较,共26个点,图中标记‘x’的像素点的特征值若大于周围像素则可确定该点为该区域的特征点。
在这里插入图片描述
  局部极大值精确定位:采用3维线性插值法得到亚像素级的特征点,同时也去掉那些值小于一定阈值的点。

参考资料:
https://blog.csdn.net/CXP2205455256/article/details/41311013
https://blog.csdn.net/dcrmg/article/details/52601010
https://blog.csdn.net/streamchuanxi/article/details/50924549
https://blog.csdn.net/luoshixian099/article/details/47905681
《图像局部不变性特征与描述》

猜你喜欢

转载自blog.csdn.net/j000007/article/details/124259078