相似图像的识别方法和装置转让专利

申请号 : CN201110031701.8

文献号 : CN102622366B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 薛晖

申请人 : 阿里巴巴集团控股有限公司

摘要 :

本申请提供了一种相似图像的识别方法和装置,用于获取与输入图像的内容信息对应的图像签名,对图像签名进行哈希操作,在预先存储的哈希表中查询与哈希操作的结果相对应的表项,并在与查询得到的表项对应的候选图像中识别与输入图像相似的图像。本申请解决了现有图像识别技术中所存在的容错性问题,使得能够准确地识别出所需的相似图像。

权利要求 :

1.一种相似图像的识别方法,其特征在于包括:

获取与输入图像的内容信息对应的图像签名;

对所述图像签名进行哈希操作;

在预先存储的哈希表中查询与所述哈希操作的结果相对应的表项;以及在与查询得到的所述表项对应的候选图像中识别与所述输入图像相似的图像;

其中,对所述图像签名进行哈希操作的步骤包括:

分别使用L个局部哈希函数对所述图像签名进行哈希操作,得到L个第一哈希值,其中,L为自然数;以及使用一个全局哈希函数分别对所述L个第一哈希值进行哈希操作,得到L个第二哈希值;

其中,通过以下步骤获取所述与输入图像的内容信息对应的图像签名:将所述输入图像转化为灰度图像;将所述灰度图像分成N×N的子图像,并对每个所述子图像分别从M个方向上计算边缘直方图,得到N×N×M个计算结果,其中,所述N和M均为自然数;以及将所述灰度图像对应的N×N×M个计算结果组合成作为所述图像签名的N×N×M维向量。

2.根据权利要求1所述的方法,其特征在于,在预先存储的哈希表中查询与所述哈希操作的结果相对应的表项的步骤包括在每个所述第二哈希值对应的所述哈希表中查找是否存在记录有该第二哈希值的表项,并将查找到的所述表项所记录的图像添加到所述候选图像中,其中,所述哈希表中的每个表项记录了一个图像的哈希值和图像标识,或者,所述每个表项记录了一个图像的哈希值、该图像的图像标识以及图像签名。

3.根据权利要求2所述的方法,其特征在于,所述第二哈希值与所述哈希表的对应关系包括:第i个所述第二哈希值对应于第i个所述哈希表,i=1,…L。

4.根据权利要求1至3中任一项所述的方法,其特征在于,分别使用L个局部哈希函数对所述图像签名进行哈希操作的步骤包括:将所述图像签名转换成R维二进制向量,其中,R为自然数;

使用所述R维二进制向量生成L个所述局部哈希函数,其中,每个所述局部哈希函数由所述R维二进制向量中的一维或多维二进制向量生成;以及使用L个所述局部哈希函数对所述R维二进制向量进哈希操作。

5.根据权利要求4所述的方法,其特征在于,使用所述R维二进制向量中的一维或多维二进制向量生成一个局部哈希函数的步骤包括:设置所述局部哈希函数的输入参数为K;以及

随机从所述R维二进制向量中选取K维二进制向量,将所述K维二进制向量进行拼接作为所述局部哈希函数的返回值,其中,K

6.根据权利要求1至3中任一项所述的方法,其特征在于,在与查询得到的所述表项对应的候选图像中识别与所述输入图像相似的图像的步骤包括:计算所述输入图像的图像签名与每个所述候选图像的图像签名之间的空间距离;以及按照空间距离的大小来识别所述候选图像与所述输入图像的相似度,其中,空间距离越小的所述候选图像与所述输入图像的相似度越高。

7.根据权利要求6所述的方法,其特征在于,按照空间距离的大小来识别所述候选图像与所述输入图像的相似度之后,还包括按照所述空间距离的大小输出所述候选图像。

8.根据权利要求1所述的方法,其特征在于,在分别使用L个局部哈希函数对所述图像签名进行哈希操作之前,通过以下步骤预先建立L个哈希表:分别使用L个局部哈希函数对与每个待存储的图像的内容对应的图像签名进行哈希操作,得到L个第三哈希值,其中,L为自然数;

使用一个全局哈希函数分别对所述L个第三哈希值进行哈希操作,得到L个第四哈希值;以及将第j个第四哈希值以及该第四哈希值对应的图像标识和图像签名记录到第j个哈希表中,其中,j=1,…L。

9.一种相似图像的识别装置,位于图像服务器上,其特征在于,包括:获取单元,用于获取与输入图像的内容信息对应的图像签名;

哈希操作单元,用于对所述图像签名进行哈希操作;

查询单元,用于在预先存储的哈希表中查询与所述哈希操作的结果相对应的表项;以及识别单元,用于在与查询得到的所述表项对应的候选图像中识别与所述输入图像相似的图像;

其中,所述哈希操作单元包括:

第一哈希处理模块,用于分别使用L个局部哈希函数对所述图像签名进行哈希操作,得到L个第一哈希值,其中,L为自然数;以及第二哈希处理模块,用于使用一个全局哈希函数分别对所述L个第一哈希值进行哈希操作,得到L个第二哈希值;

其中,所述获取单元包括:转化模块,用于将所述输入图像转化为灰度图像;计算模块,用于将所述灰度图像分成N×N的子图像,并对每个所述子图像分别从M个方向上计算边缘直方图,得到N×N×M个计算结果,其中,所述N和M均为自然数;以及生成模块,用于将所述灰度图像对应的N×N×M个计算结果组合成作为所述图像签名的N×N×M维向量。

