一种基于SIFT的HASH算法的图像快速检索方法与流程

文档序号:14735912发布日期:2018-06-19 20:29阅读:356来源:国知局

本发明涉及图像检索技术领域,具体说是一种基于SIFT的HASH算法的图像快速检索方法。



背景技术:

当今社会已进入信息化时代,随着计算机技术、通信技术的发展,图像信息处理能力也在不断提高,人们对此的关注也在相应的提高。图像匹配是图像处理中的一项关键技术,可广泛应用于目标物体识别、人脸识别、变化检测、停车场车牌识别等领域。SIFT(Scale Invariant Feature Transform)算法是由Lowe提出的,适用于图像匹配,该算法通过提取图像的SIFT特征来实现图像匹配,在稳定性、独特性、多量性以及可扩展性等方面具有很好的表现。但SIFT算法在应用于图像匹配时,需要计算特征值之间的欧氏距离而非常耗时;也有采取将SIFT与HASH算法相结合的算法,该算法在图像hash的基础上结合sift,通过对SIFT特征向量进行有针对性的筛选和压缩、基于特征向量质心的量化生成图像摘要,为适应图像摘要构造的特性,设计了基于广义集合距的匹配算法来衡量摘要间的距离。此种算法优点在于结合了SIFT对常见的几何攻击,非几何攻击具有强鲁棒性,但计算太过繁琐,耗时久,不易于实现。

专利文献CN104199922A《一种基于局部相似哈希算法的大规模图像库检索方法》是一种SIFT与HASH相结合算法。该专利从待检索图像库中选取部分图像作为训练图像集,提取训练集图像的SIFT特征;利用K均值算法对训练集的SIFT特征进行聚类,得到码本;在训练集上计算码本中每一码字的逆频率;对每一码字进行局部敏感哈希编码;对查询图像和待检索图像库中图像分别提取SIFT特征;针对某一幅图像计算其中每一码字的词频,进而得到每一码字的权重;利用相似哈希算法计算图像的局部相似哈希编码。 此种方法查询图像时用到汉明距离简化了匹配,但步骤仍很繁琐,且不具有实时性。



技术实现要素:

本发明的目的是针对上述现有技术中的不足,提供一种基于SIFT的HASH算法的图像快速检索方法。

本发明的目的是通过以下技术方案实现的:

一种基于SIFT的HASH算法的图像快速检索方法,包括以下步骤:

步骤S1:对模板图像和查询图像进行预处理,得到调整图像;

步骤S2:分别提取预处理后的模板图像和查询图像的SIFT关键点描述子;

步骤S3:二值化SIFT关键点描述子,存储二值化SIFT关键点描述子为HASH地址码;

步骤S4:计算查询图像和模板图像的SIFT关键点描述子的汉明距离,根据汉明距离来判断查询图像与模板图像的SIFT关键点描述子匹配的相似度,返回相似度高的图像。

本发明进一步的设计方案中,步骤S1中所述预处理为:将图像转化为灰度图像,然后将灰度图像的分辨率调整为240x320,得到调整图像。

本发明进一步的设计方案中,步骤S2包括:

步骤S21:构建尺度空间:用高斯卷积对调整图像进行尺度变换,获得不同尺度的图像;

步骤S22:在不同尺度的图像上进行拉普拉斯运算,并求极值点,得到关键点;

步骤S23:为关键点赋予128维梯度方向,并利用关键点的周围的像素梯度方向直方图生成SIFT特征描述子。

本发明进一步的设计方案中,步骤S3包括:

步骤S31:二值化SIFT关键点描述子,将128维的SIFT关键点描述子二值化为128位的二进制码;

步骤S32:存储二值化SIFT关键点描述子为HASH地址码。

本发明具有以下突出的有益效果:

