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.

Answer by Wayne King
on 2 Apr 2013

Accepted answer

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

Thanks you so much for your kind reply, your answer really is helpful. Can you please tell me what is the maximum gaussian noise variance for an 8 bit image that I can add?

Image Analyst
on 9 Apr 2013

Opportunities for recent engineering grads.

## 0 Comments