10.根据权利要求9所述的装置,其特征在于,所述查询单元包括:查找模块,用于在每个所述第二哈希值对应的所述哈希表中查找是否存在记录有该第二哈希值的表项,其中,所述哈希表中的每个表项记录了一个图像的哈希值和图像标识,或者,所述每个表项记录了一个图像的哈希值、该图像的图像标识以及图像签名;以及添加模块,用于在存在记录有该第二哈希值的表项时,将查找到的表项所记录的图像添加到所述候选图像中。

11.根据权利要求9或10所述的装置,其特征在于,所述第一哈希处理模块包括:转换子模块,用于将所述图像签名转换成R维二进制向量,其中,R为自然数;

生成子模块,用于使用所述R维二进制向量生成L个所述局部哈希函数,其中,每个所述局部哈希函数由所述R维二进制向量中的一维或多维二进制向量生成;以及哈希操作子模块,用于使用L个所述局部哈希函数对所述R维二进制向量进哈希操作。

12.根据权利要求11所述的装置,其特征在于,所述生成子模块包括:设置子模块,用于设置所述局部哈希函数的输入参数为K;以及

处理子模块,用于随机从所述R维二进制向量中选取K维二进制向量,将所述K维二进制向量进行拼接作为所述局部哈希函数的返回值,其中,K

13.根据权利要求9或10所述的装置,其特征在于,所述识别单元包括:计算模块,用于计算所述输入图像的所述图像签名与每个所述候选图像的图像签名之间的空间距离;以及识别模块,用于按照空间距离的大小来识别所述候选图像与所述输入图像的相似度,其中,空间距离越小的所述候选图像与所述输入图像的相似度越高。

14.根据权利要求13所述的装置,其特征在于,还包括输出单元,用于在按照空间距离的大小来识别所述候选图像与所述输入图像的相似度之后,按照所述空间距离的大小输出所述候选图像。

15.根据权利要求9所述的装置,其特征在于,还包括哈希表建立单元,用于在所述第一哈希操作模块分别使用L个局部哈希函数对与所述输入图像的内容对应的图像签名进行哈希操作之前,分别使用L个局部哈希函数对与每个待存储的图像的内容信息对应的图像签名进行哈希操作,得到L个第三哈希值,其中,L为自然数;使用一个全局哈希函数分别对所述L个第三哈希值进行哈希操作,得到L个第四哈希值;将第j个第四哈希值以及该第四哈希值对应的图像标识和图像签名记录到第j个哈希表中,其中,j=1,…L。

说明书 :

相似图像的识别方法和装置

技术领域

[0001] 本申请涉及多媒体图像识别技术领域,具体而言,涉及一种相似图像的识别方法和装置。

背景技术

[0002] 相似图像检索是近几年兴起的技术,属于多媒体识别的一种,其主要包含特征提取、索引构建、查询、相似度排序等主要步骤。如图1所示,在建立图像索引库时,用户A向图像服务器10上传待存储的图像,图像服务器10为该图像生成图像签名,并以该图像签名作为索引,以便于后续的检索查询。当需要识别相似图像时,用户B向图像服务器10请求相似图像检索,图像服务器10根据该图像的索引查询与该图像索引对应的相似图像。在图像服务器10查找到与用户B输入的图像相似的图像之后,向用户B返回相似的图像列表。
[0003] 目前在生成图像的图像签名时,常用的方法是在图像服务器10中对图片内容的二进制流进行哈希编码,作为唯一标识该图像的图像签名,然后将该图像签名常驻内存或存储在图像服务器10中的数据库或文件系统中。
[0004] 然而,上述现有技术的相似图像检索存在以下缺点:
[0005] 1)通用性较差
[0006] 对于同一副图片,即使不做任何修改,以不同的格式(bmp、jpeg、png、gif等等)保存,得到的图像签名值也有很大的差异;然而大部分情况下,从用户期望的角度来看,希望将两幅仅仅格式不同的图片作为相似图片。
[0007] 2)容错性问题
[0008] 由于冲突的原因,图像的二进制流的哈希编码不可能是唯一的,即存在这种情况,即便是两张完全不同的图片,也有可能会因为图像签名相同而被做为相同的图片提供给图像查询者。
[0009] 3)不适合用作近似检索
[0010] 传统的基于哈希编码的图片签名方式,由于没有利用图片本身的信息,因此只能用于精确检索,即查找和目标图片完全一样的图片,不适用作相似图片检索。
[0011] 针对相关技术中所存在的问题,目前尚未发现有效的解决方案。

发明内容

