ドキュメンテーション

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

imgradientxy

イメージの方向勾配

構文

  • [Gx,Gy] = imgradientxy(I)
  • [Gx,Gy] = imgradientxy(I,method)
  • [gpuarrayGx,gpuarrayGy] = imgradientxy(gpuarrayI,___)

説明

[Gx,Gy] = imgradientxy(I) は、入力イメージ I と同じサイズの方向勾配 GxGy を返します。

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

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

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

すべて折りたたむ

方向勾配の計算

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

I = imread('coins.png');

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

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

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

GPU での方向勾配の計算

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

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

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

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

figure, imshow(Gx, []), title('Directional gradient: X axis')
figure, imshow(Gy, []), title('Directional gradient: Y axis')

方向勾配に加えて勾配の大きさと方向を表示

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

I = imread('coins.png');
[Gx, Gy] = imgradientxy(I);
[Gmag, Gdir] = imgradient(Gx, Gy);
figure; imshowpair(Gmag, Gdir, 'montage'); axis off;
title('Gradient Magnitude, Gmag (left), and Gradient Direction, Gdir (right), using Sobel method')
figure; imshowpair(Gx, Gy, 'montage'); axis off;
title('Directional Gradients, Gx and Gy, using Sobel method')

方向勾配に加えて勾配の大きさと方向を GPU で計算

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

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

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

勾配を計算してイメージを表示します。

[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')

入力引数

すべて折りたたむ

I — 入力イメージグレースケール イメージ | バイナリ イメージ

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

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

gpuarrayI — 入力イメージgpuArray

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

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

method — 勾配演算子‘Sobel’ (既定値) | ‘Prewitt' | 'CentralDifference' | 'IntermediateDifference’

勾配演算子。次の表に示すテキスト文字列のいずれかで指定します。

メソッド説明
‘Sobel’ソーベル勾配演算子 (既定)
‘Prewitt’プレウィット勾配演算子
'CentralDifference',

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

'IntermediateDifference’

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

データ型: char

出力引数

すべて折りたたむ

Gx — x 軸に沿った方向勾配行列

x 軸に沿った方向勾配。イメージ I と同じサイズの非スパース行列として返されます。x 軸は列の添字の増加方向を指しています。出力行列は double クラスです。入力イメージが single クラスである場合には、single クラスとなります。

入力イメージ I が gpuArray の場合は、Gx は gpuArray です。

データ型: single | double

gpuarrayGx — x 軸に沿った方向勾配gpuArray

x 軸に沿った方向勾配。イメージ I と同じサイズの非スパース gpuArray として返されます。x 軸は列の添字の増加方向を指しています。出力行列は double クラスです。入力イメージが single クラスである場合には、single クラスとなります。

データ型: single | double

Gy — y 軸に沿った方向勾配行列

y 軸に沿った方向勾配。イメージ I と同じサイズの非スパース行列として返されます。y 軸は行の添字の増加方向を指しています。出力行列は double クラスです。入力イメージが single クラスである場合には、single クラスとなります。

データ型: single | double

gpuarrayGy — y 軸に沿った方向勾配gpuArray

y 軸に沿った方向勾配。イメージ I と同じサイズの非スパース gpuArray として返されます。y 軸は行の添字の増加方向を指しています。出力行列は double クラスです。入力イメージが single クラスである場合には、single クラスとなります。

データ型: single | double

詳細

すべて折りたたむ

ヒント

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

アルゴリズム

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

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