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

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

1、在当前文件夹中新建一个SNR1m文件,内容为:“ function snr=SNR1(I,In) Ps=sum(sum(I^2)); Pn=sum(sum((In-I)^2)); snr=10log10(Ps/Pn);”。

2、准备好两个矩阵a和b,这里使用的是两个291240的double类型的矩阵。

3、在命令行窗口中输入:“x=SNR1(a,b)”,调用已经写好的信噪比函数。

4、回车后计算得a和b的信噪比为252021。

放大器的输出信号的电压与同时输出的噪声电压的比,简称信噪比(Signal/Noise),通常以S/N表示,单位为分贝(dB)。
>计算信号的信噪比:1、信噪比的计量单位是dB,其计算方法是10LOG(Ps/Pn),其中Ps和Pn分别代表信号和噪声的有效功率。请注意:这是功率比。2、也可以换算成电压幅值的比率关系: 20LOG(Vs/Vn),Vs和Vn分别代表信号和噪声电压的“有效值”。请注意:这是电压比。3、信噪比通常不是直接进行测量的,而是计算出来的。通常的方法是:给放大器一个标准信号,调整放大器的放大倍数使其达到最大不失真输出功率或幅度(厂家调试失真的范围由规定的标准决定,我们自己调试凭听觉经验确定),用万能表测记下此时放大器的输出电压Vs,然后撤除输入信号,测量此时出现在输出端的噪声电压,记为Vn,再根20LOG(Vs/Vn)就可以计算出信噪比了。

>> close all
>> clear all
>> I=imread('lenabmp');
>> J=imnoise(I,'gaussian',001,0005);
>> A=imread('lenabmp');
[M,N]=size(A);
B = imread('Jbmp');
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/(MN);
psnrValue=10log10(255^2/mseValue);
disp(['输入数据的MSE为:',num2str(mseValue)]);
disp(['输入数据的PSNR为:',num2str(psnrValue)]);
输入数据的MSE为:79154387
输入数据的PSNR为:91461
以上是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/(MN);
psnrValue=10log10(255^2/mseValue);
disp(['输入数据的MSE为:',num2str(mseValue)]);
disp(['输入数据的PSNR为:',num2str(psnrValue)]);

图像去噪是将一个存在噪声的图像进行处理,提高图像质量,其中信噪比是常用的评价指标之一。在评价图像去噪效果时,可以通过查看信噪比来了解去噪效果的好坏程度,信噪比越高,代表图像中信号与噪声的比例越高,即去噪效果越好。
通常,在图像去噪过程中,可以通过相关软件或代码实现对信噪比的计算,并查看其数值大小。一些常见的图像处理软件,如Matlab、OpenCV等都可以计算信噪比。此外,也可以通过自己编写相关代码来实现信噪比的计算。
具体计算信噪比的方式与算法都有多种,例如峰值信噪比(PSNR)、结构相似性指数(SSIM)等。在使用时,需要根据具体的应用和研究目的,选择或设计合适的信噪比计算算法。
总之,信噪比是评价图像去噪效果的重要指标之一,在评价其优劣时可以通过相关软件或代码实现计算,并查看其数值大小。


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

原文地址: https://outofmemory.cn/yw/13381783.html

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

发表评论

登录后才能评论

评论列表(0条)

保存