2015-04-03 163 views
0

如何使用OpenCV獲取C++中圖像的信噪比?使用OpenCV C++中圖像的信噪比

我有原始圖像和其他與高斯噪音。

+0

顯示一些代碼。 – phts 2015-04-03 07:59:34

+0

沒有分心,沒有閒聊(閱讀[幫助→遊覽](http://stackoverflow.com/tour)),直接適用於你的「感謝關注」 這是不被認爲是不禮貌的,離開,但它是浪費讀者的時間,當你把它放在裏面,**是不禮貌的。 – Anthon 2015-04-03 08:17:30

+0

對不起,關於 – 2015-04-03 09:04:22

回答

2

the OpenCV example here引用,這解釋瞭如何導出從MSE的PSNR(峯值信噪比)(均方誤差),則可以使用下面的函數:

double getPSNR(const Mat& I1, const Mat& I2) 
{ 
    Mat s1; 
    absdiff(I1, I2, s1);  // |I1 - I2| 
    s1.convertTo(s1, CV_32F); // cannot make a square on 8 bits 
    s1 = s1.mul(s1);   // |I1 - I2|^2 

    Scalar s = sum(s1);   // sum elements per channel 

    double sse = s.val[0] + s.val[1] + s.val[2]; // sum channels 

    if(sse <= 1e-10) // for small values return zero 
     return 0; 
    else 
    { 
     double mse =sse /(double)(I1.channels() * I1.total()); 
     double psnr = 10.0*log10((255*255)/mse); 
     return psnr; 
    } 
} 

再次,從引用鏈接頁面(爲後人),解釋如下:

PSNR

+0

我看過這個功能,我只是想要一個替代方案來計算信噪比,所以我會用同樣的功能。 – 2015-04-03 09:26:56