如何用MATLAB给图片加椒盐噪声和滤噪?

如何用MATLAB给图片加椒盐噪声和滤噪?,第1张

1、打开Matlab,点击“新建脚本”,如下图所示。

2、在代码编辑区输入代码,先利用Imread函数读取图像,然后使用Imshow函数将图像展示出来,以便与添加噪声后的图像做对比。

3、Matlab中利用imnoise函数可以添加各种噪声,而使用“gaussian”参数就可以添加高斯噪声。

4、选择保存位置,并为m文件重命名,如下图所示所示,设置完成,点击“保存”。

5、这样,就在Matlab中为图像添加了高斯噪声,并且把一组对比图显示在同一个窗口中,如下图所示。

在原始信号上加噪声,首先要产生噪声。Matlab有两个函数可以产生噪声,wgn( )和awgn( )。

    1. WGN:产生高斯白噪声 

    y = wgn(m,n,p)

    y = wgn(m,n,p) %产生一个m行n列的高斯白噪声的矩阵,p以dBW为单位指定输出噪声的强度。 

    y = wgn(m,n,p,imp)

    y = wgn(m,n,p,imp) %以欧姆(Ohm)为单位指定负载阻抗。 

    y = wgn(m,n,p,imp,state)

    y = wgn(m,n,p,imp,state) %重置RANDN的状态。

2. AWGN:在某一信号中加入高斯白噪声 

    y = awgn(x,SNR)

    y = awgn(x,SNR) %在信号x中加入高斯白噪声。信噪比SNR以dB为单位。x的强度假定为0dBW。如果x是复数,就加入复噪声。

举例如下:

   clear,clc

   N=0:1000

   fs=1024

   t=N./fs   

   y=3*sin(2*pi*t)

   x=wgn(1,1001,2)

   i=y+x

   % i=awgn(y,2)

   subplot(3,1,1),plot(x)

   subplot(3,1,2),plot(y)

   subplot(3,1,3),plot(i)

可以将正弦信号在每个时刻的值加上噪声即可实现加噪的目的。

把白噪声叠加到信号上去:

function

[Y,NOISE]

=

noisegen(X,SNR)

%

noisegen

add

white

Gaussian

noise

to

a

signal.

%

[Y,

NOISE]

=

NOISEGEN(X,SNR)

adds

white

Gaussian

NOISE

to

X.

The

SNR

is

in

dB.

NOISE=randn(size(X))

NOISE=NOISE-mean(NOISE)

signal_power

=

1/length(X)*sum(X.*X)

noise_variance

=

signal_power

/

(

10^(SNR/10)

)

NOISE=sqrt(noise_variance)/std(NOISE)*NOISE

Y=X+NOISE

其中X是纯信号,SNR是要求的信噪比,Y是带噪信号,NOISE是叠加在信号上的噪声。

对于上面的通用程序,如果X是正弦信号,SNR是要求的信噪比,那么输出的Y就是正弦信号加噪后的信号,NOISE就是所添加的噪声信号。


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

原文地址:https://54852.com/bake/11906651.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存