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

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

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

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

第一部分:特征点检测

1、积分图像的生成

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

3、尺度金字塔构造

第二部分:特征点描述

1、特征点方向的分配

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

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

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

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

第一部分:特征点检测

1、积分图像的生成

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

SURF网格化特征点提取算法流程(一)
图中蓝色像素的积分图像的灰度值就是黄色框内的所有像素的灰度值之和。其他像素同样的计算方法。

有了积分图像的概念,在计算某个矩形框内的像素灰度值之和时,就可以很简单的得出了。如下图所示:

SURF网格化特征点提取算法流程(一)
​ 利用积分图像可以计算原图像中任意矩形内像素灰度值之和。
如上图中灰色矩形框内的灰度值之和就是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矩阵行列式近似值图像。

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

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

3、尺度金字塔构造

​ 在SURF中,采用不断增大盒子滤波器模板尺寸与积分图像求取Hession矩阵行列式的响应图像,然后在响应图像上采用3D非最大值抑制,求取各种不同尺度的斑点,以下是两种不同的金字塔,SURF的金字塔属于第二种:

SURF网格化特征点提取算法流程(一)
SURF中采用9X9尺寸的滤波器作为起始滤波器,之后的滤波器尺寸可由以下公式计算得出:
SURF网格化特征点提取算法流程(一)
​ 与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之间的关系如下:

SURF网格化特征点提取算法流程(一)
SURF网格化特征点提取算法流程(一)
在通常尺度分析情况下,随着尺度的增大,被检测到的斑点数量迅速衰减。所以一般进行3-4组就可以了,与此同时,为了减少运算量,提高计算的速度,可以考虑在滤波时,将采样间隔设为2。
为了在图像及不同尺寸中定位兴趣点,我们用了3×3×3邻域非最大值抑制:
所有小于预设极值的取值都被丢弃,增加极值使检测到的特征点数量减少,最终只有几个特征最强点会被检测出来。检测过程中使用与该尺度层图像解析度相对应大小的滤波器进行检测,以3×3的滤波器为例,该尺度层图像中9个像素点之一图2检测特征点与自身尺度层中其余8个点和在其之上及之下的两个尺度层9个点进行比较,共26个点,图中标记’x’的像素点的特征值若大于周围像素则可确定该点为该区域的特征点。
SURF网格化特征点提取算法流程(一)
局部极大值精确定位:采用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
《图像局部不变性特征与描述》

Original: https://blog.csdn.net/j000007/article/details/124259078
Author: 会上树的机器人
Title: SURF网格化特征点提取算法流程(一)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/640917/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球