求高手帮忙看一下 下面这个求两幅图像均方误差MSE和峰值信噪比PSNR的小程序有无问题

clear all
close all
A=imread('lena512.bmp');
[M,N]=size(A);
B = imread('lena512高斯模糊.bmp');
a=double(A);
b=double(B);
sum=0;
for i=1:M;
for j=1:N;
sum=sum+(a(i,j)-b(i,j))^2;
end;
end;
mseValue=sum/(M*N);
psnrValue=10*log10(255^2/mseValue);
disp(['输入数据的MSE为:',num2str(mseValue)]);
disp(['输入数据的PSNR为:',num2str(psnrValue)]);
输入数据的MSE为:7656.0046
输入数据的PSNR为:9.2908

上面程序最后两行为Matlab输出
想问一下 上面程序有没有错误啊
输出结果MSE为:7656.0046没问题吧 我的意思是有可能有这么大吗

我是小白O(∩_∩)O~ 没大学过Matlab 正在做一个课程设计 见谅

好像你的方差求的有点问题。
function n=psnr(I,K1)
A1=double(I);
B1=double(K1);
[m,n]=size(A1);
err=0;
sum=0;
for i=1:1:m,
for j=1:1:n,
err=err+(A1(i,j)-B1(i,j))*(A1(i,j)-B1(i,j));
sum=sum+A1(i,j)*A1(i,j);
end
end
psnr=err/sum;
psnr_before_noisedelete=-10*log10(psnr)
PSNR=num2str(psnr_before_noisedelete);
disp(psnr'); %显示
这是我用的程序,求出的结果你自己看看吧。
我是自己先定义的一个函数,之后再求的snr。我用上面的函数求的结果一般小于30。
温馨提示:答案为网友推荐,仅供参考
相似回答