在matlab里怎么求图片的信噪比?

在matlab里怎么求图片的信噪比?,第1张

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(:)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11472496.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存