2013-02-27 115 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