計算圖片相似度的多種解決方案
阿新 • • 發佈:2019-02-14
利用直方圖距離計算圖片相似度
計算公式:
其中,G和S為兩張圖片的影象顏色分佈直方圖,N為顏色空間樣點數。
這裡使用分塊的方法計算相似度,用以提高各部分的特徵,防止圖片顏色相似導致計算的相似度高。
利用平均雜湊演算法計算圖片相似度
計算步驟:
- 縮放圖片:一般大小為8*8,64個畫素值
- 簡化色彩,轉化為灰度圖:可以使用Image的convert(‘L’)方法
- 計算平均值:計算出灰度圖所有畫素點的畫素值的平均值
- 比較畫素灰度值:遍歷灰度圖的每一個畫素值與上一步計算的平均值,大於平均值記錄為1,否則為0
- 得到64點陣圖像指紋
- 記錄兩張圖片的影象指紋的漢明距離,計算圖片相似度
利用感知雜湊演算法計算圖片相似度
計算步驟:
- 縮放圖片:一般大小為32*32,這樣方便DCT計算
- 簡化色彩,轉化為灰度圖:可以使用Image的convert(‘L’)方法
-
獲得影象的二維資料矩陣f(x,y)
求離散餘弦變換的係數矩陣[A]
求係數矩陣對應的轉置矩陣[A]T
根據公式[F(u,v)]=[A][f(x,y)][A]T 計算離散餘弦變換
縮小DCT:DCT計算後的矩陣是32*32,保留左上角的8*8,這些代表的圖片的最低頻率
- 計算平均值:計算縮小DCT後的所有畫素點的平均
- 進一步減小DCT:大於平均值記錄為1,否則為0
- 得到64位資訊指紋
- 記錄兩張圖片的影象指紋的漢明距離,計算圖片相似度
利用差異雜湊演算法計算圖片相似度
計算步驟:
- 縮放圖片:一般大小為9*8,以留下多一行的畫素資料進行差異計算
- 簡化色彩,轉化為灰度圖:可以使用Image的convert(‘L’)方法
- 計算差異值:dHash演算法工作在相鄰畫素之間,這樣每行9個畫素之間產生了8個不同的差異,一共8行,則產生了64個差異雜湊值
- 得到64位資訊指紋:如果左邊的畫素比右邊的更亮,則記錄為1,否則為0
- 記錄兩張圖片的影象指紋的漢明距離,計算圖片相似度