## The value of variance in function imnoise in case of gaussian is a bit confusing

on 2 Apr 2013

### Wayne King (view profile)

Hi Everyone,

I am trying to add gaussian noise to image with some variance and mean, generally variance of 50 is considerable, but the function imnoise make image so much noisy even for a variance of 0.1,

image = rgb2gray(imread('pepper.jpg')); noisy_image = imnoise(image,'gaussian',0,0.1);

I just wanna ask that is this variance normalized using any specific scale, if yes, then with what factor do I need to multiply it to get the original one.

## Products

### Wayne King (view profile)

on 2 Apr 2013

imnoise works with an intensity image, so if you are inputting a unit8 image for example with values in the range [0,255], then imnoise first does

``` I = imread('eight.tif');
I = im2double(I);```

before adding the Gaussian noise, so basically you scale every value in your image [0,255] by 255 so that it falls into the interval [0,1] and then add the noise to that.

Image Analyst

### Image Analyst (view profile)

on 2 Apr 2013

Then if you want a uint8 image back int he original range you need to multiply by 255 and cast to uint8

```noisyImage = uint8(255 * noisyImage);
```

If you just multiply by 255 but don't cast to uint8, then you can do that but you'll have to use [] everytime you display it:

imshow(noisyImage, []);

or else it will show up as all white.

on 9 Apr 2013

Image Analyst

### Image Analyst (view profile)

on 9 Apr 2013

That would be 255. Actually you can add anything but whenever the sum would exceed 255 it will get clipped at 255 because it's uint8. The most you can add without clipping is 255, which would only happen when added to a value of 0.

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

Play games and win prizes!

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