最近由於要租房,所以下載了58同城的APP,在找個人房源過程中發現,58同城會把圖片相似的發帖紀錄被標誌出來,並警告用戶此信息可能是假的。這裏不討論58同城的這方面做得人性化。而是就圖片相似度算法來做一下分析。
百度和谷歌都推出了“以圖搜圖”的功能,至今都沒用過,也是挺無語的……
最近翻閱了這方面的資料,屬“感知哈希算法”最爲成熟,“感知哈希算法”的作用是對每張圖片生成一個指紋字符串,然後比較不同圖片的指紋。結果越接近,說明圖片越相似。下面就簡單介紹一下此算法
縮小圖片尺寸
將圖片縮小到8*8的尺寸,總共64個像素。這一步的作用是去除圖片的細節,只保留結構、明暗等基本信息,摒棄不同尺寸、比例帶來的圖片差異。
簡化色彩
將縮小後的圖片,轉爲64級灰度。也就是說,所有像素點總共只有64中顏色
計算平均值
計算所有64個像素的灰度平均值
比較像素灰度
將每個像素的灰度,與平局值進行比較。大於或等於平局值,記爲1;小於平均值記爲0
計算哈希值
將上一步比較結果,組合在一起,就構成了一個64位的整數,這就是這張圖片的指紋。組合的次序並不重要,只要保證所有圖片都採用同樣的次序就好了。
得到指紋以後,就可以對比不同的圖片,看看64位中有多少是不一樣的。在理論上,這等同於計算漢明距離。如果不相同的數據位超過5位,就說明兩張圖片很相似;如果結果大於10,就說明這是不同的圖片。
具體詳情請查看博客:圖片相似度算法