基于sift算子的集美大学匹配地理标记图像

一、SIFT(尺度不变的特征变换)

SIFT是计算机视觉中用来检测并描述图像的局部特征的一种特种检测算法。它由加拿大不列颠哥伦比亚大学在加拿大获得专利,1999年由David Lowe出版。应用包括物体识别,机器人绘图和导航,图像拼接,3D建模,手势识别,视频跟踪,个人识别野生动物和匹配移动。

对于图像中的任何对象,可以提取对象上的有趣点以提供对象的“特征描述”。然后,当试图在包含许多其他对象的测试图像中定位对象时,可以使用从训练图像中提取的该描述来识别对象。为了执行可靠的识别,重要的是即使在图像比例,噪声和照明的变化下也可以检测从训练图像中提取的特征。这些点通常位于图像的高对比度区域,例如物体边缘。

以上出自维基百科中的sift算子描述

1、兴趣点

SIFT特征使用高斯差分函数来定位兴趣点:
在这里插入图片描述
qizhong ,G0为二维高斯核,Iσ为使用Gσ模糊的图像,k是决定相差尺度的常数。兴趣点是在图像位置和尺度变化下D(x,σ)的最大值和最小值点。这些候选位置点通过滤波去除不稳定点。基于一些准则,比如认为低对比度和位于边缘上的点不是兴趣点,我们可以去除一些兴趣点。

去除兴趣点我们将在接下来的内容中介绍到。

2、描述子

上面讨论的兴趣点(关键点)位置描述子给出了兴趣点的位置和尺度信息。为了实现旋转不变性,基于每个点周围图像梯度的方向和大小,SIFT描述子又引入了参考方向。SIFT描述子使用主方向描述参考方向。主方向使用方向直方图(以大小为权重)来度量。
为了对图像亮度具有稳健性,SIFT描述子使用图像梯度。SIFT描述子在每个像素点附件选取子区域网格,在每个子区域内计算图像梯度直方图。每个子区域的直方图拼接起来组成描述子向量。SIFT描述子的标准设置使用4x4的子区域,每个子区域使用8哥小区间的方向直方图,会产生共128个小区间的直方图。

3、检测兴趣点

为了寻找尺度空间的极值点,每个像素点要和其图像域(同一尺度空间)和尺度域(相邻的尺度空间)的所有相邻点进行比较,当其大于(或者小于)所有相邻点时,改点就是极值点。如图所示,中间的检测点要和其所在图像的3×33×3邻域8个像素点,以及其相邻的上下两层的3×33×3领域18个像素点,共26个像素点进行比较。
从上面的描述中可以知道,每组图像的第一层和最后一层是无法进行比较取得极值的。为了满足尺度变换的连续性,在每一组图像的顶层继续使用高斯模糊生成3幅图像,高斯金字塔每组有S+3S+3层图像,DoG金字塔的每组有S+2S+2组图像。
在这里插入图片描述

尺度变化的连续性

设S=3S=3,也就是每组有3层,则k=21S=213k=21S=213,也就是有高斯金字塔每组有(S−1)3层图像,DoG金字塔每组有(S−1)3层图像,DoG金字塔每组有(S-2)2层图像。在DoG金字塔的第一组有两层尺度分别是σ,kσσ,kσ,第二组有两层的尺度分别是2σ,2kσ2σ,2kσ,由于只有两项是无法比较取得极值的(只有左右两边都有值才能有极值)。由于无法比较取得极值,那么我们就需要继续对每组的图像进行高斯模糊,使得尺度形成σ,kσ,k2σ,k3σ,k4σσ,kσ,k2σ,k3σ,k4σ,这样就可以选择中间的三项kσ,k2σ,k3σkσ,k2σ,k3σ。对应的下一组由上一组降采样得到的三项是2kσ,2k2σ,2k3σ2kσ,2k2σ,2k3σ,其首项2kσ=2⋅213σ=243σ2kσ=2⋅213σ=243σ,刚好与上一组的最后一项k3σ=233σk3σ=233σ的尺度连续起来。
在这里插入图片描述

去除不好的兴趣点

通过比较检测得到的DoG的局部极值点实在离散的空间搜索得到的,由于离散空间是对连续空间采样得到的结果,因此在离散空间找到的极值点不一定是真正意义上的极值点,因此要设法将不满足条件的点剔除掉。可以通过尺度空间DoG函数进行曲线拟合寻找极值点,这一步的本质是去掉DoG局部曲率非常不对称的点。
要剔除掉的不符合要求的点主要有两种:

1.低对比度的特征点

候选特征点x,其偏移量定义为ΔxΔx,其对比度为D(x)D(x)的绝对值∣D(x)∣∣D(x)∣,对D(x)D(x)应用泰勒展开式
在这里插入图片描述

由于x是D(x)的极值点,所以对上式求导并令其为0,得到
在这里插入图片描述

然后再把求得的ΔxΔx代入到D(x)的泰勒展开式中
在这里插入图片描述

设对比度的阈值为T,若∣D(x)∣≥T∣D(x)∣≥T,则该特征点保留,否则剔除掉。

2.不稳定的边缘响应点

4.2 剔除不稳定的边缘响应点

在边缘梯度的方向上主曲率值比较大,而沿着边缘方向则主曲率值较小。候选特征点的DoG函数D(x)的主曲率与2×22×2Hessian矩阵HH的特征值成正比。
在这里插入图片描述

