均值哈希(aHash):
- 图片缩放,一般为88,或者3232;
- 图片灰度化;
- 求平均值,并根据平均值将每一个像素二值化(大于均值为1小于均值为0);
- 将8*8=64位bit,每8个比特为一个十六进制值,转换成字符串,生成哈希值(指纹);
感知哈希(pHash):
- 图片缩放,一般32*32;
- 图片灰度化;
- 对图片进行离散余弦变换(DCT),转换频域;
- 取频域左上角8*8大小(图片的能量都集中在低频部分,低频位于左上角);
- 求平均值,并根据平均值将每一个像素二值化(大于均值为1小于均值为0);
- 生成哈希值;
差值哈希(dHash):
- 图片缩放为9*8大小;
- 图片灰度化;
- 差异值计算(每行相邻像素的差值,这样会生成8*8的差值,前一个像素大于后一个像素则为1,否则为0);
- 生成哈希值;
import cv2
import numpy as np
import time
#均值哈希算法
def aHash(img):
#缩放为8*8
img=cv2.resize(img,(8,8),interpolation&#