MATLAB Answers


Image Processing Noise

Asked by UJJWAL
on 19 Dec 2011

Hi, Suppose I want to add white gaussian noise to an image. I propose to do by following means :- a) imnoise(I,'gaussian',0,0.25); b) I = awgn(I,var(I(:))/0.25); c) I = I + 0.25*randn(size(I));

Here I is a certain image. What is difference between using the above statements ??


3 Answers

Answer by Wayne King
on 19 Dec 2011
 Accepted answer
J = imnoise(I,'gaussian',0,0.25);
J = I+0.5*randn(size(I));

For awgn(), your function syntax assumes the power of the input is 0 dBW, so you would need to do.

denom = -(var(I(:))/(10*log10(0.25)));
I = awgn(I,var(I(:))/denom);


Answer by Wayne King
on 19 Dec 2011

Hi, in

I = I +0.25*randn(size(t));

you get noise with a standard deviation of 0.25, not variance. If you want noise with a variance of 0.25, then you must do

I = I +0.5*randn(size(t));

that would be equivalent to:


The variance of a constant times a random variable is the constant squared times the variance of the random variable.

Finally, the actual variance of the additive Gaussian noise in:

I = awgn(I,var(I(:))/0.25);

depends on I, so it's not clear that you are really getting a variance of 0.25. For example:

I = randn(256,256);

Because var(I(:)) = 1.0551 (in this particular example)

Your call of

I = awgn(I,var(I(:))/0.25);

results in an additive WGN process with variance:

10^(-4.2203/10) = 0.3784

which is greater than you think.


Answer by UJJWAL
on 19 Dec 2011

Ok . So suppose the problem is to add a noise with a variance of 0.25 and mean of 0 and the noise is gaussian and additive.

What are the equivalent statements using imnoise, awgn and the first one to introduce such a noise ??


Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

MATLAB Academy

New to MATLAB?

Learn MATLAB today!