Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

gabor

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

説明

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

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

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

作成

説明

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

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

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

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

例: 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)]);
figure, montage(outMag,'DisplayRange',[]);
title('Montage of gabor magnitude output images.');

Figure contains an axes object. The 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. Axes object 1 with title R e [ h ( x , y ) ] , blank lambda blank = blank 5 , blank theta blank = blank 0 contains an object of type image. Axes object 2 with title R e [ h ( x , y ) ] , blank lambda blank = blank 1 0 , blank theta blank = blank 0 contains an object of type image. Axes object 3 with title R e [ h ( x , y ) ] , blank lambda blank = blank 5 , blank theta blank = blank 9 0 contains an object of type image. Axes object 4 with title R e [ h ( x , y ) ] , blank lambda blank = blank 1 0 , blank theta blank = blank 9 0 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 で導入