メインコンテンツ

gabor

R2026b

ガボール フィルターまたはガボール フィルター バンクの作成

説明

gabor オブジェクトは、特定の波長と方向をもつテクスチャに対する感度が高い線形ガボール フィルターを表します。

関数 gabor を使用することで、単一のガボール フィルターまたはガボール "フィルター バンク" を作成できます。フィルター バンクとは、複数の波長、方向、およびその他のオプション パラメーターの組み合わせを表す一連のフィルターのことです。たとえば、2 つの波長と 3 つの方向を指定した場合、ガボール フィルター バンクは、波長と方向の各組み合わせに対応した 6 つのフィルターで構成されます。

ガボール フィルターまたはガボール フィルター バンクをイメージに適用するには、関数 imgaborfilt を使用します。

作成

説明

g = gabor(Wavelength,Orientation) は、ガボール フィルターを作成し、Wavelength プロパティと Orientation プロパティにフィルターの波長と方向を設定します。

Wavelength または Orientation をベクトルとして指定すると、関数 gabor は gabor オブジェクトの配列を作成します。これには、Wavelength と Orientation の一意の組み合わせがすべて含まれています。

例

g = gabor(Wavelength,Orientation,PropertyName=Value) は、名前と値の引数も使用して、SpatialFrequencyBandwidth プロパティと SpatialAspectRatio プロパティのいずれかまたは両方を設定します。複数の名前と値の引数を指定できます。各プロパティ名を引用符で囲みます。

SpatialFrequencyBandwidth または SpatialAspectRatio をベクトルとして指定すると、関数 gabor は gabor オブジェクトの配列を作成します。これは、入力引数の値のすべての組み合わせを表します。

例: gabor(wavelength,orientation,"SpatialFrequencyBandwidth",2) は、2 オクターブの空間周波数帯域幅をもつガボール フィルターを作成します。

プロパティ

すべて展開する

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

gabor オブジェクト作成後に Wavelength プロパティを変更することはできません。

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

ガボール振幅応答のみを取得したい場合は、Orientation の範囲を [0, 180] に制限します。

gabor オブジェクト作成後に Orientation プロパティを変更することはできません。

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

gabor オブジェクト作成後に SpatialFrequencyBandwidth プロパティを変更することはできません。

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

gabor オブジェクト作成後に SpatialAspectRatio プロパティを変更することはできません。

この プロパティ は読み取り専用です。

空間カーネル。数値行列として指定します。

例

すべて折りたたむ

チェッカーボードのサンプル イメージを作成します。

A = checkerboard(20);

ガボール フィルターの配列を作成します。

wavelength = 20;
orientation = [0 45 90 135];
g = gabor(wavelength,orientation);

フィルターをチェッカーボード イメージに適用します。

outMag = imgaborfilt(A,g);

結果を表示します。

outSize = size(outMag);
outMag = reshape(outMag,[outSize(1:2),1,outSize(3)]);
montage(outMag,DisplayRange=[])
title("Montage of Gabor Magnitude Output Images")

Figure contains an axes object. The hidden axes object with title Montage of Gabor Magnitude Output Images contains an object of type image.

ガボール フィルターの配列を作成します。

g = gabor([5 10],[0 90]);

配列内のガボール フィルターごとに空間畳み込みカーネルの実数部を可視化します。

figure;
subplot(2,2,1)
for p = 1:length(g)
    subplot(2,2,p);
    imshow(real(g(p).SpatialKernel),[]);
    lambda = g(p).Wavelength;
    theta  = g(p).Orientation;
    title(sprintf('Re[h(x,y)], \\lambda = %d, \\theta = %d',lambda,theta));
end

Figure contains 4 axes objects. Hidden axes object 1 with title Re[h(x,y)], lambda = 5 , theta = 0 contains an object of type image. Hidden axes object 2 with title Re[h(x,y)], lambda = 10 , theta = 0 contains an object of type image. Hidden axes object 3 with title Re[h(x,y)], lambda = 5 , theta = 90 contains an object of type image. Hidden axes object 4 with title Re[h(x,y)], lambda = 10 , theta = 90 contains an object of type image.

参照

[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 で導入