图像质量评价MSE,SNR等指标(附Matlab代码) 您所在的位置:网站首页 归一化偏差en比对 图像质量评价MSE,SNR等指标(附Matlab代码)

图像质量评价MSE,SNR等指标(附Matlab代码)

2023-07-29 12:14| 来源: 网络整理| 查看: 265

通过其原始图像作为参考来评价一幅图像,就是有参照图像评价。 有参照图像评价参数主要包括MAE、MSE、NMSE、SNR、PSNR、ISNR等。 (1)平均绝对误差(MAE) 平均绝对误差的计算是把评价图像与原始图像各点灰度差的绝对值之和除以图像的大小。 其值越小表示与原始图像的偏差越小,图像质量越好。 M A E = ∑ i = 1 M ∑ j = 1 N ∣ g ( i , j ) − g ^ ( i , j ) ∣ M × N . MAE=\frac{\sum_{i=1}^{M}\sum_{j=1}^N |g(i,j)-\widehat{g}(i,j)|}{M\times N}. MAE=M×N∑i=1M​∑j=1N​∣g(i,j)−g ​(i,j)∣​. M和N分别表示图像长度和宽度上的像素点数,g(i,j)和g’(i,j)分别是原始图像和待评价图像图像在点(i,j)处的灰度值。

%该函数用于计算MAE评价绝对误差 %值越小表示与原始图像偏差越小,图像质量越好 %I表示原始图像 %J表示恢复后的图像 function mae = calculate_mae(I,J) %如果是I灰度图像只有二维,如果I是彩色图像将会有三维 dim = length(size(I));%保存的是I的维度 M = size(I,1); N = size(I,2); dif = abs(I - J); if dim == 2 val = sum(sum(dif)); else val = sum(sum(sum(dif))); end mae = val / (M*N); end

(2)均方误差(MSE) 均方误差也是判断图像质量最常用的算法之一。 MSE的值越小表示图像的质量越好。 M S E = ∑ i = 1 M ∑ j = 1 N [ g ( i , j ) − g ^ ( i , j ) ] 2 M × N . MSE=\frac{\sum_{i=1}^{M}\sum_{j=1}^N [g(i,j)-\widehat{g}(i,j)]^2}{M\times N}. MSE=M×N∑i=1M​∑j=1N​[g(i,j)−g ​(i,j)]2​.

%该函数用于计算MSE计算均方误差 %mse值越小图像质量越好。 %I表示原始图像 %J表示恢复后的图像 function mse = calculate_mse(I,J) %如果是I灰度图像只有二维,如果I是彩色图像将会有三维 dim = length(size(I));%保存的是I的维度 M = size(I,1); N = size(I,2); dif = (I - J).^2; if dim == 2 val = sum(sum(dif)); else val = sum(sum(sum(dif))); end mse = val / (M*N);%其实这里的M*N=numel(I) end

补充: numel(a)函数才可以计算矩阵a中元素的个数; length(a)函数计算的其实是矩阵a所有维数中含有元素最多的维数对应的元素个数。 而prod(size(a)),作用同numel,matlab推荐使用numel。prod函数作用是相乘。

a=[1,2,3;4,5,6]; length(a)%3 numel(a)%6 prod(size(a))%size(a)=[2,3],prod([2,3])=2*3=6

(3)归一化均方误差(NMSE) 归一化均方误差是一种基于能量归一化的测量方法,它相对均方误差是将分母的大小变成了原始图像的各个像素的平方和。 同样是值越小表示图像质量越好。 N M S E = ∑ i = 1 M ∑ j = 1 N [ g ( i , j ) − g ^ ( i , j ) ] 2 ∑ i = 1 M ∑ j = 1 N [ g ( i , j ) ] 2 . NMSE=\frac{\sum_{i=1}^{M}\sum_{j=1}^N [g(i,j)-\widehat{g}(i,j)]^2}{\sum_{i=1}^{M}\sum_{j=1}^N [g(i,j)]^2}. NMSE=∑i=1M​∑j=1N​[g(i,j)]2∑i=1M​∑j=1N​[g(i,j)−g ​(i,j)]2​.

