图像处理——相似图像检索

转载 2015年11月18日 11:04:41

作者:阮一峰

转自:http://www.ruanyifeng.com/blog/2011/07/principle_of_similar_image_search.html

上个月,Google把"相似图片搜索"正式放上了首页。

你可以用一张图片,搜索互联网上所有与它相似的图片。点击搜索框中照相机的图标。

一个对话框会出现。

你输入网片的网址,或者直接上传图片,Google就会找出与其相似的图片。下面这张图片是美国女演员Alyson Hannigan。

上传后,Google返回如下结果:

类似的"相似图片搜索引擎"还有不少,TinEye甚至可以找出照片的拍摄背景。

==========================================================

这种技术的原理是什么?计算机怎么知道两张图片相似呢?

根据Neal Krawetz博士的解释,原理非常简单易懂。我们可以用一个快速算法,就达到基本的效果。

这里的关键技术叫做"感知哈希算法"(Perceptual hash algorithm),它的作用是对每张图片生成一个"指纹"(fingerprint)字符串,然后比较不同图片的指纹。结果越接近,就说明图片越相似。

下面是一个最简单的实现:

第一步,缩小尺寸。

将图片缩小到8x8的尺寸,总共64个像素。这一步的作用是去除图片的细节,只保留结构、明暗等基本信息,摒弃不同尺寸、比例带来的图片差异。

 

第二步,简化色彩。

将缩小后的图片,转为64级灰度。也就是说,所有像素点总共只有64种颜色。

第三步,计算平均值。

计算所有64个像素的灰度平均值。

第四步,比较像素的灰度。

将每个像素的灰度,与平均值进行比较。大于或等于平均值,记为1;小于平均值,记为0。

第五步,计算哈希值。

将上一步的比较结果,组合在一起,就构成了一个64位的整数,这就是这张图片的指纹。组合的次序并不重要,只要保证所有图片都采用同样次序就行了。

 =  = 8f373714acfcf4d0

得到指纹以后,就可以对比不同的图片,看看64位中有多少位是不一样的。在理论上,这等同于计算"汉明距离"(Hamming distance)。如果不相同的数据位不超过5,就说明两张图片很相似;如果大于10,就说明这是两张不同的图片。

具体的代码实现,可以参见Wote用python语言写的imgHash.py。代码很短,只有53行。使用的时候,第一个参数是基准图片,第二个参数是用来比较的其他图片所在的目录,返回结果是两张图片之间不相同的数据位数量(汉明距离)。

这种算法的优点是简单快速,不受图片大小缩放的影响,缺点是图片的内容不能变更。如果在图片上加几个文字,它就认不出来了。所以,它的最佳用途是根据缩略图,找出原图。

实际应用中,往往采用更强大的pHash算法和SIFT算法,它们能够识别图片的变形。只要变形程度不超过25%,它们就能匹配原图。这些算法虽然更复杂,但是原理与上面的简便算法是一样的,就是先将图片转化成Hash字符串,然后再进行比较。

LIRe图像检索:CEDD算法原理与源码分析

颜色和边缘方向性描述符(Color and EdgeDirectivity Descriptor,CEDD),CEDD具有抽取特征速度较快,特征描述符占用空间较小的优势。下面就对CEDD原理进行详细的...
  • DaveBobo
  • DaveBobo
  • 2017年04月18日 16:52
  • 1571

CEDD图像检索算法

颜色和边缘的方向性描述符(Color and Edge Directivity Descriptor,CEDD) 本文节选自论文《Android手机上图像分类技术的研究》。 ...
  • u013166209
  • u013166209
  • 2017年06月17日 15:43
  • 313

用 Matlab GUI搭建一个简单的CBIR图像检索系统(一)

基于内容的图像检索过程如下,系统包括图像内容的特征提取、相似度比较、人机接口以及相关反馈等组成部分。CBIR系统的工作过程如下: (1)首先通过对图像数据库这种图像的图像数据进行特征提取,构成图...
  • SkyjunXiang
  • SkyjunXiang
  • 2017年06月19日 18:42
  • 590

相似图像识别检 —基于图像签名(LSH)

参考:人工智能,一种现代方法 第 617页,且原始论文给出了完整的证明过程。在ANN方法中,LSH算一种可靠的紧邻算法。少量检索使用KNN、大量检索使用K-Dtree、海量检索使用LSH,超海量检索使...
  • wishchin
  • wishchin
  • 2014年06月30日 14:50
  • 1345

基于内容的图像检索引擎

基于内容的图像检索引擎(以图搜图) 标签: CBIR基于内容的图像检索引擎以图搜图图像识别 2013-10-05 10:41 77643人阅读 评论(5) 收藏 举报  分类...
  • twinkle_star1314
  • twinkle_star1314
  • 2017年02月10日 12:05
  • 360

图像检索结果评价(查准率和查全率)

一、查全率和查准率是目前衡量检索效果的相对合理的指标   查全率=(检索出的相关信息量/系统中的相关信息总量)*100%   查准率=(检索出的相关信息量/检索出的信息总量)*100%   前者...
  • a200800170331
  • a200800170331
  • 2013年07月16日 12:15
  • 2962

深度学习在图像检索的应用

深度学习是近十年来人工智能领域取得的最重要的突破之一。它在语音识别、自然语言处理、计算机视觉、图像与视频分析、多媒体等诸多领域都取得了巨大成功。本文将重点介绍深度学习在物体识别、物体检测、视频分析的最...
  • u013087984
  • u013087984
  • 2016年07月25日 21:07
  • 5157

Opencv2相似图像检索

目标:选出一个参考图像,找出一组图像中与参考图像最相似的图像。 相似图像检索:基于图像内容的相似度检索,可以利用两幅图像的直方图特征,评估两幅图像的直方图相似度,进而得到两幅图像的相似度。第一步:直...
  • zxc024000
  • zxc024000
  • 2016年04月22日 13:23
  • 1635

相似图像检索汇总

下面的十款搜索引擎可以帮你实现,以图找图,以图搜图,以图片搜索相似的图片。   一:http://tineye.com/ Tineye是典型的以图找图搜索引擎,输入本地硬盘上的图片或者输入图...
  • yong2007123
  • yong2007123
  • 2013年04月11日 17:03
  • 640

deepCNN--“卷积神经网络用于基于图像检索”文章阅读

基础知识:C1,C2层介绍   C3, Imagenet classification with deep convolutional neural networks....
  • xiaoju222
  • xiaoju222
  • 2014年10月22日 20:46
  • 2805
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:图像处理——相似图像检索
举报原因:
原因补充:

(最多只允许输入30个字)