图像的均方差和信噪比计算


图像的均方差和信噪比公式及代码,代码基于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;
}
  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

这是一个图像

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值