SNR,PSNR,MSE,AG(平均梯度)程序分享
%%此程序只支持灰度图像的计算,x1,x2 分别是原始图像和对原始图像的改进。另外,
%原始图像和改进图像的像素大小必须相同。如有疑问,jiao.da.11@163.com.
x1=imread('baboon.gif');
x2=imread('baboon_new1.jpg');
x1=double(x1);
x2=double(x2);
[m,n]=size(x1);
[m2,n2]=size(x2);
if m2~=m||n2~=n;
error('图像选择错误');
end;
msevalue=0;
thegma=0;
agvalue=0;
for i=1:m;
for j=1:n;
msevalue=msevalue+(x1(i,j)-x2(i,j))^2;
thegma=thegma+x1(i,j)^2;
end;
end;
MSE=msevalue/(m*n);%MSE
psnrvalue=255^2/MSE;
PSNR=10*log10(psnrvalue);%PSNR
SNR=10+log10(thegma/msevalue);%SNR
%AG
for i=1:m-1;
for j=1:n-1;
Ix=x2(i+1,j)-x2(i,j);
Iy=x2(i,j+1)-x2(i,j);
agvalue=agvalue+sqrt((Ix^2+Iy^2)/2);
end;
end;
AG=agvalue/(m*n);
disp(['输入数据的 MSE 为:',num2str(MSE)]);
disp(['输入数据的 PSNR 为:',num2str(PSNR)]);
disp(['输入数据的 SNR 为:',num2str(SNR)]);
disp(['输入数据的 AG 为:',num2str(AG)]);