Discover MakerZone

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

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

To resolve issues starting MATLAB on Mac OS X 10.10 (Yosemite) visit: http://www.mathworks.com/matlabcentral/answers/159016

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.

0 Comments

Sajid Khan

2 Answers

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.

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.

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

1 Comment

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

Sajid Khan

Contact us