本发明的基于SIFT的HASH算法的图像快速检索方法采用二值化SIFT关键点描述子的HASH算法。首先预先建立一个图像文件夹将模板图像预处理,然后获取模板图像关键点描述子,进行二值化处理,计算出对应的HASH地址码,存入HASH表中,最终获得每幅图像所对应的HASH表单元;然后对查询图像类似操作获得其HASH地址码,根据此地址码在模板图像库中找到到相同地址码,然后找到二值化关键点描述子来计算两个二值化关键点描述子的汉明距离(采用异或的方法进行计算),判断是否匹配,本发明结合HASH算法将二值化的SIFT关键点描述子存储到HASH地址码中从而进行匹配。这将加快相似特征检索速度,减少了数据的存储空间,提高了查询的检索效率,能够满足实时应用。

附图说明

图1是实施例中基于SIFT的HASH算法的图像快速检索方法的步骤示意图。

具体实施方式

下面结合附图及实施例对本发明作进一步说明。

实施例

参见附图1,一种基于SIFT的HASH算法的图像快速检索方法,包括以下步骤。

步骤S1:对模板图像和查询图像进行预处理,得到调整图像;

模板图像为预先放在一个文件夹内的大量图像,如果模板图像是彩色图像的话,就要先将模板图像转化为灰度图像。然后要将转化完成后得到的灰度图的分辨率调整为240x320,这样可以避免产生大量的SIFT关键点描述子,这样将大大的减少匹配的时间。

步骤S2:分别提取预处理后的模板图像和查询图像的SIFT关键点描述子;关键点也可称为特征点或兴趣点,一般为角点,是指一个梯度的大小和方向变换都很快的像素点,采用sift程序代码,具体包括:

步骤S21:构建尺度空间:用高斯卷积对调整图像进行尺度变换,获得不同尺度的图像;高斯核是唯一可以产生多尺度空间的核。是一个可变尺度的高斯函数,利用这个高斯函数我们可以计算得到图像的尺度空间L(x,y,σ) 。

构建高斯金字塔,对图像做高斯平滑,对图像做降采样。一幅图像可以产生几组(octave)图像,一组图像包括几层(interval)图像。为了让尺度体现出连续性,相邻两层图像间的尺度为k倍的关系,同时相邻两组的同一层尺度为2倍的关系。

步骤S22:在不同尺度的图像上进行拉普拉斯运算,并求极值点,得到关键点;为了减少运算量, SIFT中进行了近似处理:

对应DOG算子,需要构建DOG金字塔(即构造差分高斯金字塔),通过高斯差分图像看出图像上的像素值变化情况。如果没有变化,也就没有特征。特征必须是变化尽可能多的点。关键点是由DOG空间的局部极值点组成的。为了寻找DoG函数的极值点,每一个像素点要和它所有的相邻点比较,看其是否比它的图像域和尺度域的相邻点大或者小。具体来说,中间的检测点和它同尺度的8个相邻点和上下相邻尺度对应的9×2个点共26个点比较,以确保在尺度空间和二维图像空间都检测到极值点。

步骤S23:为关键点赋予128维梯度方向,并利用关键点的周围的像素梯度方向直方图生成SIFT特征描述子。具体为:把8x8区域分成16个2x2区域,每个2x2区域生成一个8个方向向量的种子,那么一个特征点就有了16x8=128维向量信息了,就是生成了128维描述子。在计算好的特征点中,为每个特征点计算一个方向,依照这个方向作进一步的计算,利用关键点邻域像素的梯度方向分布特性为每个关键点指定方向参数,是算子具备旋转不变性。

上式为(x,y)处模值和方向的公式。L所用的尺度为关键点所在的尺度。至此,图像的关键点检测完毕,每个关键点有三个信息:位置、所处尺度、方向,由此确定一个SIFT特征区域。梯度直方图的范围是0~360度,其中每10度一个柱,总共36个柱。梯度直方图统计法的采用是为了确定关键点,统计以关键点为原点,一定区域内的图像像素点对关键点方向生成所做的贡献。直方图柱所代表的方向为像素点梯度方向,柱的长短代表了梯度幅值。随着距中心点越远的领域其对直方图的贡献也相应减小。

本实施例中,以关键点为中心的邻域窗口采样,并用直方图统计邻域像素的梯度方向。梯度直方图的范围是0~360度,每10度一个柱,总共36个柱。使用高斯函数对直方图进行平滑,减少突变的影响。直方图的峰值则代表了该关键点处邻域梯度的主方向,即作为该关键点的方向。

