图像处理SIFT与SURF算法详解

图像的特征点检测是图像配准的第一步,下面将为大家介绍尺度不变特征检测(SIFT)和加速鲁棒特征检测(SURF)两种算法。

一、SIFT算法

SIFT 算法是一种高精度的特征点检测算法。运用此算法检测出的特征点包含尺度,灰度和方向信息,具有很高的鲁棒性。SIFT 算法的特征点检测需要在图像的尺度空间上进行,而该尺度空间是有图像和高斯函数卷积生成的。高斯函数的定义为:
在这里插入图片描述
则图像尺度空间L(x,y) 的计算公式为:
在这里插入图片描述
1.创建尺度空间
金字塔底部的图像是最清晰的,且它是原图像大小的二倍,底部图像被标记为第一组第一层,越往上越模糊。构建的第一步就是对最底部的图像进行高斯滤波之后作为该组的第二层,对新生成的图像重复进行该操作,几次操作之后的图像集构成一个组,然后对该组中最模糊的图像进行 2 倍下采样处理,即该图像的长和宽度缩减为原来的一半。则图像的大小就变为了原图像大小的四分之一。将新生成的图像作为下一组的初始图像,重复上面的步骤,从而完成高斯金字塔的构建,如图 。同一组中图像的大小一致。假设构建的高斯金字塔的组数和层数分别为 m,n。那么(m,n)就是它所表示的尺度空间。
Gaussian 构建过程示意图
基于高斯金字塔进一步构建差分高斯金字塔[38]。高斯金字塔第 1 组的第 2层与第 1 层的差形成的图像作为差分高斯金字塔的第 1 组第 1 层,高斯金字塔第 1组的第 3 层与第 2 层的差形成的图像作为差分高斯金字塔的第 1 组第 2 层…依照此规律生成的图像就构成了差分高斯金字塔,故差分高斯金字塔每一组的层数要比高斯金字塔相应组的层数少一。计算公式如下式所示。
在这里插入图片描述
DOG 构建过程示意图

2.极值点检测
在完成 DOG 的构建之后,由于其内部的极值点性质较稳定,需要采用一种算法策略将其找出并作为特征点的候选。即对 DOG 中的每一个点进行搜索,判断它是否满足作为极值点的条件。判断依据是让这个点与它三维空间里的相邻像素点进行比较,(即本层周围的 8 个像素点加上下两层分别相邻的 9 个像素点一共 26 个)看这个点是不是在这个在尺度空间中为最大值或者最小值。若通过比较该点是这 26 个点中的最值,那么该点就是检测到的一个极值点。
确定极值过程

3.特征点定位
特征点的定位剔除边缘上定位不准确的点或去除易受到噪声干扰的点,对检测到的极值点通个一个拟合三维二次函数模型来确定关键点的位置和尺度。插值需要将离散的图像表达式,表达为连续的函数,所以对高斯差分函数做泰勒级数展开:
在这里插入图片描述
对D求导可得到极值点的精确位置,令导数为零可得:
在这里插入图片描述
如果|D(xmax)<=0.03|则表明其为易受到噪声干扰的低对比度点,将其剔除,反之,将其保留。
为了剔除图像边缘响应点,需要采用 2*2 的 Hessian 矩阵来计算主曲率.
在这里插入图片描述
因为 D 的主曲率和 H 的特征值成正比可以根据 H 矩阵的秩 T®和行列式Det(H)的比值来判定是否为边缘响应点。设α、β分别为 Hessian 矩阵 H 的两个特征值,则:
在这里插入图片描述
通过检测下式 2-15 是否成立,来判断主曲率和阈值 的大小关系。
在这里插入图片描述

4.确定极值点梯度方向
为了满足检测到的特征点具有旋转不变性的需求,需要赋予特征点一个方向。这个方向通过特征点所在的局部图像结构使用图像梯度求得。特征点(x,y) 处的梯度值 m(x,y)和梯度方向θ(x,y)通过下式求得:
在这里插入图片描述
其中 L(x,y) 表示特征点 (x,y) 的尺度。
经过上述公式计算得到的邻域像素特征点梯度值m(x,y) 和梯度方向(x,y)用直方图进行统计。如图 2-5,横坐标表示方向区间,如 0-45 度,45-90 度,纵坐标该区间内特征点的梯度值之和。其构造方法是将圆周 360o 等分成 8 柱,每45 度一柱。梯度直方图中最高一柱的值就代表这个特征点的主方向,另外当存在另一柱的值相当于最高值的八成或以上时,就把这个柱所在的方向设定为这个特征点的辅助方向。
梯度直方图的构造

5.生成特征点描述子
将特征点所在的邻域图像旋转一个角度,使得特征点的主方向与坐标轴的方向一致以保证特征向量的旋转不变性,过程见下图:
特征描述子的形成
将特征点邻域内的像素划分为边长为 16 的子域,包含 16 个子域的正方形为一个块,共 4×4 个块。分别计算每个块内的梯度直方图(8 个方向)。经过处理得到一个 4×4×8=128 维的特征描述子。

二、SURF特征检测

SURF 是在 SIFT 算法基础上进行改进升级的一种特征检测算法,兼具 SIFT算法准确性高、鲁棒性强的优点。它的算法流程和 SIFT 相似:
1.特征点的定位
由于海森检测器有更加稳定和具有可重复性的优点,SURF 算法首先采用该检测器来检测特征点。对图像的滤波处理可以通过高斯函数的高阶微分与离散的图像函数 f(x,y)做卷积来实现。和 SIFT 算法关键点定位相似,SURF 通过将像
素点与三维空间中周围 26 个海森行列式值进行比较,若周围的海森行列式的值全部小于它,那么这个点就是一个特征点。

2.特征点方向的确定
为了获得良好的旋转不变性通过划定一个区域,统计该区域内的 Harr 小波响应计算得出这个特征点的主方向。该区域的范围是以这个特征点为圆心,半径是 6 倍尺度的圆。Haar 小波的模板如图所示:
Harr 小波响应模板
上图模板为不同方向上的 harr 响应。其中黑白两种颜色分别代表-1 和 1。用上面的模板对划定区域内的点做处理,会得到其中每一个特征点的 2 个方向的响应。
SURF 算法关键点主方向分配
然后对模板处理后的响应进行高斯加权。最后在该划定的圆形区域中,使用60 度的扇形统计其中的 x 和 y 方向的 harr 小波特征的总数。该扇形以一定的间隔旋转并进行重复的统计操作,最后统计值最大的扇形的方向就是该特征点的主方向。

3.生成特征点描述符
SURF 算法最终生成的特征描述符需要经过以下过程:在特征点附近选取一个正方形,并将其均分为 16 个小正方形区域(每个小正方形的边长是 5s),选取正方形的方向和特征点的方向一致。然后在这 4×4 的正方形区域内对其中像素
的 harr 小波特性做统计,像素的个数是 25,统计的内容包括dx , dx , dy以及 dy 。每个区域就会有 4 个统计值,因此这个边长为 20s 的正方形区域就会有 4×4×4=64 维,如图 所示。
构建描述子向量示意图

版权所有:董帅,转载请注明出处。

猜你喜欢

转载自blog.csdn.net/weixin_44612221/article/details/106672931