图像的均方差和信噪比计算
- 一、均方差
- 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;
}