感知雜湊演算法

2022-07-26 03:21:13 字數 1469 閱讀 7659

」感知雜湊演算法」(perceptual hash algorithm),它的作用是對每張生成乙個」指紋」(fingerprint)字串,然後比較不同的指紋。結果越接近,就說明越相似。

缺點:的內容不能更改。

hash演算法原理

第一步,縮小尺寸。

將縮小到8×8的尺寸,總共64個畫素。這一步的作用是去除的細節,只保留結構、明暗等基本資訊,摒棄不同尺寸、比例帶來的差異。

第二步,簡化色彩。

將縮小後的,轉為64級灰度。也就是說,所有畫素點總共只有64種顏色。

第三步,計算平均值。

計算所有64個畫素的灰度平均值。

第四步,比較畫素的灰度。

將每個畫素的灰度,與平均值進行比較。大於或等於平均值,記為1;小於平均值,記為0。

第五步,計算雜湊值。

將上一步的比較結果,組合在一起,就構成了乙個64位的整數,這就是這張的指紋。組合的次序並不重要,只要保證所有都採用同樣次序就行了。

得到指紋以後,就可以對比不同的,看看64位中有多少位是不一樣的。在理論上,這等同於計算「漢明距離」(hamming distance)。如果不相同的資料位不超過5,就說明兩張很相似;如果大於10,就說明這是兩張不同的。

phash演算法原理:

均值雜湊雖然簡單,但受均值的影響非常大。例如對影象進行伽馬校正或直方圖均衡就會影響均值,從而影響最終的hash值。存在乙個更健壯的演算法叫phash。它將均值的方法發揮到極致。使用離散余弦變換(dct)來獲取的低頻成分。

提取過程如下:

(1)縮小尺寸:phash以小開始,但大於8*8,32*32是最好的。這樣做的目的是簡化了dct的計算,而不是減小頻率。

(4)縮小dct:雖然dct的結果是32*32大小的矩陣,但我們只要保留左上角的8*8的矩陣,這部分呈現了中的最低頻率。

(5)計算平均值:如同均值雜湊一樣,計算dct的均值。

(6)計算hash值:這是最主要的一步,根據8*8的dct矩陣,設定0或1的64位的hash值,大於等於dct均值的設為」1」,小於dct均值的設為「0」。組合在一起,就構成了乙個64位的整數,這就是這張的指紋。

結果並不能告訴我們真實性的低頻率,只能粗略地告訴我們相對於平均值頻率的相對比例。只要的整體結構保持不變,hash結果值就不變。能夠避免伽馬校正或顏色直方圖被調整帶來的影響。

與均值雜湊一樣,phash同樣可以用漢明距離來進行比較。(只需要比較每一位對應的位置並算計不同的位的個數)

phash演算法和sift演算法可以找到變形不超過25%的。

基於雜湊演算法的視覺目標跟蹤

看起來像它——影象搜尋其實也不難

相似搜尋原理 

tineye檢索**

谷歌搜尋引擎

感知雜湊演算法

感知雜湊演算法是一類雜湊演算法的總稱,其作用在於生成每張影象的 指紋 fingerprint 字串,比較不同影象的指紋資訊來判斷影象的相似性。結果越接近影象越相似。感知雜湊演算法包括均值雜湊 ahash 感知雜湊 phash 和dhash 差異值雜湊 ahash速度較快,但精確度較低 phash則反...

感知雜湊演算法

有一些搜尋引擎有搜尋相似的功能,比如google,其中是什麼原理呢?其實我們利用乙個演算法就能達到相似的效果,其中涉及到的演算法就是 感知雜湊演算法 perceptual hash algorithm 下面就簡單介紹下該演算法。1.縮小的尺寸 將縮小到8 8的尺寸,總共64個畫素,這樣做的目的是去除...

感知雜湊演算法(pHash演算法)

第一步,縮小尺寸。將縮小到8x8的尺寸,總共64個畫素。這一步的作用是去除的細節,只保留結構 明暗等基本資訊,摒棄不同尺寸 比例帶來的差異。第二步,簡化色彩。將縮小後的,轉為64級灰度。也就是說,所有畫素點總共只有64種顏色。第三步,計算平均值。計算所有64個畫素的灰度平均值。第四步,比較畫素的灰度...