其中,Dxx,Dxy,DyyDxx,Dxy,Dyy是候选点邻域对应位置的差分求得的。
为了避免求具体的值,可以使用HH特征值得比例。设α=λmaxα=λmax为H的最大特征值,β=λminβ=λmin为H的最小特征值,则
在这里插入图片描述

其中,Tr(H)Tr(H)为矩阵H的迹,Det(H)Det(H)为矩阵H的行列式。
设γ=αβγ=αβ 表示最大特征值和最小特征值的比值,则
在这里插入图片描述

上式的结果与两个特征值的比例有关,和具体的大小无关,当两个特征值想等时其值最小,并且随着γγ的增大而增大。因此为了检测主曲率是否在某个阈值TγTγ下,只需检测
在这里插入图片描述
如果上式成立,则剔除该特征点,否则保留。

求取兴趣点的主方向

经过上面的步骤已经找到了在不同尺度下都存在的特征点,为了实现图像旋转不变性,需要给特征点的方向进行赋值。利用特征点邻域像素的梯度分布特性来确定其方向参数,再利用图像的梯度直方图求取关键点局部结构的稳定方向。
找到了特征点,也就可以得到该特征点的尺度σσ,也就可以得到特征点所在的尺度图像。

计算以特征点为中心、以3×1.5σ3×1.5σ为半径的区域图像的幅角和幅值,每个点L(x,y)的梯度的模m(x,y)m(x,y)以及方向θ(x,y)θ(x,y)可通过下面公司求得
在这里插入图片描述
计算得到梯度方向后,就要使用直方图统计特征点邻域内像素对应的梯度方向和幅值。梯度方向的直方图的横轴是梯度方向的角度(梯度方向的范围是0到360度,直方图每36度一个柱共10个柱,或者没45度一个柱共8个柱),纵轴是梯度方向对应梯度幅值的累加,在直方图的峰值就是特征点的主方向。在Lowe的论文还提到了使用高斯函数对直方图进行平滑以增强特征点近的邻域点对关键点方向的作用,并减少突变的影响。为了得到更精确的方向,通常还可以对离散的梯度直方图进行插值拟合。具体而言,关键点的方向可以由和主峰值最近的三个柱值通过抛物线插值得到。在梯度直方图中,当存在一个相当于主峰值80%能量的柱值时,则可以将这个方向认为是该特征点辅助方向。所以,一个特征点可能检测到多个方向(也可以理解为,一个特征点可能产生多个坐标、尺度相同,但是方向不同的特征点)

生成特征描述

通过以上的步骤已经找到了SIFT特征点位置、尺度和方向信息,下面就需要使用一组向量来描述关键点也就是生成特征点描述子,这个描述符不只包含特征点,也含有特征点周围对其有贡献的像素点。描述子应具有较高的独立性,以保证匹配率。
特征描述符的生成大致有三个步骤:

校正旋转主方向,确保旋转不变性。
生成描述子,最终形成一个128维的特征向量
归一化处理,将特征向量长度进行归一化处理,进一步去除光照的影响。
为了保证特征矢量的旋转不变性,要以特征点为中心,在附近邻域内将坐标轴旋转θθ(特征点的主方向)角度,即将坐标轴旋转为特征点的主方向。旋转后邻域内像素的新坐标为:
在这里插入图片描述
旋转后以主方向为中心取 8×88×8的窗口。下图所示,左图的中央为当前关键点的位置,每个小格代表为关键点邻域所在尺度空间的一个像素,求取每个像素的梯度幅值与梯度方向,箭头方向代表该像素的梯度方向,长度代表梯度幅值,然后利用高斯窗口对其进行加权运算。最后在每个4×44×4的小块上绘制8个方向的梯度直方图,计算每个梯度方向的累加值,即可形成一个种子点,如右图所示。每个特征点由4个种子点组成,每个种子点有8个方向的向量信息。这种邻域方向性信息联合增强了算法的抗噪声能力,同时对于含有定位误差的特征匹配也提供了比较理性的容错性。
在这里插入图片描述
与求主方向不同,此时每个种子区域的梯度直方图在0-360之间划分为8个方向区间,每个区间为45度,即每个种子点有8个方向的梯度强度信息。
在实际的计算过程中,为了增强匹配的稳健性,对每个关键点使用4×44×4共16个种子点来描述,这样一个关键点就可以产生128维的SIFT特征向量。
在这里插入图片描述

4、匹配描述子

对于将一副图像中的特征匹配到另一幅图像的特征,一种稳健的准则是使用着两个特征距离和两个最匹配特征距离的比率。相比于图像中的其他特征,该准则保证能够找到相似的唯一特征。使用该方法可以使错误的匹配数降低。
为了进一步的增加匹配的稳健性,我们可以进行一次正向一次反向操作,如将图一作为原图,图二作为对比图,经行匹配,然后再反过来再来一次。(因为一次匹配是单向的)

5、匹配地理标记图像

我们这次使用的是集美大学教学区的一系列图片来进行最后的测试。同时也感受一下集美大学的景色。
以下是个人通过手机拍摄的集美大学照片:
在这里插入图片描述

运行代码后,出现的问题
在这里插入图片描述
正在解决中。。。。。。。

猜你喜欢

转载自blog.csdn.net/qq_39384686/article/details/88623723