百度识图:以图搜图找到相似图片原理分析

1.玩转百度识图

"鉴"你所见,百度人脸识别 。

打开百度首页,搜索框右侧有一个相机图标,就是百度识图。

你可以用一张图片,搜索互联网上所有与它相似的图片。点击搜索框中照相机的图标。百度识图提供两种方式:1、粘贴图片地址;2、本地上传图片(支持拖拽图片)。

你输入网片的网址,或者直接上传图片,百度识图就会找出与其相似的图片。下面这张图片是朱茵紫霞仙子有水印图片。

上传后,百度识图返回如下结果:

运用此工具,我们可以找到高清无水印原图,并查看引用图片的文章内容;

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

百度把"百度识图"放上搜索框,搜索不止于文字,期待视频识别的到来。

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

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

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

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

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

2.第一步,缩小尺寸。

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

3.第二步,简化色彩。

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

4.第三步,计算平均值。

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

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

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

6.第五步,计算哈希值。

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

=

= 8f373714acfcf4d0

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

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

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

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

以图搜图 图像匹配_百度识图:以图搜图找到相似图片原理分析相关推荐

  1. 以图搜图 图像匹配_图像匹配,基于深度学习DenseNet实现以图搜图功能

    原标题:图像匹配,基于深度学习DenseNet实现以图搜图功能 度学习的发展使得在此之前以机器学习为主流算法的相关实现变得简单,而且准确率更高,效果更好,在图像检索这一块儿,目前有谷歌的以图搜图,百度 ...

  2. 特征图注意力_从数据结构到算法:图网络方法初探

    作者 | 朱梓豪 来源 | 机器之心 原文 | 从数据结构到算法:图网络方法初探 如果说 2019 年机器学习领域什么方向最火,那么必然有图神经网络的一席之地.其实早在很多年前,图神经网络就以图嵌入. ...

  3. java斗图表情_程序员之间的斗图表情包, java真的输惨了!

    表情包成了人与人聊天中不可少的分量,陌生人聊天表情包丢出去妥妥的拉近关系变熟络啊(¬_¬) 而且可以用表情包化解尴尬.缓解气氛,可以没话找话.忙的时候也可以当做结束语,显得比较有礼貌! 对于沉默寡言. ...

  4. android 动画 最顶层_【Android编程实战】StrandHogg漏洞复现及原理分析_Android系统上的维京海盗...

    0x00 StrandHogg漏洞详情 StrandHogg漏洞 CVE编号:暂无 [漏洞危害] 近日,Android平台上发现了一个高危漏洞 该漏洞允许攻击者冒充任意合法应用,诱导受害者授予恶意应用 ...

  5. 10搜索文件内容搜不出_百度搜索广告太多?内容太杂?可能你们缺少这10个神器网站...

    百度搜索广告太多,搜索结果内容太杂,有很多虚假无用的信息. 用过百度的应该都有这些体会. 众所周知,百度搜索早已成为互联网基础设施,人人皆知人人都用,给百度贴上"必不可少"的标签都 ...

  6. python台风动图绘制_使用Python绘制台风轨迹图的示例代码

    参考: 使用CMA热带气旋最佳路径数据集,对我国周边的台风进行绘制 import re import os import numpy as np import matplotlib.pyplot as ...

  7. 三维星座图查询_微信我的三维星座图测试游戏

    微信我的三维星座图测试游戏是一款简单画风打造的模拟测试类的手机游戏,玩家将通过系统给出的几个答题来选择你心中所向,不同的答题会带来不同的结果,深思熟虑享受这个测试的过程,简单的点击屏幕完成一场充满惊喜 ...

  8. csgo跑图文件_[CSGO]Neko社区:跑图服务器简易使用指南

    前言 本文旨在玩家入门并熟悉使用本服跑图插件常用功能,提升跑图效率和竞技水平.我本人对于插件和游戏理解并没有到得心应手的程度,如有遗缺,欢迎评论补漏.当然也有为服务器打广告的目的. 基本跑图指令 在跑 ...

  9. python树状图可视化_如何可视化(树状图)一个层次项目字典?

    这是我第一次用Python从字典格式的分层数据中进行可视化.数据的最后一部分如下所示:d = {^2820: [^391, ^1024], ^2821: [^759, 'w', ^118, ^51], ...

  10. 安卓机器人做图软件_绘画机器人andy下载-美图秀秀绘画机器人下载v7.0.0.0 安卓版-西西软件下载...

    美图秀秀美图绘画机器人是美图秀秀最近上线的一个智能绘画功能,这个新的AI机器人andy可以将你的照片秒变插画.相信不少人都见识过andy的功能了,这个新功能上线的第一时间就有不少明星试用过了,软件转换 ...

最新文章

  1. pyhton 画出音频文件的波形图和频谱图
  2. 双流棠湖中学怎么样_全川前十高中,棠湖中学后来居上,七中、四中、成外是“大佬”...
  3. linux 阅读日志命令 tail
  4. 精读《你不知道的javascript》中卷
  5. web.xml 配置
  6. 百度课程——基于深度学习的自然语言处理
  7. mysql 的下划线搜索转义
  8. VScode字体超大怎么改回来?
  9. 《三国演义》分章节梗概
  10. 苹果cmsv10黑色炫酷自适应在线视频网站简约模板源码
  11. MacBook键盘锁定、按键失效问题
  12. 王飞跃教授点评:无人车最“靠谱”的应用领域——不是出行
  13. 桌面便签软件哪个比较好 好用的手机桌面便签软件推荐
  14. html文件怎么在wps打开是乱码,wps上打开Excel文件是乱码
  15. 传统零售和新零售的本质区别
  16. gdb - 暂停/恢复程序执行
  17. Unix时间戳毫秒值解读
  18. SQL判断字段中是否存在数字、汉字、字母、英文
  19. Beauty Box for Premiere Pro Mac(pr人像磨皮美容插件)
  20. Redis学习笔记(二) [配置文件,3种新的数据类型,Jedis操作]

热门文章

  1. 计算机网上邻居怎么隐藏,Win7桌面不显示网上邻居图标方法 win7系统如何隐藏网上邻居图标...
  2. 论文的格式: 以Wiley为案例
  3. 使用ffmpeg打开ts格式视频文件
  4. 什么是数据库连接池?为什么使用数据库连接池?数据库连接池工作原理
  5. html空格折叠原因,html – 使用Bootstrap列折叠空白
  6. C语言结构体的字节对齐原则
  7. 2021 上半年软考软件设计师真题完整版
  8. linux 终端复制剪贴板,命令行剪贴板复制和粘贴工具?
  9. 各种编程技术资料分享
  10. git报错:fatal: unable to access ‘...‘: Failed to connect to github port 443: Timed out