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

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

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

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

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

入力引数

すべて折りたたむ

入力イメージ。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 より前に導入

すべて展開する