程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> phash 移植 計算單圖片值 及比較海明距離

phash 移植 計算單圖片值 及比較海明距離

編輯:關於C語言

”感知哈希算法”Perceptual hash algorithm),它的作用是對每張圖片生成一個”指紋”fingerprint)字符串,然後比較不同圖片的指紋。結果越接近,就說明圖片越相似。


第一步,縮小尺寸。


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


第二步,簡化色彩。


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


第三步,計算平均值。


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


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


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


第五步,計算哈希值。


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


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


優點】簡單快速,不受圖片大小縮放的影響


缺點】圖片的內容不能變更


用途】根據縮略圖,找出原圖




pHash算法和SIFT算法可以找到變形不超過25%的圖片。


相關源碼以及庫下載地址:http://www.phash.org/download/


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved