我正在尝试为具有doulbe精度的图像添加泊松噪声。我这样做:
I = im2double(imread('mypic.tif')); % mypic.tif is already in the range 0...1 in double precision
J = imnoise(I,'poisson');
imshow(I),figure,imshow(J);
我发现I
和J
都非常相似。我做错了什么?
请注意我知道imnoise将值缩小了1e-12但是我真的不明白如何正确使用它。
我原以为我可以使用poissrnd()
手动添加噪音以绕过imnoise
关于缩放我使用code like this:
maxValue = max(I(:));
% This is necessary based on imnoise behaviour
I = I * 10e-12;
% Generate noisy image and scale back to the original intensities.
J = maxValue * imnoise(I, 'poisson');
但它返回的图像几乎完全是黑色的。
答案 0 :(得分:2)
正如链接所说,这是一个很大的问题。
尝试使用较小的比例:
I = im2double(imread('eight.tif')); %Matlab default image
scale = 1e9;
J = scale * imnoise(I/scale, 'poisson');
close all; imshow(J);
输入:
输出(1e9):
输出(1e10):
答案 1 :(得分:0)
查看维基百科上的“大数定律”。另外,请查看下面的博客,非常详细地分析了使用泊松选项的 MATLAB imnoise: