ドキュメンテーション

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

imgradient

イメージの勾配の大きさと方向

構文

[Gmag,Gdir] = imgradient(I)
[Gmag,Gdir] = imgradient(I,method)
[gpuarrayGmag,gpuarrayGdir] = imgradient(gpuarrayI,___)
[Gmag,Gdir] = imgradient(Gx,Gy)
[gpuarrayGmag,gpuarrayGdir] = imgradient(gpuarrayGx,gpuarrayGy)

説明

[Gmag,Gdir] = imgradient(I) は、グレースケール イメージまたはバイナリ イメージ I の勾配の大きさ Gmag と勾配の方向 Gdir を返します。

[Gmag,Gdir] = imgradient(I,method) は、指定された method を使用して勾配の大きさと方向を返します。

[gpuarrayGmag,gpuarrayGdir] = imgradient(gpuarrayI,___) は GPU で演算を実行します。入力イメージと戻り値は gpuArray です。この構文では Parallel Computing Toolbox™ が必要です。

[Gmag,Gdir] = imgradient(Gx,Gy) は、imgradientxy で返されるような x 軸と Gx および y 軸と Gy に沿って方向勾配を使用し、勾配の大きさと方向を返します。x 軸は列の添字が増加する方向を指し、y 軸は行の添字が増加する方向を指しています。

[gpuarrayGmag,gpuarrayGdir] = imgradient(gpuarrayGx,gpuarrayGy) は GPU で演算を実行します。入力 x と y の勾配と戻り値は gpuArray です。この構文では Parallel Computing Toolbox が必要です。

すべて折りたたむ

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

I = imread('coins.png');

プレウィット勾配演算子を指定して勾配の大きさと方向を計算します。

[Gmag, Gdir] = imgradient(I,'prewitt');

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

figure
imshowpair(Gmag, Gdir, 'montage');
title('Gradient Magnitude, Gmag (left), and Gradient Direction, Gdir (right), using Prewitt method')

イメージを読み取り、プレウィットの勾配演算子を使用して勾配の大きさと方向を計算します。

イメージを読み取ります。

I = gpuArray(imread('coins.png'));
imshow(I)

勾配を計算して表示します。

[Gmag, Gdir] = imgradient(I,'prewitt');

figure, imshow(Gmag, []), title('Gradient magnitude')
figure, imshow(Gdir, []), title('Gradient direction')

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

I = imread('coins.png');

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

[Gx, Gy] = imgradientxy(I);

方向勾配を表示します。

figure
imshowpair(Gx, Gy, 'montage')
title('Directional Gradients, Gx and Gy, using Sobel method')

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

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

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

figure
imshowpair(Gmag, Gdir, 'montage')
title('Gradient Magnitude, Gmag (left), and Gradient Direction, Gdir (right), using Sobel method')

イメージを読み取り、既定のソーベル勾配演算子を使用して、方向勾配 GxGy を、勾配の大きさと方向を表す Gmag および Gdir と共に返します。

イメージを読み取ります。

I = gpuArray(imread('coins.png'))

勾配を計算して表示します。imgradientxy に gpuArray を指定すると、GxGy は gpuArray として返されます。結果は前の例と同じになります。

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

figure, imshow(Gmag, []), title('Gradient magnitude')
figure, imshow(Gdir, []), title('Gradient direction')
figure, imshow(Gx, []), title('Directional gradient: X axis')
figure, imshow(Gy, []), title('Directional gradient: Y axis')

入力引数

すべて折りたたむ

グレースケール イメージまたはバイナリ イメージとして指定される入力イメージ。数値または論理値の 2 次元行列で、非スパースでなければなりません。

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

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

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

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

メソッド説明
'sobel'ソーベル勾配演算子 (既定)
'prewitt'プレウィット勾配演算子
'central'

中央差分勾配: dI/dx = (I(x+1) - I(x-1))/2

'intermediate'

中間差分勾配: dI/dx = I(x+1) - I(x)

'roberts'ロバーツ勾配演算子

データ型: char

x 軸 (水平方向) に沿った方向勾配。通常 imgradientxy によって返されるイメージ I と同じサイズの非スパース行列として指定します。

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

y 軸 (垂直方向) に沿った方向勾配。通常 imgradientxy によって返されるイメージ I と同じサイズの非スパース行列として指定します。

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

x 軸に沿った方向勾配。通常 imgradientxy で返される gpuArray として指定します。

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

y 軸に沿った方向勾配。通常 imgradientxy で返される gpuArray として指定します。

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

出力引数

すべて折りたたむ

イメージ I と同じサイズの非スパース行列として返される勾配の大きさです。Gmagdouble クラスです。ただし、入力イメージ I のクラスが single の場合は、single クラスになります。

データ型: double | single

勾配の大きさ。イメージ I と同じサイズの非スパース gpuArray として返されます。Gmagdouble クラスです。ただし、入力イメージ I のクラスが single の場合は、single クラスになります。

データ型: double | single

勾配の方向。イメージ I と同じサイズの非スパース行列として返されます。Gdir には、正の x 軸から反時計回りで測定した範囲 [-180 180] 内の角度が含まれます (x 軸は列の添字の増加方向を指しています)。Gdir のクラスは double です。ただし、入力イメージ I のクラスが single の場合は、クラス single になります。

I または GxGy が gpuArray の場合は Gdir は gpuArray になります。

データ型: double | single

勾配の方向。イメージ I と同じサイズの非スパース gpuArray として返されます。Gdir には、正の x 軸から反時計回りで測定した範囲 [-180 180] 内の角度が含まれます (x 軸は列の添字の増加方向を指しています)。Gdir のクラスは double です。ただし、入力イメージ I のクラスが single の場合は、クラス single になります。

データ型: double | single

ヒント

  • イメージの境界で勾配演算子を適用するときに、イメージの境界外の値は最も近いイメージ境界値と等価であると見なされます。これは imfilter'replicate' 境界オプションと似ています。

アルゴリズム

記載された各勾配メソッドに対し imgradient で使用されるアルゴリズムでは、まず x 軸と y 軸に対する方向勾配 GxGy を計算します。x 軸は右向きの列に沿って定義され、y 軸は下向きの行に沿って定義されます。その後、勾配の大きさと方向が直行成分 GxGy から計算されます。

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

R2012b で導入

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