圖像的均方差和信噪比計算
- 一、均方差
- 1、公式
- 2、代碼
- 二、信噪比
- 1、公式
- 2、代碼
圖像的均方差和信噪比公式及代碼,代碼基于opencv和C++實現。
一、均方差
均方誤差,英文簡稱:MSE,英文全稱:“Mean Square Error”。
衡量圖像的相似度,值越小,表示圖像越相似。
1、公式
I、J表示兩幅圖像。
2、代碼
//均方差計算
double gGetMSE(Mat& srcImage, Mat& dstImage)
{Mat src = dstImage;Mat dst = srcImage;int channels = dstImage.channels();int rowsNumber = src.rows;int colsNumber = src.cols * channels;double sigma = 0.0;double mse = 0.0;for (int i = 0; i < rowsNumber; i++){for (int j = 0; j < colsNumber; j++){mse += (src.ptr<uchar>(i)[j] - dst.ptr<uchar>(i)[j]) * (src.ptr<uchar>(i)[j] - dst.ptr<uchar>(i)[j]);}}mse = mse / (rowsNumber * colsNumber);return mse;
}
二、信噪比
信號和噪聲的比值,英文簡稱:SRN,英文全稱:“Signal Noise Ratio”。
衡量信號中噪聲的多少。
1、公式
f為原圖,g為去噪后的圖像
2、代碼
//信噪比計算double gGetSNR(Mat& srcImage, Mat& dstImage)
{Mat src = dstImage;Mat dst = srcImage;int channels = dstImage.channels();int rowsNumber = src.rows;int colsNumber = src.cols * channels;double sigma = 0.0;double mse = 0.0;double SNR = 0.0;for (int i = 0; i < rowsNumber; i++){for (int j = 0; j < colsNumber; j++){sigma += (src.ptr<uchar>(i)[j]) * (src.ptr<uchar>(i)[j]);mse += (src.ptr<uchar>(i)[j] - dst.ptr<uchar>(i)[j]) * (src.ptr<uchar>(i)[j] - dst.ptr<uchar>(i)[j]);}}SNR = 10 * log10(sigma / mse);return SNR;
}