Main Content

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

imgaborfilt

ガボール フィルターまたはガボール フィルター バンクの 2 次元イメージへの適用

説明

[mag,phase] = imgaborfilt(A,wavelength,orientation) は入力グレースケール イメージ A に対するガボール フィルターの振幅と位相の応答を計算します。wavelength は正弦搬送波の波長 (ピクセル/サイクル単位) を表します。orientation はフィルターの方向 (度単位) です。

[mag,phase] = imgaborfilt(A,wavelength,orientation,Name,Value) は、フィルターのさまざまな項目を制御する名前と値の引数を使用して、単一のガボール フィルターを適用します。

[mag,phase] = imgaborfilt(A,gaborbank) は、ガボール フィルター バンク gaborbank を入力イメージ A に適用します。

すべて折りたたむ

イメージをワークスペースに読み取り、グレースケールに変換します。

I = imread('board.tif');
I = im2gray(I);

ガボール フィルターをイメージに適用します。

wavelength = 4;
orientation = 90;
[mag,phase] = imgaborfilt(I,wavelength,orientation);

元のイメージと、ガボール フィルターで計算された振幅応答および位相応答のプロットを表示します。

tiledlayout(1,3)
nexttile
imshow(I)
title('Original Image')
nexttile
imshow(mag,[])
title('Gabor Magnitude')
nexttile
imshow(phase,[])
title('Gabor Phase')

Figure contains 3 axes objects. Axes object 1 with title Original Image contains an object of type image. Axes object 2 with title Gabor Magnitude contains an object of type image. Axes object 3 with title Gabor Phase contains an object of type image.

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

I = imread('cameraman.tif');

"フィルター バンク" と呼ばれるガボール フィルターの配列を作成します。このフィルター バンクには 2 つの方向と 2 つの波長が含まれています。

gaborArray = gabor([4 8],[0 90]);

フィルターを入力イメージに適用します。

gaborMag = imgaborfilt(I,gaborArray);

結果を表示します。図は各フィルターの振幅応答を示します。

figure
subplot(2,2,1);
for p = 1:4
    subplot(2,2,p)
    imshow(gaborMag(:,:,p),[]);
    theta = gaborArray(p).Orientation;
    lambda = gaborArray(p).Wavelength;
    title(sprintf('Orientation=%d, Wavelength=%d',theta,lambda));
end

Figure contains 4 axes objects. Axes object 1 with title Orientation=0, Wavelength=4 contains an object of type image. Axes object 2 with title Orientation=0, Wavelength=8 contains an object of type image. Axes object 3 with title Orientation=90, Wavelength=4 contains an object of type image. Axes object 4 with title Orientation=90, Wavelength=8 contains an object of type image.

入力引数

すべて折りたたむ

2 次元グレースケール イメージ。数値行列として指定します。

正弦搬送波の波長。ピクセル/サイクル単位で表された 2 以上の値をもつ数値として指定します。wavelength は、通常、2 から入力イメージの斜辺の長さまでの値をもちます[1]

フィルターの方向 (度単位)。範囲 [0, 360] の数値スカラーとして指定します。方向は正弦平面波に垂直な方向として定義します。

ガボール フィルター バンク。gabor オブジェクトまたは gabor オブジェクトの配列として指定します。

名前と値の引数

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。

R2021a より前では、コンマを使用して名前と値をそれぞれ区切り、Name を引用符で囲みます。

例: 'SpatialFrequencyBandwidth',2 は、2 オクターブの空間周波数帯域幅を指定します。

空間周波数帯域幅。数値スカラーとしてオクターブ単位で指定します。空間周波数帯域幅は、入力イメージの周波数成分が所要周波数 1/lambda から逸脱したときのフィルター応答のカットオフを決定します。空間周波数帯域幅の一般的な値は [0.5, 2.5] の範囲内です。

ガウス エンベロープの半長軸と半短軸の比 (semiminor/semimajor)。正の数値として指定します。この引数はガウス エンベロープの楕円率を制御します。空間縦横比の一般的な値は [0.23, 0.92] の範囲内です。

出力引数

すべて折りたたむ

ガボール フィルターまたはガボール フィルター バンクの振幅応答。単一のフィルターの場合は数値行列として返され、フィルター バンクの場合は数値配列として返されます。mag の p 番目の平面は、同じインデックスのガボール フィルター gaborbank(p) の振幅応答です。

データ型: double

ガボール フィルターまたはガボール フィルター バンクの位相応答。単一のフィルターの場合は数値行列として返され、フィルター バンクの場合は数値配列として返されます。phase の p 番目の平面は、同じインデックスのガボール フィルター gaborbank(p) の位相応答です。

データ型: double

ヒント

  • ガボール フィルター処理は周波数領域で実行されるため、イメージに Inf または NaN が含まれている場合、imgaborfilt の動作は定義されません。

  • single 以外のすべての入力データ型の場合、imgaborfiltdouble で計算を実行します。single 型の入力イメージは single 型でフィルター処理されます。imgaborfilt を呼び出す前に、入力イメージを single にキャストすると、パフォーマンスが最適化される場合があります。

参照

[1] Jain, Anil K., and Farshid Farrokhnia. "Unsupervised Texture Segmentation Using Gabor Filters." Pattern Recognition 24, no. 12 (January 1991): 1167–86. https://doi.org/10.1016/0031-3203(91)90143-S.

拡張機能

バージョン履歴

R2015b で導入