峰值訊號與雜訊比(Peak Signal-to-Noise Ratio),一般我們都會講它的縮寫-PSNR。 PSNR 是一種用來表示訊號最大可能功率和影響它表示精度的破壞性雜訊功率的比值,而在影像裡面我們就可以用 PSNR 這種比較客觀(有一個量化數據) 的方法來計算影像的失真。 像是在影像壓縮,有分為失真壓縮跟非失真壓縮。 如果是失真壓縮的話,影像在經過壓縮、解壓縮之後,必定會有一些資訊遺失!這時候我們就會想知道,解壓縮出來的圖像跟原圖到底差多少? 進而去評估這個壓縮算法好不好。其他還有像是在資訊隱藏 Data hiding 的領域也會用到PSNR。 PSNR 的定義如下:
看到 log 之後你大概就知道這東西的單位是用-分貝(dB) 來算。
其中的 MAX I 為訊號的最大強度,在每個pixel 點用8-bit 表示的影像裡面就是 255。 MSE 就是統計學裡面講的均方誤差(mean-square error),其計方法可參考下方公式:
大家也不用一看到數學公式就太抗拒啦~
其實這公式已經寫的是相當直白了,對一個程式設計師來說完全可以直接把它翻成下面這段 Code: for( i = 0; i < m; i++){ for( j = 0; j < n; j++){ sum += pow( ( I[i][j] - K[i][j] ) , 2 ); } } MSE = sum / (m*n); 很多時候我們只要了解,其數學符號所代表的意義就好了,需要算的部分我們老早就都丟給電腦算了。 最後我們用在【影像處理】雜訊與濾波 Noise and Filter 中所提到的 Impulse noise 為例,來計算在圖像中灑上濃度為:1%、5%、10%、20%、50%、100%,其PSNR 值各為多少,詳細結果可參考下方幻燈片。 或者你也可以拿【影像處理】Nearest Neighbor and Bilinear Interpolation 這篇講的兩個影像放大演算法做例子,透過計算PSNR 來比較哪一種方法做的更好。 關於PSNR 的原理及應用面大概就是這個樣子!我想這篇寫到這邊也差不多了吧~ 最後再提供上面這個部分實作的 Source Code 給你們參考。 【程式碼下載】
0 評論
發表回覆。 |
Jason Chen人不光是生來就擁有一切,而是靠他從學習中得到的一切來造就自己。- 歌德 文章分類
全部
封存檔
九月 2023
|