【重复图识别】在茫茫图海中,怎么找到相同的它?

转载请标名出处。

背景

在一些图像相关的项目中,重复图识别是很重要的。就比如热图排行榜(需要识别出重复图);涉及图像深度学习的项目(训练数据需要剔除重复图);图片原创&视频原创(需要识别出重复图)等等。

什么是相同图片

什么是相同图片?相信在不同场景下,这个答案是不一样。有些场景把肉眼看起来一样的图片当作相同图片,有些场景把用滤镜处理过的图片也当作相同图片,而有些场景下只把原图当作相同图片。
这里按照相同程度划分,相同程度从高到低,其实可以分为3个等级:

  • 绝对原图
  • 肉眼相同
  • 抄袭原图

接下来我们逐一详细介绍下这3类。

绝对原图

这个等级,图片相同的程度是最高的,就如下面2张图片,1.png通过直接copy的方式产生的2.png
在这里插入图片描述
它们从图片内容已经无法判断是否是原图,只能从文件的角度识别,一般来说都是直接md5判断2个图片,如下所示:
在这里插入图片描述
它属于用图片文件进行hash处理。

PS:一般来说,所有场景都会先用md5来过滤一边,因为它算法复杂度很低,根本不用理解图片

肉眼相同

这个等级的场景最多,比如图片训练数据去重,热图排行榜等等。
就如下图所示,1.png经过压缩、resize、转码等图片处理的方式产生的3.jpg:
在这里插入图片描述
它们肉眼看起来是相同,但是绝对不是原图,md5无法识别这种情况,只能图像的感知hash处理。感知hash主要有3种(AHash、DHash、PHash、WHash),它们都是用图片内容进行hash处理,只是hash方式不同,下面逐一介绍一波:

AHash

这种感知hash最简单,算法复杂度也最低,它只需要处理2步 预处理 + 二值化

  • 具体流程图如下所示:
    在这里插入图片描述
    它的二值化方式比较简单,只是比较了像素点跟均值,所以效果一般般。
  • python源码如下:
 def ahash(image, hash_size=8):
     image = image.convert("L").resize((hash_size, hash_size), Image.ANTIALIAS)// 1、【预处理】转灰度图,resize
     pixels 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值