如何判断两张图片是否相似呢,这里我们使用一个快速算法,即感知哈希算法,来对图片进行检测。
感知哈希算法的原理其实就是,我们对每一张的图片生成一个类似于人类指纹的唯一标识,然后比较每张图片的标识的差别,差别越小,就越相似。
-
尺寸缩小(缩小为8*8的图片,去除图片的细节)
-
转化为灰度图 python实现的话,PIL库的话,有专门的函数实现了:
# 将RGB转化为灰度的公式 # L = R * 299/1000 + G * 587/1000 + B * 114/1000 im.convert('L')
-
计算平均值,即64个灰度的平均值
-
比较像素的深度,大于平均值的标记为1,小于的标记为0
-
计算哈希值,获得哈希字符串
-
根据获得的哈希字符串,通过汉明距离来判断图片的相似程度,小于5的话,我们认为是相似