文档声称该改进的算法对于轻度的图像攻击(缩放,旋转[黑色背景],平移[黑色背景],亮度变换,对比度变换,伽马变换,高斯模糊,JPEG压缩,噪声,镜像或转置,水印,弧形畸变,桶形畸变,枕形失真,切向畸变)具有一定的鲁棒性
一、ImageMagick中的pHash算法
根据ImageMagick 官方文档的说明,它的相似图像对比算法是来自于《Perceptual Hashing for Color Images Using Invariant Moments》(基于不变矩的彩色图像感知哈希算法),但是是它的改进版本。
主要的不同点在于:
1.如果是彩色图像,原论文使用的彩色空间是 HSI 和 YCbCr,而ImageMagick 使用的是sRGB和HCLp(然后每个通道计算Hu矩);如果是灰度图像,只使用一个通道。
2.最后计算相似度距离采用的公式不同,论文采用两幅图像哈希值差的平方和的开方,而ImageMagick采用的是均方根误差(RMSE)。
特点:
1.由于引入了 Hu矩,该算法对缩放、旋转(黑色背景)、平移、翻转具有一定的鲁棒性,由于采用了HCLp彩色空间,加强了对缩放、旋转(黑色背景)、平移、翻转的不敏感性,但增加了对光照、对比度、Gamma变化的敏感性。
2.由于相似度计算使用了均方根误差,所以对于镜像变换具有一定的鲁棒性。
3.由于彩色图像是根据6个通道计算的7维的Hu矩,所有产生的哈希码为6x7=42位,但灰度图像由于只计算一个通道,只有7位的哈希码,所以彩色图像与灰度图像不能直接用哈希码进行计算。
二、什么是Hu矩
Hu 矩是由Hu在1962年提出的,归一化的中心矩对于图像的平移、缩放、旋转具有不变性(直接使用普通矩或中心矩不具有不变性)。
p+q阶普通矩的公式为
其中f(x, y)为图像的灰度分布。
p+q阶中心矩的公式为
其中x0 = M10/M00,y0=M01/M00。
归一化的中心矩的公式为
其中 r=(p+q+2)/2, (p+q = 2, 3, ...)
Hu不变矩是利用二阶和三阶的中心矩构造了七个不变矩,它们在相似图像的条件下可以保持平移、缩放、旋转不变。
定义如下:
其中npq(p, q = 0, 1, 2, ...)是归一化的中心矩。
三、测试实验
在相同尺度下实验
A 样本:“有大范围平移+大范围裁剪+大范围水印,没有翻转+旋转”
B 样本:“在没有大范围平移+大范围裁剪+大范围水印,有翻转+旋转”
ImageMaigck
A 样本运行结果
B 样本运行结果
我优化的算法
A 样本运行结果
B 样本运行结果