[0012] 本申请旨在提供一种相似图像的识别方法和装置,以解决现有技术中的图像识别方法所存在的容错性的问题。
[0013] 根据本申请的一个方面,提供了一种相似图像的识别方法,其包括:获取与输入图像的内容信息对应的图像签名;对该图像签名进行哈希操作;在预先存储的哈希表中查询与该哈希操作的结果相对应的表项;在与查询得到的该表项对应的候选图像中识别与该输入图像相似的图像。
[0014] 进一步地,通过以下步骤获取与输入图像的内容信息对应的图像签名:将输入图像转化为灰度图像;将灰度图像分成N×N的子图像,并对每个子图像分别从M个方向上计算边缘直方图,得到N×N×M个计算结果,其中,N和M均为自然数;将灰度图像对应的N×N×M个计算结果组合成作为图像签名的N×N×M维向量。
[0015] 进一步地,对图像签名进行哈希操作的步骤包括:分别使用L个局部哈希函数对与该图像签名进行哈希操作,得到L个第一哈希值,其中,L为自然数;使用一个全局哈希函数分别对L个第一哈希值进行哈希操作,得到L个第二哈希值。
[0016] 进一步地,在预先存储的哈希表中查询与哈希操作的结果相对应的表项的步骤包括:在每个第二哈希值对应的哈希表中查找是否存在记录有该第二哈希值的表项,其中,所述哈希表中的每个表项记录了一个图像的哈希值和图像标识,或者,所述每个表项记录了一个图像的哈希值、该图像的图像标识以及图像签名。
[0017] 进一步地,第二哈希值与哈希表的对应关系包括:第i个第二哈希值对应于第i个哈希表,i=1,...L。
[0018] 进一步地,分别使用L个局部哈希函数对图像签名进行哈希操作的步骤包括:将图像签名转换成R维二进制向量,其中,R为自然数;使用R维二进制向量生成L个局部哈希函数,其中,每个局部哈希函数由R维二进制向量中的一维或多维二进制向量生成;使用L个局部哈希函数对R维二进制向量进哈希操作。
[0019] 进一步地,使用R维二进制向量中的一维或多维二进制向量生成一个局部哈希函数的步骤包括:设置局部哈希函数的输入参数为K;随机从R维二进制向量中选取K维二进制向量,将K维二进制向量进行拼接作为局部哈希函数的返回值,其中,K<R。
[0020] 进一步地,在与查询得到的表项对应的候选图像中识别与输入图像相似的图像的步骤包括:计算输入图像的图像签名与每个候选图像的图像签名之间的空间距离;按照空间距离的大小来识别候选图像与输入图像的相似度,其中,空间距离越小的候选图像与输入图像的相似度越高。
[0021] 进一步地,按照空间距离的大小来识别候选图像与输入图像的相似度之后,还包括:按照空间距离的大小输出候选图像。
[0022] 进一步地,在分别使用L个局部哈希函数对图像签名进行哈希操作之前,通过以下步骤预先建立L个哈希表:分别使用L个局部哈希函数对与每个待存储的图像的内容对应的图像签名进行哈希操作,得到L个第三哈希值,其中,L为自然数;使用一个全局哈希函数分别对L个第三哈希值进行哈希操作,得到L个第四哈希值;将第j个第四哈希值以及该第四哈希值对应的图像标识和图像签名记录到第j个哈希表中,其中,j=1,...L。
[0023] 根据本申请的另一方面,提供了一种相似图像的识别装置,位于图片服务器上,其包括:获取单元,用于获取与输入图像的内容信息对应的图像签名;哈希操作单元,用于对图像签名进行哈希操作;查询单元,用于在预先存储的哈希表中查询与哈希操作的结果相对应的表项;识别单元,用于在与查询得到的表项对应的候选图像中识别与输入图像相似的图像。
[0024] 进一步地,获取单元包括:转化模块,用于将输入图像转化为灰度图像;计算模块,用于将灰度图像分成N×N的子图像,并对每个子图像分别从M个方向上计算边缘直方图,得到N×N×M个计算结果,其中,N和M均为自然数;生成模块,用于将灰度图像对应的N×N×M个计算结果组合成作为图像签名的N×N×M维向量。
[0025] 进一步地,哈希操作单元包括:第一哈希处理模块,用于分别使用L个局部哈希函数对图像签名进行哈希操作,得到L个第一哈希值,其中,L为自然数;第二哈希处理模块,用于使用一个全局哈希函数分别对L个第一哈希值进行哈希操作,得到L个第二哈希值。
[0026] 进一步地,查询单元包括:查找模块,用于在每个第二哈希值对应的哈希表中查找是否存在记录有该第二哈希值的表项,其中,所述哈希表中的每个表项记录了一个图像的哈希值和图像标识,或者,所述每个表项记录了一个图像的哈希值、该图像的图像标识以及图像签名;添加模块,用于在存在记录有该第二哈希值的表项时,将查找到的表项所记录的图像添加到候选图像中。
[0027] 进一步地,第一哈希处理模块包括:转换子模块,用于将图像签名转换成R维二进制向量,其中,R为自然数;生成子模块,用于使用R维二进制向量生成L个局部哈希函数,其中,每个局部哈希函数由R维二进制向量中的一维或多维二进制向量生成;哈希操作子模块,用于使用L个局部哈希函数对R维二进制向量进哈希操作。
[0028] 进一步地,生成子模块包括:设置子模块,用于设置局部哈希函数的输入参数为K;处理子模块,用于随机从R维二进制向量中选取K维二进制向量,将K维二进制向量进行拼接作为局部哈希函数的返回值,其中,K<R。
[0029] 进一步地,识别单元包括:计算模块,用于计算输入图像的图像签名与每个候选图像的图像签名之间的空间距离;识别模块,用于按照空间距离的大小来识别候选图像与输入图像的相似度,其中,空间距离越小的候选图像与输入图像的相似度越高。
[0030] 进一步地,还包括:输出单元,用于在按照空间距离的大小来识别该候选图像与输入图像的相似度之后,按照空间距离的大小输出候选图像。
[0031] 进一步地,还包括:哈希表建立单元,用于在第一哈希操作模块分别使用L个局部哈希函数对与输入图像的内容对应的图像签名进行哈希操作之前,分别使用L个局部哈希函数对与每个待存储的图像的内容信息对应的图像签名进行哈希操作,得到L个第三哈希值,其中,L为自然数;使用一个全局哈希函数分别对L个第三哈希值进行哈希操作,得到L个第四哈希值;将第j个第四哈希值以及第四哈希值对应的图像标识和图像签名记录到第j个哈希表中,其中,j=1,...L。
[0032] 在本申请中,利用图像本身的内容作为图像签名,其签名的相似度取决于图像本身的相似度,即越是相似的图像,其签名的相似度也越大,或者说对应的空间距离(海明距离或欧氏距离)越短,这样,仅仅是存储格式不同的图像具有完全相同图像签名值,从而解决了现有技术中的图像识别方法所存在的容错性的问题,使得能够准确地识别出所需的相似图像。在此基础上,本申请还提出了基于局部敏感哈希技术的海量相似图像索引方案,将检索的时间复杂度降低到亚线性级别,并且能将结果按照相似程度进行排序输出。此外,采用边缘直方图的统计值作为图像签名的基础特征,配合图像分割和基于人眼视觉敏感程度的非均匀量化技术,对不同颜色、不同缩放比例、局部模糊以及失真均有很好的适应性。

