2013-02-27 167 views
2

我想将泊松噪声添加到具有杜尔布精度的图像中。我做的: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); 

我看到无论IJ是相当一致。我做错了什么?
请注意,我确实知道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'); 

但它返回的图像几乎完全地黑。

+1

请记住,绝大多数的图像的每个通道的8位深度(红色,蓝色,绿色,灰色等),这意味着256个不同的值,即使映射到'0 .. 1'。为了在像素上有所作为,噪声阈值必须> 1/256〜4e-3。如果你的泊松源真的被缩放到1e-12,那就是*方法*低于阈值... – twalberg 2013-02-27 17:41:04

回答

2

正如链接所说,这是一个很大的问题。

尝试使用较小规模:

I = im2double(imread('eight.tif')); %Matlab default image 
scale = 1e9; 
J = scale * imnoise(I/scale, 'poisson'); 
close all; imshow(J); 

输入:

enter image description here

输出(1E9):

enter image description here

输出(1E10):

enter image description here

+1

关于这个的文档非常含糊。无论如何,我会尝试 – dynamic 2013-02-27 18:08:04

+0

现在它的工作!但是,你能解释一下吗?为什么我们需要按照这个尺度来划分图像? – dynamic 2013-02-27 18:13:07

+1

通过这个因子缩放它会使噪声达到对图像有一定影响的程度,请参阅@ twalberg的评论 – Smash 2013-02-27 18:36:49