Image双精度图像中的泊松噪声(散粒噪声)
问题描述:
我想将泊松噪声添加到具有杜尔布精度的图像中。我做的:Image双精度图像中的泊松噪声(散粒噪声)
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');
但它返回的图像几乎完全地黑。
答
正如链接所说,这是一个很大的问题。
尝试使用较小规模:
I = im2double(imread('eight.tif')); %Matlab default image
scale = 1e9;
J = scale * imnoise(I/scale, 'poisson');
close all; imshow(J);
输入:
输出(1E9):
输出(1E10):
请记住,绝大多数的图像的每个通道的8位深度(红色,蓝色,绿色,灰色等),这意味着256个不同的值,即使映射到'0 .. 1'。为了在像素上有所作为,噪声阈值必须> 1/256〜4e-3。如果你的泊松源真的被缩放到1e-12,那就是*方法*低于阈值... – twalberg 2013-02-27 17:41:04