Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

deconvwnr

ウィーナー フィルターを使用したイメージのブレ除去

説明

J = deconvwnr(I,psf,nsr) はウィーナー フィルター アルゴリズムを使用してイメージ I を逆畳み込みし、ブレ除去イメージ J を返します。psf は、I と畳み込みされた点像分布関数 PSF です。nsr は加法性ノイズ パワーのノイズ対信号比です。このアルゴリズムは、推定イメージと実際のイメージの間で最小平均二乗誤差を使用するという点で最適です。

J = deconvwnr(I,psf,ncorr,icorr) はイメージ I を逆畳み込みします。ここで、ncorr はノイズの自己相関関数、icorr は元のイメージの自己相関関数です。

J = deconvwnr(I,psf) は、推定ノイズなしでウィーナー フィルター アルゴリズムを使用してイメージ I を逆畳み込みします。ノイズがない場合、ウィーナー フィルターは理想的な逆フィルターと等価です。

すべて折りたたむ

イメージをワークスペースに読み取って表示します。

I = im2double(imread('cameraman.tif'));
imshow(I);
title('Original Image (courtesy of MIT)');

Figure contains an axes object. The axes object with title Original Image (courtesy of MIT) contains an object of type image.

動きによるブレのシミュレーションを行います。

LEN = 21;
THETA = 11;
PSF = fspecial('motion', LEN, THETA);
blurred = imfilter(I, PSF, 'conv', 'circular');
figure, imshow(blurred)

Figure contains an axes object. The axes object contains an object of type image.

加法性ノイズのシミュレーションを行います。

noise_mean = 0;
noise_var = 0.0001;
blurred_noisy = imnoise(blurred, 'gaussian', ...
                        noise_mean, noise_var);
figure, imshow(blurred_noisy)
title('Simulate Blur and Noise')

Figure contains an axes object. The axes object with title Simulate Blur and Noise contains an object of type image.

ノイズなしを仮定して復元を試みます。

estimated_nsr = 0;
wnr2 = deconvwnr(blurred_noisy, PSF, estimated_nsr);
figure, imshow(wnr2)
title('Restoration of Blurred, Noisy Image Using NSR = 0')

Figure contains an axes object. The axes object with title Restoration of Blurred, Noisy Image Using NSR = 0 contains an object of type image.

S/N 比の推定を修正して復元を試みます。

estimated_nsr = noise_var / var(I(:));
wnr3 = deconvwnr(blurred_noisy, PSF, estimated_nsr);
figure, imshow(wnr3)
title('Restoration of Blurred, Noisy Image Using Estimated NSR');

Figure contains an axes object. The axes object with title Restoration of Blurred, Noisy Image Using Estimated NSR contains an object of type image.

入力引数

すべて折りたたむ

不鮮明なイメージ。任意の次元の数値配列として指定します。

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

点像分布関数。数値配列として指定します。

データ型: double

ノイズ対信号比。イメージ I と同じサイズの非負のスカラーまたは数値配列として指定します。nsr が配列である場合、スペクトル領域を表します。nsr0 を指定することは、理想的な逆フィルターを作成することに相当します。

データ型: double

ノイズの自己相関関数。元のイメージを上回らない任意のサイズまたは次元の数値配列を指定します。

  • ncorr の次元がイメージ I の次元と一致する場合、その値は各次元内の自己相関と対応します。

  • ncorr がベクトルで psf もベクトルである場合、ncorr の値は最初の次元に含まれている自己相関関数を表します。

  • ncorr がベクトルで、psf が配列の場合、1 次元の自己相関関数は psf のすべての大きさが 1 でない次元に対して対称に外挿されます。

  • ncorr がスカラーの場合、この値はノイズのパワーを表します。

データ型: double

イメージの自己相関関数。元のイメージを上回らない任意のサイズまたは次元の数値配列を指定します。

  • icorr の次元がイメージ I の次元と一致する場合、その値は各次元内の自己相関と対応します。

  • icorr がベクトルで psf もベクトルである場合、icorr の値は最初の次元に含まれている自己相関関数を表します。

  • icorr がベクトルで、psf が配列の場合、1 次元の自己相関関数は psf のすべての大きさが 1 でない次元に対して対称に外挿されます。

  • icorr がスカラーの場合、この値はイメージのパワーを表します。

データ型: double

出力引数

すべて折りたたむ

ブレ除去イメージ。数値配列として返されます。JI と同じデータ型を持っています。

ヒント

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

参照

[1] Gonzalez, R. C., and R. E. Woods. Digital Image Processing. Addison-Wesley Publishing Company, Inc., 1992.

バージョン履歴

R2006a より前に導入