%该函数用于计算MSE计算归一化均方误差 %值越小图像质量越好 %I表示原始图像 %J表示恢复后的图像 function nmse = calculate_nmse(I,J) %如果是I灰度图像只有二维,如果I是彩色图像将会有三维 dim = length(size(I));%保存的是I的维度 dif = (I - J).^2; I_2 = I.^2; if dim == 2 val1 = sum(sum(dif)); val2 = sum(sum(I_2)); else val1 = sum(sum(sum(dif))); val2 = sum(sum(sum(I_2))); end nmse = val1/val2; end

(4)信噪比(SNR)与峰值信噪比(PSNR) 信噪比与峰值信噪比也是用来测量图像质量的常用参数。 信噪比与峰值信噪比是值越大代表图像质量越好。 S N R = 10 l o g 10 [ ∑ i = 1 M ∑ j = 1 N [ g ( i , j ) ] 2 ∑ i = 1 M ∑ j = 1 N [ g ( i , j ) − g ^ ( i , j ) ] 2 ] . SNR=10log_{10}[\frac{\sum_{i=1}^{M}\sum_{j=1}^N [g(i,j)]^2}{\sum_{i=1}^{M}\sum_{j=1}^N [g(i,j)-\widehat{g}(i,j)]^2}]. SNR=10log10​[∑i=1M​∑j=1N​[g(i,j)−g ​(i,j)]2∑i=1M​∑j=1N​[g(i,j)]2​]. P S N R = 10 l o g 10 [ 25 5 2 × M × N ∑ i = 1 M ∑ j = 1 N [ g ( i , j ) − g ^ ( i , j ) ] 2 ] . PSNR=10log_{10}[\frac{255^2 \times M \times N}{\sum_{i=1}^{M}\sum_{j=1}^N [g(i,j)-\widehat{g}(i,j)]^2}]. PSNR=10log10​[∑i=1M​∑j=1N​[g(i,j)−g ​(i,j)]22552×M×N​].

%该函数用于计算SNR信噪比和PSNR峰值信噪比 %信噪比与峰值信噪比的值越大代表图像的质量越好。 %I表示原始图像 %J表示恢复后的图像 function [snr,psnr] = calculate_snr_psnr(I,J) %如果是I灰度图像只有二维,如果I是彩色图像将会有三维 dim = length(size(I));%保存的是I的维度 M = size(I,1); N = size(I,2); dif = (I - J).^2; I_2 = I.^2; if dim == 2 val1 = sum(sum(dif)); val2 = sum(sum(I_2)); else val1 = sum(sum(sum(dif))); val2 = sum(sum(sum(I_2))); end snr = 10*log10(val2/val1); psnr = 10*log10((255*255*M*N)/val1); end

(5)信噪比改善因子(ISNR) MSE和PSNR只表征了复原图像相对于原始理想图像的相似程度,但没有标明复原图像相对于退化图像的改善程度。 I S N R = 10 l o g 10 [ ∑ i = 1 M ∑ j = 1 N [ g ( i , j ) − f ( i , j ) ] 2 ∑ i = 1 M ∑ j = 1 N [ f ^ ( i , j ) − f ( i , j ) ] 2 ] = P S N R f ^ − P S N R g . ISNR=10log_{10}[\frac {\sum_{i=1}^{M}\sum_{j=1}^N [g(i,j)-f(i,j)]^2} {\sum_{i=1}^{M}\sum_{j=1}^N [\widehat{f}(i,j)-f(i,j)]^2}] =PSNR_{\widehat{f}}-PSNR_g. ISNR=10log10​[∑i=1M​∑j=1N​[f ​(i,j)−f(i,j)]2∑i=1M​∑j=1N​[g(i,j)−f(i,j)]2​]=PSNRf ​​−PSNRg​. f(i,j)和f’(i,j)分别是原始图像和复原后的图像在点(i,j)处的灰度值, g(i,j)表示退化图像在点(i,j)处的灰度值。 ISNR为复原图像的峰值信噪比与退化图像的峰值信噪比之差。 如果ISNR>0,ISNR越大,表明相对于退化图像复原的改善程度越大,算法的图像复原能力越好; 如果ISNR



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有