ドキュメンテーション

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

deconvblind

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

構文

[J,PSF] = deconvblind(I, INITPSF)
[J,PSF] = deconvblind(I, INITPSF, NUMIT)
[J,PSF] = deconvblind(I, INITPSF, NUMIT, DAMPAR)
[J,PSF] = deconvblind(I, INITPSF, NUMIT, DAMPAR, WEIGHT)
[J,PSF] = deconvblind(I, INITPSF, NUMIT, DAMPAR, WEIGHT, READOUT)
[J,PSF] = deconvblind(..., FUN, P1, P2,...,PN)

説明

[J,PSF] = deconvblind(I, INITPSF) は、最尤法アルゴリズムを使ってイメージ I を分解し、ブレ除去をしたイメージ J と復元した点像分布関数 PSF の両方を返します。復元した PSFINITPSF と同じサイズの正の配列であり、その要素の和が 1 になるように正規化されています。PSF の復元は初期推定 INITPSF のサイズに大きく左右され、その値には比較的影響されません。そのため、1 の配列を INITPSF として指定します。

I は N 次元配列になります。

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

[J,PSF] = deconvblind(I, INITPSF, NUMIT) は反復回数を指定します (既定の設定は 10)。

[J,PSF] = deconvblind(I, INITPSF, NUMIT, DAMPAR) は、入力イメージ I からの出力イメージの偏差のしきい値をポアソン ノイズの標準偏差として指定します。この値より小さいと、減衰が生じます。元の値からの逸脱が DAMPAR 値以内に収まっているピクセルの反復は抑制されます。これにより、これらのピクセルでのノイズの発生が抑えられ、それ以外の場所では必要なイメージの詳細が維持されます。既定値は 0 (減衰なし) です。

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

[J,PSF] = deconvblind(I, INITPSF, NUMIT, DAMPAR, WEIGHT, READOUT) では、READOUT は加法性ノイズ (バックグラウンド ノイズやフォアグラウンド ノイズなど) と読み取りカメラ ノイズの分散に対応する配列 (または値) になります。READOUT はイメージの単位で表す必要があります。既定値は 0 です。

[J,PSF] = deconvblind(..., FUN, P1, P2,...,PN) では、FUN は PSF に対する追加制約を記述する関数です。FUN は関数ハンドルでなければなりません。

FUN は反復が終了するたびに呼び出されます。FUNPSF を最初の引数として受け入れる必要があり、追加パラメーターとして P1P2...PN を受け入れることができます。関数 FUN は 1 つの引数 PSF を返します。この引数は元の PSF と同じサイズであり、正値性の制約と正規化の制約を満たすものです。

『MATLAB 数学』ドキュメンテーションの「関数のパラメーター化」では、関数 fun に追加のパラメーターを指定する方法を説明しています。

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

デコンボリューションの再開

deconvblind を使用すると、デコンボリューションを前回停止した箇所から再開できます。この機能を使用するには、入力イメージ I と PSF での初期推定 INITPSF を次のセル配列として渡します。{I}{INITPSF}。これを行う場合、関数 deconvblind は、出力イメージ J と復元した点像分布関数 PSF をセル配列として出力し、次に呼び出す deconvblind に入力配列として渡します。出力セル配列 J には次の 4 つの要素が含まれています。

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

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

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

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

IINITPSFuint8uint16int16single または double です。DAMPARREADOUT のクラスは入力イメージと同じでなければなりません。その他の入力は double にする必要があります。出力イメージ J (または出力セルの最初の配列) のクラスは入力イメージ I と同じになります。出力 PSFdouble です。

すべて展開する

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

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

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

この情報は役に立ちましたか?