文檔聲稱該改進的算法對于輕度的圖像攻擊(縮放,旋轉[黑色背景],平移[黑色背景],亮度變換,對比度變換,伽馬變換,高斯模糊,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 樣本運作結果
我優化的算法