作业帮 > 综合 > 作业

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

来源:学生作业帮 编辑:搜搜做题作业网作业帮 分类:综合作业 时间:2024/07/06 18:28:04
下面这个求两幅图像均方误差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没问题吧 我的意思是有可能有这么大吗
没大学过Matlab 正在做一个课程设计 见谅
下面这个求两幅图像均方误差MSE和峰值信噪比PSNR的小程序有无问题
好像你的方差求的有点问题.
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.