在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。

给你提供一个思路,首先需要对噪声信号建模

我假设信号是均值为0的平稳过程,噪声是高斯过程,噪声和信号独立

假设r=s+n 表示混有信号s 和噪声n 的信号

E(r)=E(s+n)=0 没有信息量

E(r^2)=E[(s+n)^2]=E(s^2)+E(n^2)+E(2*s*n)=Ps+Pn

E(r^2)可以通过信号样值就平方和然后平均得到(r1^2+r2^2+...rN^2)/N,所以得到一个方程

Ps+Pn=E(r^2)

E(r^3)=0

E(r^4)=E((s+n)^4)=E(s^4)+E(n^4)+2*E(s^2)*E(n^2)=??/

好久没推导了,所以接下来的地方你自己试试

目的就是建立一个方程组,解出Ps,Pn,最后就可以求出信号的信噪比了

直接使用CFTOOL工具箱

命令行输入cftool即可,然后选择拟合类型

x=[6.69:0.02:7.53]

y=[4.2,3.7,3.3,2.95,2.63,2.33,2.11,1.87,1.65,1.47,1.32,1.17,1.04,0.925,0.82,0.735,0.653,0.582,0.52,0.462,0.412,0.366,0.325,0.289,0.258,0.23,0.205,0.182,0.162,0.145,0.129,0.115,0.102,0.091,0.081,0.072,0.064,0.057,0.051,0.0455,0.0403,0.036,0.032]

直接输入cftool进入曲线拟合工具箱界面“Curve Fitting tool”

(1)点击“Data”按钮,d出“Data”窗口;

(2)利用X data和Y data的下拉菜单读入数据x,y,然后点击“Create data set”按钮,退出“Data”窗口,返回工具箱界面,这时会自动画出数据集的曲线图;

(3)点击“Fitting”按钮,d出“Fitting”窗口;

(4)点击“New fit”按钮,可修改拟合项目名称“Fit name”,通过“Data set”下拉菜单选择数据集,然后通过下拉菜单“Type of fit”选择拟合曲线的类型,选择类型Power:幂逼近,有2种类型,a*x^b 、a*x^b + c


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存