
把白噪声叠加到信号上去:
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就是所添加的噪声信号。
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帮助文件。
比如说:
I=imread('image.bmp')
J=imnoise(I,'salt &pepper')
imshow(J)
以上程序就表示把原图像加入椒盐噪声,但注意要把图像和以上程序的M文件放在同一个子目录下;
这回应该明白了吧?
使用imnoise函数X=imread('D:\matlab7.1\toolbox\images\imdemos\greens.jpg')
Y=imnoise(X,'gaussian')%%默认均值为0,方差为0.01
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
A double-class image must have values between zero and one,这个问题是你的图像是double型,但是你的图像的数值不是0-1之间,给他除以255即可!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)