最近由于要租房,所以下载了58同城的APP,在找个人房源过程中发现,58同城会把图片相似的发帖纪录被标志出来,并警告用户此信息可能是假的。这里不讨论58同城的这方面做得人性化。而是就图片相似度算法来做一下分析。

百度和谷歌都推出了“以图搜图”的功能,至今都没用过,也是挺无语的……

最近翻阅了这方面的资料,属“感知哈希算法”最为成熟,“感知哈希算法”的作用是对每张图片生成一个指纹字符串,然后比较不同图片的指纹。结果越接近,说明图片越相似。下面就简单介绍一下此算法缩小图片尺寸

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

简化色彩

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

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

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

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

== 8f373714acfcf4d0

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

具体详情请查看博客:图片相似度算法

java计算图片相似度_图片相似度比较--算法相关推荐

  1. python 图片 变清晰_图片无损放大利器,把模糊图片变清晰

    前言 经常下载图片或者使用表情包的朋友都可能会遇到一个问题--图片模糊不清晰! 现有图片分辨率低.图片尺寸小.图片模糊等,很多时候又找不到原始的高分辨率清晰大图,只能将就使用?(ノ-_-)ノ~┻━┻ ...

  2. java 圈复杂度_圈复杂度和代码质量优化(附带示例代码纠正代码质量)

    什么是圈复杂度? --------------------------------------- 圈复杂度(Cyclomatic Complexity)是衡量计算机程序复杂程度的一种措施.它根据程序从 ...

  3. 转换图片保持画质_图片格式怎么相互转换,如何转换jpg、 bmp、png格式

    图片的格式有很多种,常见的就是jpg.bmp.png格式,这些格式本质上是没有多大的区别,都是安卓和电脑可以直接打开查看的,但是有时候还是会用到一些固定的格式,比如上传个人信息身份的时候,那这个时候如 ...

  4. 10款js图片代码_图片滚动代码_图片切换代码_图片特效代码_图片轮播代码(三)

    jquery banner滑块导航条幻灯片轮播图片滚动 jQuery blockSlide插件熔岩灯标签导航banner焦点图片切换 jquery图片冒泡插件鼠标悬停图片冒泡动画展示 jquery h ...

  5. 10款js图片代码_图片滚动代码_图片切换代码_图片特效代码_图片轮播代码(一)

    实现图片墙时光穿梭特效 swiper图文卡片滑块切换特效 网页放大镜图片预览插件 图片瀑布流tab分类切换特效 js窗帘式图片切换特效 全屏带视频banner轮播图片特效 Swiper仿魅族官网大图轮 ...

  6. java验证码图片滑动验证码_图片滑动验证码的生成

    使用Java生成图片滑动验证码 image.png 目前接到了一个新的小需求,要在登录时进行滑动图片验证. 搜了一下网上的demo,没有太多很完整的demo.就参考各种文档自己拼凑了一个出来.整理一下 ...

  7. 图片太大_图片太大?手把手教你如何用java实现一个高质量图片压缩程序

    使用java几十行代码实现一个高质量图片压缩程序,再也不用去自己找网络的压缩程序啦!而且很多网上的工具还有水印或者其他的限制,自己动手写一个简单的应用,是再合适不过了. 一.实现原理 1.声明两个字符 ...

  8. java 计算向量cos距离_欧氏距离和cos相似度

    两者相同的地方,就是在机器学习中都可以用来计算相似度,但是两者的含义有很大差别,以我的理解就是: 前者是看成坐标系中两个 点 ,来计算两点之间的 距离 : 后者是看成坐标系中两个 向量 ,来计算两向量 ...

  9. python图片分类管理系统_图片分类工具MyQcloudImage免费版下载(图片管理系统) V1.0 绿色版_数码资源网...

    需要智能人脸识别图片管理软件?MyQcloudImage免费版肯定是您需要的哦!图片分类工具这里有最新的最强大的图片数据分类和图片识别功能可以了解哦!MyQcloudImage免费版最好用的图片管理系 ...

最新文章

  1. c语言编辑密码程序,想程序高手求助--用C语言来编辑一个输入密码的程序
  2. 提高 Web 站点性能的最佳实践
  3. Clipboard.js实现点击自动复制内容的功能
  4. 阿里-2019算法岗笔试编程题-kmp匹配
  5. vue3.0中使用Element-plus默认英文组件修改为中文
  6. Elasticsearch SQL插件
  7. 学python可以从事什么工作-学Python可以找什么工作或者做什么兼职?
  8. 文档数据库mongodb与列式数据库hbase详细比较
  9. zoj 2343 Robbers 【贪心】
  10. 带你一文搞懂VMware Workstation的三种网络模式
  11. Hive基础知识概念
  12. mysql复合索引(联合索引)的使用场景
  13. 金蝶显示云服务器已离线,金蝶云服务器已离线是什么情况
  14. 软考云题库Web版题库V1.1更新功能
  15. CDS View_01
  16. 【初阶指针之】指针和指针变量
  17. Matlab2018a 与ccs7生成tms320F2812代码调试记录
  18. 有意思的记事本藏猫猫事件
  19. python ipados_iPadOS 会让 iPad 变成生产力工具吗?
  20. 利用Gitee搭建私人仓库-https篇

热门文章

  1. Appium+Java模拟手机按键
  2. java程序编译成exe文件_将java程序编译成独立运行的exe文件
  3. 华为HCIP题库和考试相关注意事项
  4. 18生成和解析JSON
  5. idea java反编译_idea的java反编译插件
  6. python深度学习之TCN实例
  7. [内附完整源码和文档] 基于C语言的校运动会项目管理系统
  8. 【工作笔记】zynq 7035移植linux系列1——linux环境的搭建和移植
  9. SQL语言---数据的查询
  10. visual studio 2019 在安装windows sdk 10.1.18362.1组件时卡住的问题解决