python 直方图匹配_详解相似图片匹配算法:差异值哈希算法 + 颜色直方图

由于最近涉及到匹配相似图片的问题,所以在此记录下解决办法:差异值哈希算法 + 颜色直方图

环境要求:Python cv2库 math库

差异值哈希算法

检索相似图片,第一个想到的就是差异值哈希算法。这个算法的步骤是:

缩小尺寸

一般将图片缩放为 8 * 8 的尺寸大小,共64个像素的图片。但是由于64个像素对于我来说,损失的细节太多所以我选择了缩放到 33 * 32 的尺寸大小

彩色图像灰度化

由于我们现有的图片是由 RGB 三原色构成,每个像素点是一个由这三个颜色组成的一个 list 。而 RGB 三个颜色中每个颜色值都是用 8 个比特来表示,大小范围是 0 ~ 255(2^8 - 1),就一共有 256 * 256 * 256 种颜色。并且作为一个像素类似于这样的数值:[253 255 255] 是不利于简单比较的,肉眼看着类似的颜色,但是它的三个颜色分布可能相差很多。所以将它灰度化,用 256 个不同的灰色表示现有的图片。由于现在用一种灰色表示三种颜色,原来每个像素是一个 list 现在就降维成一个数值,数值的大小还是比较容易比较的。

比较像素的灰度值

比较图片灰度化的每行相邻像素之间的大小,每行后面像素值大于前面一个像素值那么记为1,如果不大于则记为0

计算哈希值

根据上一步得到了由0和1构成的数组合在一起就构成了1024位的整数

对比不同图片的汉明距离

对比两个图片生成的整数有多少位不一样。一般汉明距离小于 5 ,两张图片的相似度就很高了。

差异值哈希算法的 Python 代码

import cv2

# 差异值哈希算法</

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值