2

我正在尝试以双精度向图像添加泊松噪声。我愿意:

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

关于缩放,我使用的是这样的代码

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'); 

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

4

1 回答 1

2

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

尝试使用较小的比例:

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

输入:

在此处输入图像描述

输出(1e9):

在此处输入图像描述

输出(1e10):

在此处输入图像描述

于 2013-02-27T17:40:44.280 回答