问题
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.
来源:https://stackoverflow.com/questions/13765312/matlab-imnoise-poisson-doing-nothing