メインコンテンツ

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 を逆畳み込みします。ノイズがない場合、ウィーナー フィルターは理想的な逆フィルターと等価です。

すべて折りたたむ

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

im = imread("cameraman.tif");
imageshow(im)

カメラの動きによって発生するブレを含むイメージをシミュレートします。まず、関数fspecialを使用し、11 度の角度で 21 ピクセルにわたる線形移動を指定することにより、点像分布関数 PSF を作成します。その後、imfilter を使用して、点像分布関数とイメージを畳み込みます。量子化誤差を低減するために、imfilter を呼び出す前にイメージを double に変換します。

len = 21;
theta = 11;
PSF = fspecial("motion",len,theta);
im = im2double(im);
imBlurred = imfilter(im,PSF,"conv","circular");

ブレを含むイメージにシミュレーションしたガウス ノイズを追加します。

noise_mean = 0;
noise_var = 0.0001;
imBlurredNoisy = imnoise(imBlurred,"gaussian",noise_mean,noise_var);

ブレとノイズを含むイメージを表示します。

imageshow(imBlurredNoisy)

ノイズ対信号パワー比の推定を使用してイメージを復元します。

estimated_nsr = noise_var / var(imBlurredNoisy(:));
wnr3 = deconvwnr(imBlurredNoisy,PSF,estimated_nsr);
imageshow(wnr3)

入力引数

すべて折りたたむ

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

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

点像分布関数。数値配列として指定します。psf の次元数は、I の次元数以下でなければなりません。psf のサイズは、各次元において I のサイズ以下でなければなりません。

データ型: 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 より前に導入