Matlab怎么给图像加噪声?

Matlab怎么给图像加噪声?,第1张

Matlab中为图片加噪声的语句是:

(1)J = imnoise(I,type)

(2)J = imnoise(I,type,parameters)

其中I为原图象的灰度矩阵,J为加噪声后图象的灰度矩阵

一般情况下用(1)中表示即可,(2)中表示是允许修改参数,而(1)中使用缺省参数

至于type可有五种,分别为'gaussian'(高斯白噪声),'localvar'(与图象灰度值有关的零均值高斯白噪声),'poisson'(泊松噪声),'salt &pepper'(椒盐噪声)和'speckle'(斑点噪声)具体(2)中参数值的设定可根据个人需要其余情况以及若还有不懂请参考Matlab帮助文件。

在此使用'salt &pepper'(椒盐噪声),并将其参数设置为0.6。其例子如下:

L = imread(‘image_ori.jpg’)

J = imnoise(L, ‘salt &pepper’, 0.6)

imshow(J)//立即d出窗口,显示加了噪声后的图片

imwrite(J, ‘image_noise.jpg’, ‘jpg’, ‘Quality’, 100)//按100%的质量存储加了噪声的图片,Quality的默认值为75.

以上程序就表示把原图像加入椒盐噪声,但注意要把图像和以上程序的M文件放在同一个子目录下。

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

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

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就是所添加的噪声信号。

有可能是音频不一样长的问题,但也可能是声音通道多而造成维数不等,要准确判断问题所在,须把声音文件cat.wav发过来,调试以后,才能决定。请把这个文件发过来,我qq2674716548


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

原文地址:https://54852.com/yw/11711325.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存