如何實現“比較兩張圖片的相似度”,或者說“比較兩張圖片是否基本一致”的演算法?

langeldep發表於2011-08-31

這個演算法如果能實現, 有很多有用的地方。


        我的想法是從攝像頭採集到的視訊, 取出其中的bmp圖片, 儲存一張靜止的圖片作為參照物, 這個時候假如有一個移動的物體從攝像頭經過, 採集到的bmp圖片肯定與參照物不一致,這個時候就會把這張圖片儲存下來, 所以我需要一個演算法, 可以比較兩張圖片是否基本一致。


       在此列出該問題是希望大家各抒己見, 互相討論一下這個演算法的實現思路。


下面是有人提出的思路:

思路一:

有個簡單的方法就是隨機取兩幅圖上的相同座標的色素用Bitmap.GetPixel()方法。。你可以隨機取10000次或者多少。然後對比每次取的畫素是否相等。。兩個變數來累計。。這樣就可以粗略的計算出兩個圖片是否相似了。


思路二:

迴圈 for  [i , j]
{
讀出圖片A 一點(畫素)的 RGB 數值。
計算出灰度 YA[j][i] = 0.3*R + 0.59*G + 0.11*B
讀出圖片B 一點(畫素)的 RGB 數值。
計算出灰度 YB[j][i] = 0.3*R + 0.59*G + 0.11*B
計算 一點 的 相似係數,
例如 灰度差除以兩點平均灰度:
fabs(YA[j][i]-YB[j][i]) /  ((YA[j][i]+YB[j][i])/2.0)  -- 數值越小越相似
}
有了所有點的相似係數,做統計算,例如,把相似係數分20檔,
計算落入各檔的畫素點的個數--就是概率啦。
畫 概率分佈圖 和 累加 概率分佈圖。
當然,你可以設 累加 概率等於 幾的地方 為 相似度 判據。


相關文章