2

画像にポアソンノイズを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);

両方ともかなり同じだIと思います。J私が間違っていることは何ですか?
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 に答える