ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

imgaborfilt

ガボール フィルターまたはフィルターのセットの 2 次元イメージへの適用

構文

[mag,phase] = imgaborfilt(A,wavelength,orientation)
[mag,phase] = imgaborfilt(A,gaborbank)
[mag,phase] = imgaborfilt(A,wavelength,orientation,name,value,...)

説明

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

[mag,phase] = imgaborfilt(A,gaborbank) はガボール フィルターの配列 gaborbank を入力イメージ A に適用します。gaborbank は "フィルター バンク" と呼ばれる、ガボール オブジェクトの 1 行 P 列の配列です。magphase はイメージ スタックであり、スタック内の各平面がフィルター バンクの出力の 1 つに対応します。サイズ A の入力の場合、出力の magphasegaborbank の各フィルターの振幅と位相の応答を含み、サイズが M x N x P になります。振幅応答と位相応答の各平面 mag(:,:,ind),phase(:,:,ind) は同じインデックスのガボール フィルター gaborBank(ind) を適用した結果を示します。

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

コード生成 サポート: あり。

MATLAB Function ブロック サポート: あり。

すべて折りたたむ

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

I = imread('board.tif');

イメージをグレースケールに変換します。

I = rgb2gray(I);

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

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

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

figure
subplot(1,3,1);
imshow(I);
title('Original Image');
subplot(1,3,2);
imshow(mag,[])
title('Gabor magnitude');
subplot(1,3,3);
imshow(phase,[]);
title('Gabor phase');

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

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

入力引数

すべて折りたたむ

入力グレースケール イメージ。実数、非スパースの 2 次元行列として指定します。

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

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

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

正弦搬送波の波長。範囲 [2,Inf) の数値スカラーとしてピクセル/サイクル単位で指定します。

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

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

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

ガボール フィルターの配列。gabor オブジェクトとして指定します。ガボール フィルターの配列を作成するには、関数 gabor を使用しなければなりません。

名前/値のペアの引数

オプションの Name,Value 引数のペアをコンマ区切りで指定します。ここで、Name は引数名で、Value は対応する値です。Name は単一引用符 (' ') で囲まなければなりません。Name1,Value1,...,NameN,ValueN のように、複数の名前と値のペアの引数を任意の順番で指定できます。

例: [mag,phase] = imgaborfilt(I,4,90,'SpatialFrequencyBandwidth',2);

すべて折りたたむ

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

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

ガウス エンベロープの半長軸と半短軸の比 (semi-minor/semi-major)。数値スカラーとして指定します。このパラメーターはガウス エンベロープの楕円率を制御します。空間縦横比の一般的な値は [0.23 0.92] の範囲内です。

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

出力引数

すべて折りたたむ

ガボール フィルターの振幅応答。double クラスの数値配列として返されます。

ガボール フィルターの位相応答。double クラスの数値配列として返されます。

詳細

すべて折りたたむ

コード生成

この関数では MATLAB® Coder™ を使用した C コードの生成がサポートされています。詳細は、「画像処理のコード生成」を参照してください。

コード生成時には、以下の点に注意してください。

  • wavelengthorientationSpatialFrequencyBandwidth および SpatialAspectRatio はコンパイル時の定数でなければなりません。

  • フィルター バンク構文はサポートされていません。

MATLAB Function ブロック

この関数は Simulink の MATLAB Function ブロックで使用できます。

参考

R2015b で導入

この情報は役に立ちましたか?