x2=imread(test)
x1=double(x1)
x2=double(x2)
[m,n]=size(x1)
[m2,n2]=size(x2)
if m2~=m||n2~=n
error('图像选择错误')
end
msevalue=0
for i=1:m
for j=1:n
msevalue=msevalue+(x1(i,j)-x2(i,j))^2
end
end
msevalue=msevalue/(m*n)
disp(['输入数据的mse为:',num2str(msevalue)])
psnrvalue=255^2/msevalue
psnrvalue=10*log10(psnrvalue)
以上是求PSNR的程序,直接加在主函数后面就可以,或者新建一个m文件来保存之后调用。头两句直接读入原图像和经过处理的图像,把图像数据矩阵存放在x1和x2中~~例如x1=imread('lena.bmp')
好像你的方差求的有点问题。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。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)