常用的图像相似度比较算法:哈希算法

常用的图像相似度比较有三种哈希算法:

1.均值哈希算法 aHash
2.差值哈希算法 dHash
3.感知哈希算法 pHash

均值哈希算法
步骤
1.缩放:图片缩放为 8*8 ,保留结构,除去细节。
2.灰度化:转换为灰度图。
3.求平均值:计算灰度图所有像素的平均值。
4.比较:像素值大于平均值记作 1 ,相反记作 0 ,总共 64 位。
5.生成 hash :将上述步骤生成的 1 和 0 按顺序组合起来既是图片的指纹( hash )。
6.对比指纹:将两幅图的指纹对比,计算汉明距离,即两个 64 位的 hash 值有多少位是不一样的,不相同位数越少,图片越相似。

差值哈希算法
差值哈希算法相较于均值哈希算法,前期和后期基本相同,只有中间比较
hash 有变化。
步骤
1.缩放:图片缩放为 8* 9 ,保留结构,除去细节。
2.灰度化:转换为灰度图。
3.求平均值:计算灰度图所有像素的平均值。 这步没有,只是为了与均值哈希做对比
4.比较:像素值大于后一个像素值记作 1 ,相反记作 0 。本行不与下一行对比,每行 9 个像素,
八个差值,有 8 行,总共 64 位
5.生成 hash :将上述步骤生成的 1 和 0 按顺序组合起来既是图片的指纹( hash )。
6.对比指纹:将两幅图的指纹对比,计算汉明距离,即两个 64 位的 hash 值有多少位是不一样
的,不相同位数越少,图片越相似。

感知哈希算法
均值哈希算法过于严格,不够精确,更适合搜索缩略图,为了获得更精确的结果可以选择感知哈希
算法,它采用的是 DCT (离散余弦变换)来降低频率的方法。
步骤:
1.缩小图片: 32 * 32 是一个较好的大小,这样方便 DCT 计算
2.转化为灰度图:把缩放后的图片转化为灰度图。
3.计算 DCT:DCT 把图片分离成分率的集合
4.缩小 DCT DCT 计算后的矩阵是 32 * 32 ,保留左上角的 8 * 8 ,这些代表图片的最低频率。
5.计算平均值:计算缩小 DCT 后的所有像素点的平均值。
6.进一步减小 DCT :大于平均值记录为 1 ,反之记录为 0.
7.得到信息指纹:组合 64 个信息位,顺序随意保持一致性。
8.最后比对两张图片的指纹,获得汉明距离即可。
 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值