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

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

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

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

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

ff64d6199694da82e0d3e73a18836420.png9c4041a6e7b6705ed1667bd5194aa332.png简化色彩

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

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

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

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

a8a13c5f48371507998b15669d2cc39a.png=f5a106b0a2b1b329f90c3a6c9d61ac1d.png= 8f373714acfcf4d0

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

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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值