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