最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

deconvblind

ブラインド デコンボリューションを使用したイメージのブレ除去

説明

[J,psfr] = deconvblind(I,psfi) は、イメージ I を最尤法アルゴリズムと点像分布関数 (PSF) psfi の初期推定の両方を使って逆畳み込みします。関数 deconvblind は、ブレ除去されたイメージ J と復元された PSF psfr を返します。

deconvblind では、復元を向上させるため、次に示すオプション パラメーターがサポートされています。[] をプレースホルダーとして使用すると、中間パラメーターの指定を省略できます。

[J,psfr] = deconvblind(I,psfi,iter) は反復回数を iter に指定します。

[J,psfr] = deconvblind(I,psfi,iter,dampar) は、減衰しきい値 dampar で指定されるノイズと比較して少量の逸脱があるピクセルに対する反復処理を抑えることによって、ノイズ増幅をコントロールします。既定では減衰なしです。

[J,psfr] = deconvblind(I,psfi,iter,dampar,weight) は、入力イメージ I 内のどのピクセルを復元の対象にするかを指定します。weight 配列内の要素の値は、入力イメージ内の対応する位置で考慮に入れるピクセルの数を決定します。たとえば、あるピクセルを対象から除外するには、weight 配列内でこのピクセルに値 0 を割り当てます。各ピクセルに割り当てられる重みの値は、フラットフィールド補正の量に基づいて調整できます。

[J,psfr] = deconvblind(I,psfi,iter,dampar,weight,readout) は、加法性ノイズ (背景ノイズや前景ノイズなど) と読み取りカメラ ノイズ readout の分散に対応する値を指定します。

[J,psfr] = deconvblind(___,fun) では、fun は PSF に対する追加制約を記述する関数のハンドルです。fun は各反復の最後に呼び出されます。関数ハンドルの詳細については、関数ハンドルの作成 (MATLAB)を参照してください。

すべて折りたたむ

ノイズを伴うサンプル イメージを作成します。

% Set the random number generator back to its default settings for
% consistency in results.
rng default;

I = checkerboard(8);
PSF = fspecial('gaussian',7,10);
V = .0001;
BlurredNoisy = imnoise(imfilter(I,PSF),'gaussian',0,V);

処理に含めるピクセルを指定する重み配列を作成します。

WT = zeros(size(I));
WT(5:end-4,5:end-4) = 1;
INITPSF = ones(size(PSF));

ブラインド デコンボリューションを実行します。

[J P] = deconvblind(BlurredNoisy,INITPSF,20,10*sqrt(V),WT);

結果を表示します。

subplot(221);imshow(BlurredNoisy);
title('A = Blurred and Noisy');
subplot(222);imshow(PSF,[]);
title('True PSF');
subplot(223);imshow(J);
title('Deblurred Image');
subplot(224);imshow(P,[]);
title('Recovered PSF');

入力引数

すべて折りたたむ

不鮮明なイメージ。任意の次元の数値配列として指定します。cell 配列としてイメージを指定して、中断した反復処理を有効にすることもできます。詳細は、ヒントを参照してください。

データ型: single | double | int16 | uint8 | uint16

PSF の初期推定。数値配列として指定します。PSF の復元は初期推定 psfi のサイズに強く影響を受け、そこに含まれる値にはそれほど影響を受けません。そのため、1 の配列を psfi として指定します。

cell 配列として psfi を指定して、中断した反復処理を有効にすることもできます。詳細は、ヒントを参照してください。

データ型: single | double | int16 | uint8 | uint16

反復回数。正の整数として指定します。

データ型: double

減衰のしきい値。数値スカラーとして指定します。減衰は反復の間にその偏差がしきい値を超えないピクセルに対して発生します。damparI と同じデータ型です。

各ピクセルの重み値。範囲 [0, 1] の値から成る数値配列として指定します。weight は入力イメージ I と同じサイズです。既定では、weight のすべての要素は値 1 です。したがって、すべてのピクセルは復元時に同様に考慮されます。

データ型: double

ノイズ。数値配列または数値スカラーとして指定します。readout の値は、加法性ノイズ (背景ノイズや前景ノイズなど) と読み取りカメラ ノイズの分散に対応します。readoutI と同じデータ型です。

関数ハンドル。ハンドルとして指定します。fun は 1 番目の引数として PSF を受け入れなければなりません。関数は 1 つの引数 PSF を返さなければなりません。この引数は元の PSF と同じサイズであり、正値性の制約と正規化の制約を満たすものです。

出力引数

すべて折りたたむ

ブレ除去イメージ。数値配列または 1 行 4 列の cell 配列として返されます。J (または J が cell 配列の場合は J{1}) は I のデータ型と同じです。中断された反復処理のために J を cell 配列として返す場合の詳細については、ヒントを参照してください。

復元済みの PSF。正の数値の配列または 1 行 4 列の cell 配列として返されます。psfr は PSF psfi の初期推定と同じサイズで、要素の合計が 1 になるように正規化されます。中断された反復処理に対して psfr を cell 配列として返す場合の詳細については、ヒントを参照してください。

データ型: double

ヒント

  • deconvblind を使用すると、逆畳み込みを前回停止した箇所から再開できます。この機能を使用するには、入力イメージ I と PSF での初期推定 psfi を次の cell 配列として渡します。{I}{psfi}。これを行う場合、関数 deconvblind は、出力イメージ J と復元した点像分布関数 psfr を cell 配列として出力し、次に呼び出す deconvblind に入力配列として渡します。出力 cell 配列 J には次の 4 つの要素が含まれています。

    J{1} は元のイメージ I を格納します。

    J{2} は最後の反復の結果を格納します。

    J{3} は最後から 2 番目の反復の結果を格納します。

    J{4} は反復アルゴリズムによって生成される配列です。

  • 出力イメージ J は、アルゴリズムで使用されている離散フーリエ変換に起因するリンギングを示すことがあります。リンギングを軽減するには、deconvblind を呼び出す前に I = edgetaper(I,psfi) を使用してください。

参照

[1] D.S.C. Biggs and M. Andrews, Acceleration of iterative image restoration algorithms, Applied Optics, Vol. 36, No. 8, 1997.

[2] R.J. Hanisch, R.L. White, and R.L. Gilliland, Deconvolutions of Hubble Space Telescope Images and Spectra, Deconvolution of Images and Spectra, Ed. P.A. Jansson, 2nd ed., Academic Press, CA, 1997.

[3] Timothy J. Holmes, et al, Light Microscopic Images Reconstructed by Maximum Likelihood Deconvolution, Handbook of Biological Confocal Microscopy, Ed. James B. Pawley, Plenum Press, New York, 1995.

R2006a より前に導入