## Image Processing Noise

### UJJWAL (view profile)

on 19 Dec 2011
Latest activity Commented on by Image Analyst

on 24 Feb 2016

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

### Shaveta Arora (view profile)

on 24 Feb 2016

How to add gaussian noise of variance 10 by both methods?

Image Analyst

### Image Analyst (view profile)

on 24 Feb 2016

Hint from the help:

Create a vector of 1000 random values drawn from a normal distribution with a mean of 500 and a standard deviation of 5.

```a = 5;
b = 500;
y = a.*randn(1000,1) + b;
```

For you, a would be sqrt(10) and b would be 0, so

```[rows, columns] = size(grayImage);
noisyArray = sqrt(10)*randn(rows, columns);
output = double(grayImage) + noisyArray;
```

#### Join the 15-year community celebration.

Play games and win prizes!

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