Main Content

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

imgradientxy

2 次元イメージの方向勾配の検出

説明

[Gx,Gy] = imgradientxy(I) は、グレースケール イメージまたはバイナリ イメージ I の方向勾配 GxGy を返します。

[Gx,Gy] = imgradientxy(I,method) は、指定された method を使用して方向勾配を返します。

すべて折りたたむ

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

I = imread('coins.png');

プレウィット勾配演算子を使用して、x 方向勾配と y 方向勾配を計算します。

[Gx, Gy] = imgradientxy(I,'prewitt');

方向勾配を表示します。

figure
imshowpair(Gx, Gy, 'montage');
title('Directional Gradients: x-direction, Gx (left), y-direction, Gy (right), using Prewitt method')

Figure contains an axes. The axes with title Directional Gradients: x-direction, Gx (left), y-direction, Gy (right), using Prewitt method contains an object of type image.

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

I = imread('coins.png');

x 方向勾配と y 方向勾配を計算します。既定では、imgradientxy はソーベル勾配演算子を使用します。

[Gx,Gy] = imgradientxy(I);

方向勾配を表示します。

imshowpair(Gx,Gy,'montage')
title('Directional Gradients Gx and Gy, Using Sobel Method')

Figure contains an axes. The axes with title Directional Gradients Gx and Gy, Using Sobel Method contains an object of type image.

方向勾配を使用して勾配の大きさと方向を計算します。

[Gmag,Gdir] = imgradient(Gx,Gy);

勾配の大きさと方向を表示します。

imshowpair(Gmag,Gdir,'montage')
title('Gradient Magnitude (Left) and Gradient Direction (Right)')

Figure contains an axes. The axes with title Gradient Magnitude (Left) and Gradient Direction (Right) contains an object of type image.

入力引数

すべて折りたたむ

入力イメージ。2 次元グレースケール イメージまたは 2 次元バイナリ イメージとして指定します。

データ型: single | double | int8 | int32 | uint8 | uint16 | uint32 | logical

勾配演算子。次のいずれかの値に指定します。

メソッド説明
'sobel'

ソーベル勾配演算子: ピクセルの勾配は、3 行 3 列の近傍内のピクセルの重み付き和です。垂直 (y) 方向では、重みは次のようになります。

[ 1  2  1 
  0  0  0 
 -1 -2 -1 ]
x 方向では、重みが転置されます。

'prewitt'

プレウィット勾配演算子: ピクセルの勾配は、3 行 3 列の近傍内のピクセルの重み付き和です。垂直 (y) 方向では、重みは次のようになります。

[ 1  1  1 
  0  0  0 
 -1 -1 -1 ]
x 方向では、重みが転置されます。

'central'

中心差分勾配: ピクセルの勾配は、近傍ピクセルの重み付き差です。y 方向では、dI/dy = (I(y+1) - I(y-1))/2 です。

'intermediate'

中間差分勾配: ピクセルの勾配は、隣接するピクセルと現在のピクセルの間の差です。y 方向では、dI/dy = I(y+1) - I(y) です。

データ型: char | string

出力引数

すべて折りたたむ

水平方向勾配。イメージ I と同じサイズの数値行列として返されます。横 (x) 軸は列の添字の増加方向を指しています。Gx のクラスは double です。ただし、入力イメージ I のクラスが single の場合は、Gx のクラスは single になります。

データ型: single | double

垂直方向勾配。イメージ I と同じサイズの数値行列として返されます。縦 (y) 軸は行の添字の増加方向を指しています。Gy のクラスは double です。ただし、入力イメージ I のクラスが single の場合は、Gy のクラスは single になります。

データ型: single | double

ヒント

  • イメージの境界で勾配演算子を適用するときに、イメージの境界外の値は最も近いイメージ境界値と等価であると見なされます。

アルゴリズム

アルゴリズムでは、x 軸と y 軸に対する方向勾配が計算されます。x 軸は右向きの列に沿って定義され、y 軸は下向きの行に沿って定義されます。

imgradientxy は勾配の出力を正規化しません。勾配の出力イメージの範囲が入力イメージの範囲と一致する必要がある場合、使用する method 引数に応じた勾配イメージの正規化を検討します。たとえば、ソーベル カーネルの正規化係数は 1/8、プレウィットの場合は 1/6 です。

拡張機能

R2012b で導入