摘要: 2011年,Google把“相似图片搜索”正式放上了首页。你可以用一张图片,搜索互联网上所有与它相似的图片。点击搜索框中照相机的图标。一个对话框会出现。你输入网片的网址,或者直接上传图片,Google就会找出与其相似 ...
2011年,Google把“相似图片搜索”正式放上了首页。你可以用一张图片,搜索互联网上所有与它相似的图片。点击搜索框中照相机的图标。
一个对话框会出现。
你输入网片的网址,或者直接上传图片,Google就会找出与其相似的图片。下面这张图片是美国女演员Alyson Hannigan。
上传后,Google返回如下结果
类似的”相似图片搜索引擎”还有不少,TinEye甚至可以找出照片的拍摄背景。
这种技术的原理是什么?计算机怎么知道两张图片相似呢?
根据Neal Krawetz博士的解释,原理非常简单易懂。我们可以用一个快速算法,就达到基本的效果。
这里的关键技术叫做”感知哈希算法”(Perceptual hash algorithm),它的作用是对每张图片生成一个”指纹”(fingerprint)字符串,然后比较不同图片的指纹。结果越接近,就说明图片越相似。
下面是一个最简单的实现:
第一步,缩小尺寸。
将图片缩小到8×8的尺寸,总共64个像素。这一步的作用是去除图片的细节,只保留结构、明暗等基本信息,摒弃不同尺寸、比例带来的图片差异。
第二步,简化色彩。
将缩小后的图片,转为64级灰度。也就是说,所有像素点总共只有64种颜色。
第三步,计算平均值。
计算所有64个像素的灰度平均值。
第四步,比较像素的灰度。
将每个像素的灰度,与平均值进行比较。大于或等于平均值,记为1;小于平均值,记为0。
第五步,计算哈希值。
将上一步的比较结果,组合在一起,就构成了一个64位的整数,这就是这张图片的指纹。组合的次序并不重要,只要保证所有图片都采用同样次序就行了。
= = 8f373714acfcf4d0
得到指纹以后,就可以对比不同的图片,看看64位中有多少位是不一样的。在理论上,这等同于计算”汉明距离”(Hamming distance)。如果不相同的数据位不超过5,就说明两张图片很相似;如果大于10,就说明这是两张不同的图片。
具体的代码实现,可以参见Wote用python语言写的imgHash.py。代码很短,只有53行。使用的时候,第一个参数是基准图片,第二个参数是用来比较的其他图片所在的目录,返回结果是两张图片之间不相同的数据位数量(汉明距离)。
这种算法的优点是简单快速,不受图片大小缩放的影响,缺点是图片的内容不能变更。如果在图片上加几个文字,它就认不出来了。所以,它的最佳用途是根据缩略图,找出原图。
实际应用中,往往采用更强大的pHash算法和SIFT算法,它们能够识别图片的变形。只要变形程度不超过25%,它们就能匹配原图。这些算法虽然更复杂,但是原理与上面的简便算法是一样的,就是先将图片转化成Hash字符串,然后再进行比较。
http://science.dataguru.cn/article-7057-1.html
要: 我在 isnowfy 的网站看到,还有其他两种方法也很简单,这里做一些笔记。一、颜色分布法每张图片都可以生成颜色分布的直方图(color histogram)。如果两张图片的直方图很接近,就可以认为它们很相似。任何一种颜色都 ...
|
相关推荐
Java实现相似图片搜索原理 源码分享。 Google "相似图片搜索":你可以用一张图片,搜索互联网上所有与它相似的图片。 这种技术的原理是什么?计算机怎么知道两张图片相似呢? 根据Neal Krawetz博士的解释,原理非常...
Google "相似图片搜索":你可以用一张图片,搜索互联网上所有与它相似的图片。 这种技术的原理是什么? 计算机怎么知道两张图片相似呢? 根据Neal Krawetz博士的解释,原理非常简单易懂。 我们可以用一个快速...
Google "相似图片搜索":你可以用一张图片,搜索互联网上所有与它相似的图片。 这种技术的原理是什么?计算机怎么知道两张图片相似呢? 根据Neal Krawetz博士的解释,原理非常简单易懂。我们可以用一个快速算法,...
相似图片搜索原理的Java实现源码范例和详细说明(由浅入深,深度解读在资料后半部分).docx
相似图片搜索原理的Java实现源码范例和详细说明(由浅入深,深度解读在资料后半部分)(合集)
上传后,Google返回如下结果:类似的"相似图片搜索引擎"还有不少,TinEye甚至可以找出照片的拍摄背景。这种技术的原理是什么?计算机怎么知道两张图片相似呢?根据NealKrawetz博士的解释,原理非常简单易懂。我们可以...
关键技术:"感知哈希算法"(Perceptual hash algorithm),它的作用是对每张图片生成一个"指纹"(fingerprint)字符串,然后比较不同图片的指纹。结果越接近,就说明图片越相似。
相似性搜索的工作原理:相似性搜索工具可用于识别哪些候选要素与要匹配的一个或多个输入要素最相似(或最相异)。相似性的基础是数值属性(感兴趣属性)的指定列表。如果指定了一个以上的要匹配的输入要素,相似性将...
基于图向量和向量数据库的图片搜索引擎 本项目实现原理如图所示,过程包括加载图片 -> 读取图片 -> 特征提取 -> 存储到向量数据库 -> 待检索图片 -> 在图片向量库中匹配出与待检索图片向量最相似的 top n个 -> 匹配...
该项目致力于开发一个高效、准确的图像搜索引擎,通过内容基于图像检索(CBIR)和机器视觉技术,实现了对图片库中相似图像的快速检索。 该图像搜索引擎以Python作为开发语言,利用OpenCV强大的图像处理和分析能力,...
FirmTools Duplicate Photo Finder是一款整理图像的必备工具,它使用高级搜索算法,会快速在您的硬盘或指定文件夹中找到重复或相似的图像,需要的朋友快来下载吧。 FirmTools Duplicate PhotoFinder 使用了先进的...
8.2 图片搜索 291 8.2.1 图像的OCR识别 292 8.3 竞价排名 296 8.4 Web图分析 297 8.5 使用并行程序分析数据 302 8.6 RSS搜索 303 8.7 本章小结 304 参考资源 305 书籍 305 网址 305 本书中的章节和代码对照表 306
直方图原理 通过相似度 来查找出相同的图片
算法原理很简单:取一个点,然后把这个点之后的n个与该点差别不大的点个数数出来,然后存储为像素+n的格式,这样如果图像中连续相似的点比较多,就可以大幅度压缩图像。今天一天就把这个东东搞定了,测试了一下,...
计算图片相似度的应用很广泛,如google、baidu、360等搜索引擎以图搜图的功能就是其典型应用。下面介绍介绍两种算法: 感知哈希算法(Perceptual hash algorithm) 那这种技术的原理是什么呢?根据Neal Krawetz博士...
向量Postgres 的开源向量相似度搜索 CREATE TABLE table (column vector( 3 ));CREATE INDEX ON table USING ivfflat (column);SELECT * FROM table ORDER BY column < - > ' [1,2,3] ' LIMIT 5 ; 支持 L2 距离、...
本文针对SIFT算法存在着特征提取及匹配速度慢,在灰度变化相似的区域产生误匹配的...摒弃一些鲁棒性较弱的点,对鲁棒性强的特征进行匹配以减少计算时间,使SURF在实时性处理和大量图片搜索的应用上具有更广阔的空间.
本课程主要给大家介绍人工智能的相关发展和应用,同时通过案例介绍基于深度CNN的图像特征提取和相似计算的原理和简单应用。通过本次课程可以让你轻松地对人工智能有全面的了解。
站内搜索、栏目管理、视频播放(完全模仿优酷视频页面)、焦点图、静态...图片、搜索引擎优化设置、数据备份恢复、伪静态设置、网上商城、订单管理、在线支付(支持支付宝、财付通、块钱等第三方支付平台)、网站调优...