1、在当前文件夹中新建一个SNR1.m文件,内容为:“ function snr=SNR1(I,In) Ps=sum(sum(I.^2)) Pn=sum(sum((In-I).^2)) snr=10*log10(Ps/Pn)”。
2、准备好两个矩阵a和b,这里使用的是两个291*240的double类型的矩阵。
3、在命令行窗口中输入:“x=SNR1(a,b)”,调用已经写好的信噪比函数。
4、回车后计算得a和b的信噪比为25.2021。
matlab对图像去噪后求信噪比处理的程序
X=imread('1.tif')
X=im2double(X)
nbc=size(map,1)
x=imnoise(X,'gaussian',0,0.005)
wname='bior3.3'
[c,s]=wavedec2(x,3,wname)
n=[1,2,3]p=[150,120,60]
nc1=wthcoef2('d',c,s,n,p,'s')
nc2=wthcoef2('d',c,s,n,p,'h')
rx1=waverec2(nc1,s,wname)
rx2=waverec2(nc2,s,wname)
[a,b]=psnr_mse(rx1,X)
colormap(gray(nbc))
subplot(221) image(wcodemat(X,nbc)) title('原图')
subplot(222) image(wcodemat(x,nbc)) title('含方差为0.005的高斯噪声')
subplot(223) image(wcodemat(rx1,nbc)) title('小波基bior3.3软阈值去噪')
subplot(224) image(wcodemat(rx2,nbc)) title('小波基bior3.3硬阈值去噪')
求psnr的程序
function [mse,psnr] = psnr_mse(image,image_prime)
% convert to doubles
image=double(image)
[M,N]=size(image)
image_prime=double(image_prime)
% avoid divide by zero nastiness
if ((sum(sum((image-image_prime).^2))) == 0)
error('Input vectors must not be identical')
else
mse=sum(sum((image-image_prime).^2))/(M*N)
psnr=10*log10(255^2/mse)
end
return
编程语言(programming language),又称程序设计语言(program design language,简称PDL),是一组用来定义计算机程序的语法规则。它是一种被标准化的交流技巧,用来向计算机发出指令。一种计算机语言让程序员能够准确地定义计算机所需要使用的数据,并精确地定义在不同情况下所应当采取的行动。计算机语言的种类非常的多,总的来说可以分成机器语言,汇编语言,高级语言三大类。 目前通用的编程语言有两种形式:汇编语言和高级语言。
原图存在img滤波后图存在filteredImg
这两个变量应该都是二维或者三维
noise = img - filteredImg
SNR = noise(:) .* noise(:) - img(:) .* img(:)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)