Image Processing Noise

on 19 Dec 2011

Wayne King (view profile)

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 ??

Products

Wayne King (view profile)

on 19 Dec 2011
```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);
```

Wayne King (view profile)

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:

```imnoise(I,'gaussian',0,0.25);
```

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)

```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.

UJJWAL (view profile)

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 ??

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