通过对关键点周围图像区域分块,计算快内梯度直方图,生成具有独特性的向量,这个向量是该区域图像信息的一种抽象,具有唯一性。

关键点赋予方向后就是关键点描述子,关键点描述子:descriptors一个 K-by-128 的矩阵x, 其中每行是针对找到的K个关键特征点(the K keypoints)的不变量描述子. 这个描述子(descriptor)是一个拥有128个数值并归一化为单位长度向量。

本实施例中,模板图像总共找到790个128维的关键点描述子。查询图像总共找到331个128维关键点描述子。

步骤S3:二值化SIFT关键点描述子,存储二值化SIFT关键点描述子为HASH地址码;具体包括以下两大步骤:

步骤S31。具体包括:将128维的SIFT关键点描述子二值化为128位的二进制码。首先假设一个128维的关键点描述子为,计算,

(4-2),

然后,128位的二进制码的每一位根据式(4-2)来计算得到:

(4-3),

M为设置的阈值,根据这个阈值来计算SIFT关键点描述子二值码。

先设初始阈值M=0,临时变量i=0,冲突项数量S=图像的SIFT关键点总数。按初始阈值M来根据式(4-2)计算得到SIFT关键点描述子的二值码,然后再由式(4-3)、(4-4)、(4-5)、(4-6)计算得到SIFT关键点描述子的HASH地址码。将得到的HASH地址码逐一比较,记录下冲突项的个数num,判断num是否比S小,若果num比S小,则i=M,S=num,然后将初始阈值M加0.0001,否则直接将初始阈值M加0.0001,重复这一操作一直到阈值M为1。循环结束后i就是最优的阈值,本实施例中就拿阈值M=i来进行二值化操作和HASH地址码计算。得到最优阈值以便进行二值化操作。

步骤S32.存储二值化SIFT关键点描述子为HASH地址码。首先,我们得到的SIFT关键点描述子的二值码为:。将这128位的SIFT关键点描述子的二值码按每8位划分,得到16个八位的子二值码[20]。每一个子二值码按式(4-3)来计算得到对应的:,再令(4-4),计算(4-5)

再计算H:(4-6),H就是关键点描述子的HASH地址码。

生成的HASH地址码范围为0-65535。有了HASH地址码之后,将对应的图像关键点信息存入HASH表里。每一个HASH地址码对应一条数据,首先,第一个字段设置为标志位Flag,初始值为0,表示该地址码没有存储SIFT关键点描述子,当有SIFT关键点描述子要存储在相应的地址码处时,Flag设置为1,表示已存有SIFT关键点描述子。第2~129个字段为128位的SIFT关键点描述子的二值码,第130位Sum表示地址码所对应的SIFT关键点描述子的冲突个数,初始为0,每存在一个冲突项,Sum+1,第131,132位则是该SIFT关键点描述子所对应的横坐标和纵坐标。

步骤S4:计算查询图像和模板图像的SIFT关键点描述子的汉明距离,根据汉明距离来判断查询图像与模板图像的SIFT关键点描述子匹配的相似度,返回相似度高的图像。

有了查询图像的HASH地址码,就能根据在模板图像的HASH表里查询该地址码的数据,首先先看Flag位的数值,若Flag为0,则表示此SIFT关键点描述子没有相匹配的点,若Flag为1,则表示该地址码存在相对应的SIFT关键点描述子,然后从HASH表中取出模板图像的SIFT关键点描述子的二值码,并与查询图像的SIFT关键点描述子的二值码计算得出它们之间的汉明距离,设置一个阈值T,将计算得的汉明距离与T比较,当汉明距离小于T时则认为这两个点匹配,否则认为不匹配。本实施例中的结果为,当T=10的时候效果最好,能够减少大量的错配点的同时保留较多的正配点,所以阈值T取10。到此为止,SIFT关键点描述子的匹配便完成了。

以上是本发明的较佳实施例,凡依本发明技术方案所作的改变,所产生的功能作用未超出本发明技术方案的范围时,均属于本发明的保护范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1