2012年6月10日 星期日

常見的影像相似度比較 MSE MAE PSNR

如何判斷兩張影像的相似度一直是個古老的問題

  影像 f 經過處理後變成影像 g, 
常見的處理包含:壓縮後解壓縮、放大後再縮小、旋轉後再轉回來

如果 f 與 g 一模一樣的話,就代表這些影像處理是個好方法
可是大部份的情況下,f 與 g 是不太一樣,因此我們常常需要比較兩者間的差異
最常用的方法就是 MSE (Mean Square Error), 有些人翻譯成「均方差」

其中影像 f 與 g 有相同尺寸,水平寬度為w, 垂直高度同為h

另一個與MSE相近的就是MAE (Mean Absolute Error)




從以上兩者的定義可以看出,兩個影像間的 MSE 或 MAE 越小代表兩張影像越相近
另一種 PSNR 是 MSE 的延伸, PSNR = Peak Signal-to-Noise Ratio


由於我們的影像值介於[0..255],所以PSNR的計算使用255的平方
如果影像是介於[0..1]的實數,上式的255就可以用1來取代
另外要特別注意的是 PSNR 要越大越好,代表兩張影像越相近,這與 MAE MSE 不同

現在來寫程式吧,而且以後一定用得著


這是個簡單的寫法,並沒有檢查輸入的兩張影像尺寸是否相同,也沒有檢查型別(class)是否一致,不過仍是堪用。
現在利用上次所說的mean filter 來測試不同window大小,其結果是否更差或更好?



輸入影像存在 im
利用 fspecial 產生 3x3 與 5x5 的權重函式 h1 與 h2


執行 mean filter

接下來比較兩個結果與原圖的差異



由左右兩個結果可知,視窗 h 越大,其誤差越大

--- end ---


沒有留言:

張貼留言