multiplicative noise generate using randn

I add additive '0' mean Gaussian noise to original image using
n=0+(sd)*randn(size(original image)) and i apply noise estimation algorithm to noisy image and i found additive noise.
If i needs to simulate noise estimation algorithm using multiplicative noise,how i generate noisy image with multiplicative noise? (only using 'randn' function, not using imnoise)

 Accepted Answer

Image Analyst
Image Analyst on 17 Mar 2013
Edited: Image Analyst on 17 Mar 2013
noiseOnlyImage = sd * randn(size(noiseFreeImage));
noisyImage = noiseFreeImage .* noiseOnlyImage;
% Cast to uint8 if you want.
imshow(noisyImage, []); % Use [] if it's a double image.

8 Comments

is it called speckle noise?
It might be for radar but I'm nto sure if the PDF of radar noise is Gaussian. I know that the noise PDF of laser speckle is not Gaussian - it's an exponential decay, so no, your randn() noise does not work to simulate laser speckle.
noisyImage = noiseFreeImage .* noiseOnlyImage;
so above image is affected by multiplicative noise ,not a speckle
I didn't say that. Speckle can be a multiplicative noise. But speckle has a specific probability distribution function, which, for laser speckle, is not Gaussian.
The probability density function for laser speckle is
pdf = exp(-v/sigmaSquared) / sigmaSquared
from section 5.9 in book by Roy Frieden "Probability, Statistical Optics, and Data Testing". v is the intensity of the light. So you can see it's an exponential decay, not a Guassian because it depends on v not v^2.
what does sd mean? I see that it is not an inbuilt function. can someone explain this plss
sd is a variable that represents the standard deviation. It's something you assign a desired value to.

Sign in to comment.

More Answers (0)

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!