问题描述:
就是数字图像处理后的评价参数(SNR)信噪比,MSE(均方差)与PSNR(峰值信噪比)下面是我写的,不知道对不!请高手指教!谢谢!
MSE:
x=imread('e:\image\hou.bmp')
x1=imread('e:\image\11.bmp')
x=double(x)
x1=double(x1)
[m,n]=size(x)
for i=1:m
for j=1:n
a(i,j)=x(i,j)-x1(i,j)
end
end
b=0
for i=1:m
for j=1:n
b=b+a(i,j)
end
end
c=b/(m*n)
SNR:
clear all
x=imread('e:\image\2.bmp')
x1=imread('e:\image\h.bmp')
x=double(x)
x1=double(x1)
for i=1:110
for j=1:110
a(i,j)=x(i,j)^2%after filtering's single
b(i,j)=x(i,j)-x1(i,j)
end
end
d=0
e=0
for i=1:110
for j=1:110
d=d+a(i,j)
e=e+b(i,j)*b(i,j)
end
end
f=log10(d/e)
g=10*f
解析:
建议你去网上下载一个checkmark,matlab写的,里面有你需要的全部东东,还有一些更宝贵的代码
以上。
做过的老狼
[p,q]=size(f)mse=0
for i=1:p
for j=1:q
a=(f(i,j)-f'(i,j))^2
mse=mse+a
end
end
mse=mse/(256*256)
psnr=10*log10((255*255)/mse)
>>close all>>clear all
>>I=imread('lena.bmp')
>>J=imnoise(I,'gaussian',0.01,0.005)
>>A=imread('lena.bmp')
[M,N]=size(A)
B = imread('J.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为:7915.4387
输入数据的PSNR为:9.1461
以上是MATLAB程序 及其输出结果 M文件可为
function PSNR = PSNR(A,B)
[M,N]=size(A)
x=double(A)
y=double(B)
sum=0
for i=1:M
for j=1:N
sum=sum+(x(i,j)-y(i,j))^2
end
end
mseValue=sum/(M*N)
psnrValue=10*log10(255^2/mseValue)
disp(['输入数据的MSE为:',num2str(mseValue)])
disp(['输入数据的PSNR为:',num2str(psnrValue)])
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)