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

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

Asked by Sajid Khan on 2 Apr 2013

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

Answer by Wayne King on 2 Apr 2013
Edited by Wayne King 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.

## 1 Comment

Image Analyst 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.

Answer by Sajid Khan on 9 Apr 2013