Matlab imnoise Poisson doing nothing?

2019-07-16 07:48发布

问题:

Basically I have:

sourceImage = im2double(imread(srcPath));

noiseImage = imnoise(sourceImage,'poisson');

The problem is that both sourceImage and noiseImage look pretty the same.

Indeed if I do

norm(sourceImage - noiseImage)

I get 1.4810e-05 (this seems a too low difference)

Am I doing it wrong?

回答1:

I believe there are two ways to handle your problem, based on the own description of imnoise for Poisson distribution (I will call it as p):

1) Keep the image described by srcPath in the integer domain

2) Manually upscale and downscale your image, see http://www.mathworks.com/matlabcentral/newsreader/view_thread/242444

The reasoning for case 1) is that p doesn't scale integer values. But, when using doubles, p assumes they are scaled by 1e12, but they are not in your case. As a analogy, it would be like truncating doubles in the range [0, 1] and expect to get integers different than 0 or 1.