OpenCV:[1]峰值信噪比計算(PSNR)?

峰值信噪比(PSNR), 一種評價影象的客觀標準。它具有侷限性,PSNR是“PeakSignaltoNoiseRatio”的縮寫。peak的中文意思是頂點。而ratio的意思是比率或比列的。整個意思就是到達噪音比率的頂點訊號,psnr一般是用於最大值訊號和背景噪音之間的一個工程專案。通常在經過影像壓縮之後,通常輸出的影像都會在某種程度與原始影像不同。為了衡量經過處理後的影像品質,我們通常會參考PSNR值來衡量某個處理程式能否令人滿意。它是原影象與被處理影象之間的均方誤差相對於(2^n-1)^2的對數值(訊號最大值的平方,n是每個取樣值的位元數),它的單位是dB。

本經驗將介紹使用opencv對psnr演算法的實現。

方法/步驟

引入標頭檔案、庫檔案:

#include #include #include #include #pragma comment( lib, "cv.lib" )#pragma comment( lib, "cxcore.lib" )#pragma comment( lib, "highgui.lib" )

宣告psnr函式,這裡的imagePath為需要進行psnr檢測圖片的路徑:

int psnr(char * imagePath);

psnr函式體,將返回影象的psnr值:

int psnr(char * imagePath){ double t; t=getTickCount(); IplImage* img = cvLoadImage(imagePath,0); int height=img->height; int width=img->width; int step=img->widthStep; uchar *data=(uchar *)img->imageData; int i,j; double sum=0; for(i=0;i

注意事項

在函式體裡添加了計時函式,可以看到psnr的計算消耗非常低。

意思, 影象, 影像, 峰值, 信噪比,
相關問題答案