附图说明

[0033] 此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
[0034] 图1是根据相关技术的相似图像的识别系统的一种结构示意图;
[0035] 图2是根据本申请实施例的相似图像的识别系统的一种优选结构示意图;
[0036] 图3是根据本申请实施例的相似图像的识别装置的一种优选结构示意图;
[0037] 图4是根据本申请实施例的相似图像的识别装置的另一种优选结构示意图;
[0038] 图5是根据本申请实施例的相似图像的识别方法的一种优选流程图;
[0039] 图6是根据本申请实施例的图像签名获取方法的一种优选流程图;
[0040] 图7是根据本申请实施例的图像索引构建方法的一种优选流程图;
[0041] 图8是根据本申请实施例的相似图像查询方法的一种优选流程图。

具体实施方式

[0042] 下文中将参考附图并结合实施例来详细说明本申请。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
[0043] 实施例1
[0044] 如图2所示,本优选的实施例提供了一种相似图像的识别系统,其包括如下:上传服务器202、图像数据库装置204、索引服务器206、图像计算服务器208、以及图像检索前台服务器210。
[0045] 在建立图像索引库时,用户A向上传服务器202上传待存储的图像,上传服务器202计算该图像的图像签名,并将该图像的图像签名发送给图像数据库装置204。本申请实施例也可以通过爬虫系统从网络中抓取图像后存储于上传服务器202中,本申请对此并不作限定。优选的,上传服务器202利用图像自身的内容信息(例如,图像的元数据,比如色彩、纹理等,而非字节流)来计算该图像的图像签名,从而大大降低了发生冲突的概率。
[0046] 图像数据库装置204在接收到该图像的图像签名之后,利用局部哈希函数对该图像签名进行哈希操作,将结果作为索引信息发送给索引服务器。
[0047] 当需要识别相似图像时,用户B向图像检索前台服务器210请求相似图像检索,图像检索前台服务器210将用户B输入的图像发送给图像计算服务器208,以请求返回相似的图像或图像列表。图像计算服务器208在接收到用户B输入的图像之后,向索引服务器206查询与该输入的图像相似的图像的标识(ID),其中,相似的图像的哈希值与输入图像的哈希值相同。具体的查找方法可以为:利用用户B输入的图像自身的内容信息来构建用于查询的图像签名,在索引服务器206中查询与该图像签名对应的相似图像。
[0048] 在图像计算服务器208查找到与用户B输入的图像相似的图像之后,向图像检索前台服务器210返回相似的图像或图像列表,以便显示给用户B。
[0049] 作为一种可选的实施方式,各个服务器所执行的功能可以在一个服务器上实现,例如,如图3所示的相似图像的识别装置,其位于图像服务器上,其包括:获取单元302,用于获取与输入图像的内容信息对应的图像签名;哈希操作单元304,用于对该图像签名进行哈希操作;查询单元306,用于在预先存储的哈希表中查询与哈希操作的结果相对应的表项;识别单元308,用于在与查询得到的表项对应的候选图像中识别与输入图像相似的图像。
[0050] 在本优选的实施例中,识别装置利用图像本身的内容作为图像签名,其签名的相似度取决于图像本身的相似度,即越是相似的图像,其签名的相似度也越大,或者说对应的空间距离(海明距离或欧氏距离)越短,这样,仅仅是存储格式不同的图像具有完全相同图像签名值,从而解决了现有技术中的图像识别方法所存在的容错性的问题,使得能够准确地识别出所需的相似图像。
[0051] 优选的,如图4所示,获取单元302包括:转化模块3021,用于将输入图像转化为灰度图像;计算模块3022,用于将灰度图像分成N×N的子图像,并对每个子图像分别从M个方向上计算边缘直方图,得到N×N×M个计算结果,其中,N和M均为自然数;生成模块3023,用于将灰度图像对应的N×N×M个计算结果组合成作为图像签名的N×N×M维向量。
优选的,还可以对N×N×M维向量采用基于人眼视觉敏感程度的非均匀量化技术。在本优选的实施例中,利用图像自身的内容信息来计算图像的图像签名,从而大大降低了发生冲突的概率。此外,采用边缘直方图的统计值作为图像签名的基础特征,配合图像分割以及基于人眼视觉敏感程度的非均匀量化技术,对不同颜色、不同缩放比例、局部模糊以及失真均有很好的适应性。需要注意的是,分割的方式仅是一种示例,本申请不仅限于此,例如,将灰度图像分成N×P的子图像。作为一种最佳的方式,M可以等于5。
[0052] 优选的,计算模块3022对每个子图像分别从5个方向上计算边缘直方图的步骤包括:对于每个子图像中的每个图像块而言,计算该图像块五个方向上的梯度值,选取梯度值最大的方向作为该图像块的待统计方向,在一个子图像中统计上述五个方向作为待统计方向的次数,并将得到的统计值作为该子图像的边缘直方图。
[0053] 举例来说,假设一个子图像具有1000个图像块,五个方向分别为:A,B,C,D,E,其中,100个图像块的待统计方向为A,200个图像块的待统计方向为B,300个图像块的待统计方向为C,400个图像块的待统计方向为D,0个图像块的待统计方向为E,则该子图像的统计值(或对应的边缘直方图)为向量(100,200,300,400,0)。
[0054] 优选的,哈希操作单元304包括:第一哈希处理模块3041,用于分别使用L个局部哈希函数对该图像签名进行哈希操作,得到L个第一哈希值,其中,L为自然数;第二哈希处理模块3042,用于使用一个全局哈希函数分别对L个第一哈希值进行哈希操作,得到L个第二哈希值。在本优选的实施例中,采用了基于局部敏感哈希技术的海量相似图像索引方案,将检索的时间复杂度降低到亚线性级别。
[0055] 优选的,查询单元306包括:查找模块3061,用于在每个第二哈希值对应的哈希表中查找是否存在记录有该第二哈希值的表项,其中,上述哈希表中的每个表项记录了一个图像的哈希值和图像标识,或者,所述每个表项记录了一个图像的哈希值、该图像的图像标识以及图像签名;添加模块3062,用于在存在记录有第二哈希值的表项时,将查找到的表项所记录的图像添加到候选图像中。在本优选的实施例中,采用了查找方式来查找对应的候选图像,提高了查找的准确性和效率。
[0056] 优选的,第二哈希值与哈希表的对应关系包括但不限于:第i个第二哈希值对应于第i个哈希表,i=1,...L。例如,第二哈希值与哈希表的对应关系还可以为:第i个第二哈希值对应于第L-i+1个哈希表,i=1,...L。
[0057] 优选的,第一哈希处理模块3041包括:转换子模块,用于将图像签名转换成R维二进制向量,其中,R为自然数;生成子模块,用于使用R维二进制向量生成L个局部哈希函数,其中,每个局部哈希函数由R维二进制向量中的一维或多维二进制向量生成;哈希操作子模块,用于使用L个局部哈希函数对R维二进制向量进哈希操作。在本优选的实施例中,采用特定的方式来进行哈希操作,大大降低了发生冲突的概率。需要注意的是,第一哈希处理模块的处理过程只是一种示例,本申请不仅限于此。
[0058] 优选的,生成子模块包括:设置子模块,用于设置局部哈希函数的输入参数为K;处理子模块,用于随机从R维二进制向量中选取K维二进制向量,将K维二进制向量进行拼接作为局部哈希函数的返回值,其中,K<R。在本优选的实施例中,采用特定的方式来生成局部哈希函数,进一步降低了发生冲突的概率。需要注意的是,生成子模块的处理过程只是一种示例,本申请不仅限于此。
[0059] 优选的,识别单元308包括:计算模块3081,用于计算输入图像的图像签名与每个候选图像的图像签名之间的空间距离;识别模块3082,用于按照空间距离的大小来识别候选图像与输入图像的相似度,其中,空间距离越小的候选图像与输入图像的相似度越高。在本优选的实施例中,通过采用空间距离来识别相似图像,大大提高了识别的准备性。优选的,本实施例中的空间距离可以包括但不限于:海明距离和欧式距离。
[0060] 优选的,如图3所示的相似图像的识别装置还包括:输出单元310,用于在按照空间距离的大小来识别候选图像与输入图像的相似度之后,按照空间距离的大小输出候选图像。在本优选的实施例中,通过按照相似度来输出相似图像,大大提高了用户的体验度。
[0061] 优选的,如图3所示的互联网相似图像的识别装置还包括:哈希表建立单元312,用于在第一哈希操作模块分别使用L个局部哈希函数对与输入图像的内容对应的图像签名进行哈希操作之前,分别使用L个局部哈希函数对与每个待存储的图像的内容信息对应的图像签名进行哈希操作,得到L个第三哈希值,其中,L为自然数;使用一个全局哈希函数分别对L个第三哈希值进行哈希操作,得到L个第四哈希值;将第j个第四哈希值以及第四哈希值对应的图像标识和图像签名记录到第j个哈希表中,其中,j=1,...L。在本优选的实施例中,采用了方式来建立存储图像索引的哈希表,提高了查找的准确性和效率。
[0062] 实施例2
[0063] 基于图2所示的识别系统以及图3和图4所示的识别装置,本优选的实施例还提供了一种相似图像的识别方法,如图5所示,识别方法包括如下步骤:
[0064] S502,获取与输入图像的内容信息对应的图像签名;优选的,在图2所示的识别系统中,可以由图像检索前台服务器210获取用户B输入的输入图像的内容信息,并将其发送给图像计算服务器208,图像计算服务器208获取与输入图像的内容信息对应的图像签名。优选的,在图3所示的识别装置中,由获取单元302获取与输入图像的内容信息对应的图像签名。
[0065] 在本优选的实施例中,图像检索前台服务器210或获取单元302可以包括用于接收用户输入的图像的接收模块(例如,USB传输接口,蓝牙传输接口,或者,以太网传输接口等),以及,图像计算服务器208或获取单元302可以包括用于计算输入图像的内容信息对应的图像签名的处理模块(例如,微处理器MCU,或FPGA等)。可以理解的是,关于执行“获取与输入图像的内容信息对应的图像签名”的主体并不仅限于此,可以根据实际需求来灵活配置。
[0066] S504,对图像签名进行哈希操作;优选的,在图2所示的识别系统中,可以由图像计算服务器208对图像签名进行哈希操作。优选的,在图3所示的识别装置中,可以由哈希操作单元304对图像签名进行哈希操作。在本优选的实施例中,哈希操作单元304可以为微处理器MCU,或FPGA等,作为一种优选的方式,哈希操作单元304与获取单元302所执行的功能可以由同一个处理器来实现。可以理解的是,关于执行“对图像签名进行哈希操作”的主体并不仅限于此,还可以根据实际需求来灵活配置。
[0067] S506,在预先存储的哈希表中查询与哈希操作的结果相对应的表项;优选的,在图2所示的识别系统中,可以由图像计算服务器208向索引服务器206中存储的哈希表中查询与哈希操作的结果相对应的表项。优选的,在图3所示的识别装置中,可以由查询单元306向存储由哈希表的数据库查询与哈希操作的结果相对应的表项。可以理解的是,关于执行“在预先存储的哈希表中查询与哈希操作的结果相对应的表项”的主体并不仅限于此,还可以根据实际需求来灵活配置。
[0068] 在本优选的实施例中,图像计算服务器208可以但不限于按照预定的局域网传输协议与索引服务器206通信,查询单元306可以但不限于通过内部总线与数据库进行通信。
[0069] S508,在与查询得到的表项对应的候选图像中识别与输入图像相似的图像。优选的,在图2所示的识别系统中,图像计算服务器208可以根据索引服务器206返回的相似图像的ID获取对应的候选图像(可以在本地获取,也可以从第三方设备上获取),并在与查询得到的表项对应的候选图像中识别与输入图像相似的图像。优选的,在图3所示的识别装置中,识别单元308可以根据查询单元306返回的相似图像的ID获取对应的候选图像(可以在本地获取,也可以从第三方设备上获取),并在与查询得到的表项对应的候选图像中识别与输入图像相似的图像。可以理解的是,关于执行“在与查询得到的表项对应的候选图像中识别与输入图像相似的图像”的主体并不仅限于此,还可以根据实际需求来灵活配置。
[0070] 在本优选的实施例中,识别装置利用图像本身的内容作为图像签名,其签名的相似度取决于图像本身的相似度,即越是相似的图像,其签名的相似度也越大,或者说对应的空间距离(海明距离或欧氏距离)越短,这样,仅仅是存储格式不同的图像具有完全相同图像签名值,从而解决了现有技术中的图像识别方法所存在的容错性的问题,使得能够准确地识别出所需的相似图像。
[0071] 优选的,通过以下步骤获取与输入图像的内容信息对应的图像签名:可以但不限于由图4所示的转化模块3021将输入图像转化为灰度图像;可以但不限于由图4所示的计算模块3022将灰度图像分成N×N的子图像,并对每个子图像分别从M个方向上计算边缘直方图,得到N×N×M个计算结果,其中,N和M均为自然数;可以但不限于由图4所示的生成模块3023将灰度图像对应的N×N×M个计算结果组合成作为图像签名的N×N×M维向量。优选的,还可以对N×N×M维向量采用基于人眼视觉敏感程度的非均匀量化技术。在本优选的实施例中,利用图像自身的内容信息来计算图像的图像签名,从而大大降低了发生冲突的概率。此外,本优选的实施例采用边缘直方图的统计值作为图像签名的基础特征,配合图像分割以及基于人眼视觉敏感程度的非均匀量化技术,对不同颜色、不同缩放比例、局部模糊以及失真均有很好的适应性。需要注意的是,分割的方式仅是一种示例,本申请不仅限于此,例如,将灰度图像分成N×P的子图像。作为一种最佳的方式,M可以等于5。
[0072] 优选的,计算模块3022对每个子图像分别从5个方向上计算边缘直方图的步骤包括:对于每个子图像中的每个图像块而言,计算该图像块五个方向上的梯度值,选取梯度值最大的方向进行作为该图像块的待统计方向,在一个子图像中统计上述五个方向作为待统计方向的次数,并将得到的统计值作为该子图像的边缘直方图。
[0073] 举例来说,假设一个子图像具有1000个图像块,五个方向分别为:A,B,C,D,E,其中,100个图像块的待统计方向为A,200个图像块的待统计方向为B,300个图像块的待统计方向为C,400个图像块的待统计方向为D,0个图像块的待统计方向为E,则该子图像的统计值(或对应的边缘直方图)为向量(100,200,300,400,0)。
[0074] 在本优选的实施例中,转化模块3021、计算模块3022以及生成模块3023可以但不限于由同一个微处理器MCU来实现。
[0075] 优选的,对图像签名进行哈希操作的步骤包括:可以但不限于由图4所示的第一哈希处理模块3041分别使用L个局部哈希函数对图像签名进行哈希操作,得到L个第一哈希值,其中,L为自然数;可以但不限于由图4所示的第二哈希处理模块3042使用一个全局哈希函数分别对L个第一哈希值进行哈希操作,得到L个第二哈希值。在本优选的实施例中,采用了基于局部敏感哈希技术的海量相似图像索引方案,将检索的时间复杂度降低到亚线性级别。
[0076] 在本优选的实施例中,第一哈希处理模块3041和第二哈希处理模块3042可以但不限于由同一个编码芯片或微处理器MCU来实现。
[0077] 优选的,在预先存储的哈希表中查询与哈希操作的结果相对应的表项的步骤包括:可以但不限于由图4所示的查找模块3061在每个第二哈希值对应的哈希表中查找是否存在记录有第二哈希值的表项,其中,所述哈希表中的每个表项记录了一个图像的哈希值和图像标识,或者,所述每个表项记录了一个图像的哈希值、该图像的图像标识以及图像签名;若存在,则可以但不限于由图4所示的添加模块3062将查找到的表项所记录的图像添加到候选图像中。在本优选的实施例中,采用了查找方式来查找对应的候选图像,提高了查找的准确性和效率。
[0078] 在本优选的实施例中,查找模块3061和添加模块3062可以但不限于由同一个微处理器MCU来实现。
[0079] 优选的,第二哈希值与哈希表的对应关系包括但不限于:第i个第二哈希值对应于第i个哈希表,i=1,...L。例如,第二哈希值与哈希表的对应关系还可以为:第i个第二哈希值对应于第L-i+1个哈希表,i=1,...L。
[0080] 优选的,分别使用L个局部哈希函数对图像签名进行哈希操作的步骤包括:可以但不限于由图4所示的第一哈希处理模块3041将图像签名转换成R维二进制向量,其中,R为自然数;可以但不限于由图4所示的第一哈希处理模块3041使用R维二进制向量生成L个局部哈希函数,其中,每个局部哈希函数由R维二进制向量中的一维或多维二进制向量生成;可以但不限于由图4所示的第一哈希处理模块3041使用L个局部哈希函数对R维二进制向量进哈希操作。在本优选的实施例中,采用特定的方式来进行哈希操作,大大降低了发生冲突的概率。需要注意的是,哈希操作的过程只是一种示例,本申请不仅限于此。
[0081] 优选的,使用R维二进制向量中的一维或多维二进制向量生成一个局部哈希函数的步骤包括:可以但不限于由图4所示的第一哈希处理模块3041设置局部哈希函数的输入参数为K;可以但不限于由图4所示的第一哈希处理模块3041随机从R维二进制向量中选取K维二进制向量,将K维二进制向量进行拼接作为局部哈希函数的返回值,其中,K<R。在本优选的实施例中,采用特定的方式来生成局部哈希函数,进一步降低了发生冲突的概率。需要注意的是,生成一个局部哈希函数的步骤只是一种示例,本申请不仅限于此。
[0082] 优选的,在与查询得到的表项对应的候选图像中识别与输入图像相似的图像的步骤包括:可以但不限于由图4所示的计算模块3081计算输入图像的图像签名与每个候选图像的图像签名之间的空间距离;可以但不限于由图4所示的识别模块3082按照空间距离的大小来识别候选图像与输入图像的相似度,其中,空间距离越小的候选图像与输入图像的相似度越高。在本优选的实施例中,通过采用空间距离来识别相似图像,大大提高了识别的准备性。优选的,本实施例中的空间距离可以包括但不限于:海明距离和欧式距离。
[0083] 在本优选的实施例中,计算模块3081和识别模块3082可以但不限于由同一个微处理器MCU来实现。
[0084] 优选的,按照空间距离的大小来识别候选图像与输入图像的相似度之后,本优选实施例的识别方法还包括:可以但不限于由图3所示的输出单元310按照空间距离的大小输出候选图像。在本优选的实施例中,通过按照相似度来输出相似图像,大大提高了用户的体验度。
[0085] 在本优选的实施例中,输出单元310可以但不限于为蓝牙传输模块,或者,红外传输模块,或者,以太网传输模块。
[0086] 优选的,在分别使用L个局部哈希函数对图像签名进行哈希操作之前,通过以下步骤预先建立L个哈希表:可以但不限于由图3所示的哈希表建立单元312分别使用L个局部哈希函数对与每个待存储的图像的内容对应的图像签名进行哈希操作,得到L个第三哈希值,其中,L为自然数;可以但不限于由图3所示的哈希表建立单元312使用一个全局哈希函数分别对L个第三哈希值进行哈希操作,得到L个第四哈希值;可以但不限于由图3所示的哈希表建立单元312将第j个第四哈希值以及第四哈希值对应的图像标识和图像签名记录到第j个哈希表中,其中,j=1,...L。在本优选的实施例中,采用了方式来建立存储图像索引的哈希表,提高了查找的准确性和效率。
[0087] 在本优选的实施例中,哈希表建立单元312可以但不限于由同一个微处理器MCU来实现。
[0088] 基于以上的识别系统和装置以及识别方法,以下结合附图来具体描述识别方法中的图像签名获取方法、图像索引构建方法以及相似图像查询方法。
[0089] 如图6所示,图像签名获取方法(也称特征提取阶段)包括从图像中提取元数据信息作为唯一标识图像本身的签名,本优选的实施例采用基于边缘直方图的纹理特征来生成签名,具体步骤如下:
[0090] S602,可以但不限于由图4所示的转化模块3021将原始图像转化为灰度图像,以期到最终得到的结果对颜色、光照的改变不敏感;
[0091] S604,可以但不限于由图4所示的计算模块3022将灰度图像分割成N×N的子图像;
[0092] S606,可以但不限于由图4所示的计算模块3022把S604中处理完毕的子图像进一步分割为固定数目的一系列图像块,每个图像块的面积随着原始图像的面积变化而变化;
[0093] S608,可以但不限于由图4所示的计算模块3022计算每个子图像的五个方向上的边缘直方图。具体地,对于每个子图像中的每个图像块而言,计算该图像块五个方向上的梯度值,选取梯度值最大的方向进行作为该图像块的待统计方向,在一个子图像中统计上述五个方向作为待统计方向的次数,并将得到的统计值作为该子图像的边缘直方图。
[0094] 举例来说,假设一个子图像具有1000个图像块,上述五个方向分别为:A,B,C,D,E,其中,100个图像块的待统计方向为A,200个图像块的待统计方向为B,300个图像块的待统计方向为C,400个图像块的待统计方向为D,0个图像块的待统计方向为E,则该子图像的统计值(或对应的边缘直方图)为向量(100,200,300,400,0)。
[0095] S610,可以但不限于由图4所示的生成模块3023将各个子图像的统计值(即向量)拼接成一个多维向量作为原始图像的签名。假设按照N=4进行切分,原始图像的签名最终会以一个4×4×5=80维的向量来表示。
[0096] S612,考虑到人眼视觉对亮度敏感程度的非均匀性,采用非线性量化的方式,可以但不限于由图4所示的生成模块3023对S610中得到的80维整型向量进行量化压缩,以达到较高的空间利用率。举例来说,使用0-7之间的8个数字进行量化,最后得到的单个签名所占空间的大小为80×3=240bit,也就是30个字节,相比量化之前节约了90%以上的存储空间。
[0097] S614,将压缩后的结果作为图像签名。
[0098] 当然,上述S612步骤中的压缩处理是一种优选的方式,本发明也可以直接将S610得到的80维向量来作为该图像的图像签名。
[0099] 在本优选的实施例中,转化模块3021、计算模块3022以及生成模块3023可以但不限于由同一个微处理器MCU来实现。
[0100] 如图7所示,图像索引构建方法(也称为索引构建阶段)主要包括针对特征提取阶段所获得的图像签名,实现高维向量的K近似检索,本优选实施例采用局部敏感哈希来实现,具体步骤如下:
[0101] S702,可以但不限于由图4所示的第一哈希处理模块3041将特征提取阶段所获的向量标识转化为海明空间中的高维二进制向量(即每一维仅为1或0),例如,假设某一维的向量值为X,最大值为C,则向量在海明空间表示为连续的X个1紧跟C-X个0的C维二进制向量。
[0102] S704,可以但不限于由图4所示的第一哈希处理模块3041定义如下的哈希函数G,随机选取S702中目标向量的K维二进制向量,将结果拼接起来作为返回值。目标向量之间相似度越大,产生的相同哈希值相概率越大。
[0103] S706,为降低近似检索的误差,可以但不限于由图4所示的第一哈希处理模块3041利用L个S704中随机生成的哈希函数,将其分别作用在S702中提取的高维向量中;
[0104] S708,可以但不限于由图4所示的第二哈希处理模块3042对S706中的结果使用传统的哈希函数(例如md5)再次哈希;
[0105] S710,可以但不限于由图4所示的第二哈希处理模块3042将S708中的哈希结果作为键、图片的唯一标识(ID)作为值存放存在对应的L个哈希表当中。优选的,相同的图像签名会被放在同一个桶中去,不同的图像签名,则有较大概率放到不同的桶中去。
[0106] 在本优选的实施例中,第一哈希处理模块3041和第二哈希处理模块3042可以但不限于由同一个编码芯片或微处理器MCU来实现。
[0107] 优选的,选择不同K与L的会在很大程度上影响检索的准确率与召回率,一般通过事先的模拟实验进行预估。最后生成的索引结构,在硬件允许的条件下,可以考虑常驻内存以提高检索效率;在海量样本库的情况下,也可以考虑将索引文件持久化到本地磁盘或者分布式的处理方式。
[0108] 如图8所示,相似图像查询方法(也称为查询阶段)主要包括针对输入的图像进行处理,获得其边缘直方图的签名,并在样本库中查询出相似图像的过程,其具体步骤如下:
[0109] S802,可以但不限于由图4所示的获取单元302采用图6所示的方法计算输入图像的签名值;
[0110] S804-S810,根据S802中得到的签名值,可以但不限于由图4所示的哈希操作单元304采用图7所示的图像索引构建方法,将L个哈希函数作用在该签名上,再计算md5哈希过后的值,可以但不限于由图4所示的查询单元306分别将计算得到的结果作为键在L个哈希表中查询;
[0111] S812,可以但不限于由图4所示的查询单元306将查询得到的多个结果所对应的图像添加到候选图像队列中;
[0112] S814,针对候选图像队列中的每一个签名值,可以但不限于由图4所示的识别单元308计算其与输入图像的签名值的空间距离(海明距离或者欧氏距离),其值的大小决定了候选图片与输入图片的相似度;
[0113] S816,可以但不限于由图3所示的输出单元310按照距离的大小进行排序输出。由于候选队列中图像签名的数量与样本库中签名的数量相比,已大大减少,因此与现有技术相比,计算的成本或开销也大为减少。最后得到的结果集就是与目标图像相似、并按照相似度排序的图像集。
[0114] 在本优选的实施例中,哈希操作单元304可以为微处理器MCU,或FPGA等,作为一种优选的方式,哈希操作单元304与获取单元302所执行的功能可以由同一个处理器来实现。此外,在本优选的实施例中,查询单元306可以但不限于通过内部总线与保存了哈希表的数据库进行通信,查询单元306与识别单元308所执行的功能可以由同一个处理器来实现。
[0115] 从以上的描述中,可以看出,本申请实现了如下技术效果:
[0116] 在本申请中,利用图像本身的内容作为图像签名,其签名的相似度取决于图像本身的相似度,即越是相似的图像,其签名的相似度也越大,或者说对应的空间距离(海明距离或欧氏距离)越短,这样,仅仅是存储格式不同的图像具有完全相同图像签名值,从而解决了现有技术中的图像识别方法所存在的容错性的问题,使得能够准确地识别出所需的相似图像。在此基础上,本申请还提出了基于局部敏感哈希技术的海量相似图像索引方案,将检索的时间复杂度降低到亚线性级别,并且能将结果按照相似程度进行排序输出。此外,采用边缘直方图的统计值作为图像签名的基础特征,配合图像分割和基于人眼视觉敏感程度的非均匀量化技术,对不同颜色、不同缩放比例、局部模糊以及失真均有很好的适应性。
[0117] 显然,本领域的技术人员应该明白,本申请的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请不限制于任何特定的硬件和软件结合。
[0118] 以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。