Main Content

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

wiener2

2 次元適応ノイズ フィルター

構文 wiener2(I,[m n],[mblock nblock],noise) は、削除されました。代わりに構文 wiener2(I,[m n],noise) を使用します。

説明

J = wiener2(I,[m n],noise) は、ピクセル単位の適応ローパス ウィーナー フィルター処理を使用してグレースケール イメージ I をフィルター処理します。[m n] は、局所的なイメージの平均と標準偏差を推定するのに使用する近傍のサイズ (mn 列) を指定します。加法性ノイズ (ホワイト ガウス ノイズ) 強度は、noise と仮定されます。

入力イメージは、一定強度の加法性ノイズにより劣化します。wiener2 は、各ピクセルの局所的な近傍から推定された統計値に基づいて、ピクセル単位の適応ウィーナー メソッドを使用します。

[J,noise_out] = wiener2(I,[m n]) は、wiener2 がフィルター処理を行う前に計算する加法性ノイズ パワーの推定値を返します。

すべて折りたたむ

この例では、関数 wiener2 を使用して、ウィーナー フィルター (線形フィルターの 1 種) を適応的にイメージに適用します。ウィーナー フィルターはイメージの局所分散に適応します。分散が大きい部分では、wiener2 はあまり平滑化を行いません。分散が小さい部分では、wiener2 は、さらなる平滑化を行います。

この手法は、しばしば線形フィルター処理よりも良い結果を出します。適応フィルターは、同種の線形フィルターよりも選択的で、イメージのエッジやその他の高周波数部を維持できます。さらに、設計の手間がかかりません。関数 wiener2 は、すべての予備的な計算を実行して、入力イメージに対するフィルターを実装します。ただし、wiener2 は線形フィルターよりも計算に時間がかかります。

wiener2 は、ノイズがガウス ノイズのような一定パワー ("ホワイト") の加法性ノイズの場合、最も効率よく機能します。次の例では、ガウス ノイズを付加した土星のイメージに wiener2 を適用します。

イメージをワークスペースに読み取ります。

RGB = imread('saturn.png');

イメージをトゥルーカラーからグレースケールに変換します。

I = im2gray(RGB);

ガウス ノイズをイメージに付加します。

J = imnoise(I,'gaussian',0,0.025);

ノイズを含むイメージを表示します。イメージがかなり大きいので、イメージの一部のみを表示します。

imshow(J(600:1000,1:600));
title('Portion of the Image with Added Gaussian Noise');

Figure contains an axes object. The axes object with title Portion of the Image with Added Gaussian Noise contains an object of type image.

関数 wiener2 を使用してノイズを除去します。

K = wiener2(J,[5 5]);

処理後のイメージを表示します。イメージがかなり大きいので、イメージの一部のみを表示します。

figure
imshow(K(600:1000,1:600));
title('Portion of the Image with Noise Removed by Wiener Filter');

Figure contains an axes object. The axes object with title Portion of the Image with Noise Removed by Wiener Filter contains an object of type image.

入力引数

すべて折りたたむ

入力イメージ。2 次元数値配列として指定します。

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

近傍のサイズ。形式 [m n] の 2 要素ベクトルとして指定します。ここで、m は行数で、n は列数です。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical

加法性ノイズ。数値配列として指定します。ノイズを指定しない場合、wiener2 は局所分散の平均 mean2(localVar) を使用します。

データ型: single | double

出力引数

すべて折りたたむ

フィルター処理されたイメージ。サイズとデータ型が入力イメージ I と同じ数値配列として返されます。

加法性ノイズ パワーの推定値。数値配列として返されます。

アルゴリズム

wiener2 は、各ピクセル周辺の局所的な平均と分散を推定します。

μ=1NMn1,n2ηa(n1,n2)

および

σ2=1NMn1,n2ηa2(n1,n2)μ2,

ここで、η は、イメージ A 内の各ピクセルの NM 列の局所的な近傍です。wiener2 はこれらの推定値を使用してピクセル単位のウィーナー フィルターを作成します。

b(n1,n2)=μ+σ2ν2σ2(a(n1,n2)μ),

ここで、ν2 はノイズ分散です。ノイズ分散が指定されていない場合、wiener2 は局所的に推定された分散の平均を使用します。

参照

[1] Lim, Jae S. Two-Dimensional Signal and Image Processing, Englewood Cliffs, NJ, Prentice Hall, 1990, p. 548, equations 9.44, 9.45, and 9.46.

拡張機能

バージョン履歴

R2006a より前に導入

すべて展開する