Main Content

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

fwind2

2 次元ウィンドウ法を使用する 2 次元 FIR フィルター

説明

関数 fwind2 はウィンドウ法を使用して 2 次元 FIR フィルターを設計します。fwind2 は 2 次元ウィンドウ仕様を使用して、目的の周波数応答に基づく 2 次元 FIR フィルターを設計します。fwind2 は 2 次元ウィンドウのみで機能します。1 次元ウィンドウから 2 次元 FIR フィルターを作成するには、fwind1 を使用します。

関数 filter2 を使用して 2 次元 FIR フィルターをイメージに適用できます。

h = fwind2(Hd,win) は、目的とする周波数応答 Hd の逆フーリエ変換とウィンドウ win による乗算を使用して 2 次元 FIR フィルター h を作成します。

h = fwind2(f1,f2,Hd,win) では目的とする周波数応答 Hdx 軸と y 軸に沿って任意の周波数 f1f2 で指定することができます。

すべて折りたたむ

この例では、2 次元ウィンドウ法を使用して、ほぼ円対称な 2 次元バンドパス フィルターを設計する方法を説明します。

freqspace を使用して、周波数範囲ベクトル f1 および f2 を作成します。これらのベクトルの長さは 21 です。

[f1,f2] = freqspace(21,'meshgrid');

中心周波数から各位置までの距離を計算します。

r = sqrt(f1.^2 + f2.^2);

目的とするバンドパス応答を格納する行列 Hd を作成します。この例で目的とする通過帯域は 0.1 ~ 0.5 (正規化周波数。ここで、1.0 はサンプリング周波数の 1/2 つまり π ラジアンに相当します) です。

Hd = ones(21); 
Hd((r<0.1)|(r>0.5)) = 0;

理想的なバンドパス応答を表示します。

colormap(parula(64))
mesh(f1,f2,Hd)

fspecial を使用して、2 次元ガウス ウィンドウを作成します。ウィンドウを正規化します。

win = fspecial('gaussian',21,2);
win = win ./ max(win(:));

ウィンドウを表示します。

mesh(win)

2 次元ウィンドウを使用して、目的とする周波数応答を最適に引き出すフィルターを設計します。

h = fwind2(Hd,win);

このフィルターの実際の周波数応答を表示します。

freqz2(h)

入力引数

すべて折りたたむ

直交座標平面に等間隔に配置された点での目的の周波数応答。数値行列として指定します。結果の精度を上げるには、関数 freqspace を使用して Hd を作成します。

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

2 次元ウィンドウ。数値行列として指定します。

データ型: single | double

x 軸上の目的の周波数。周波数ベクトルは [-1, 1] の範囲でなければなりません。ここで、1.0 はサンプリング周波数の 1/2 つまり π ラジアンに相当します。

データ型: single | double

y 軸上の目的の周波数。周波数ベクトルは [-1, 1] の範囲でなければなりません。ここで、1.0 はサンプリング周波数の 1/2 つまり π ラジアンに相当します。

データ型: single | double

出力引数

すべて折りたたむ

2 次元 FIR フィルター。win と同じサイズの数値行列として返されます。

データ型: double

アルゴリズム

fwind2 は逆フーリエ変換と 2 次元ウィンドウ win による乗算を使用して h を計算します。

hd(n1,n2)=1(2π)2ππππHd(ω1,ω2)ejω1n1ejω2n2dω1dω2

h(n1,n2)=hd(n1,n2)w(n1,n2)

参照

[1] Lim, Jae S., Two-Dimensional Signal and Image Processing, Englewood Cliffs, NJ, Prentice Hall, 1990, pp. 202-213.

バージョン履歴

R2006a より前に導入