ドキュメンテーション

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

imgradient3

イメージの 3 次元勾配の大きさと方向の検出

構文

[Gmag,Gazimuth,Gelevation] = imgradient3(I)
[Gmag,Gazimuth,Gelevation] = imgradient3(I,method)
[Gmag,Gazimuth,Gelevation] = imgradient3(Gx,Gy,Gz)

説明

[Gmag,Gazimuth,Gelevation] = imgradient3(I) は、グレースケール イメージまたは 3 次元バイナリ イメージ I の勾配の大きさ Gmag、勾配の方向 Gazimuth および勾配の仰角 Gelevation を返します。

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

[Gmag,Gazimuth,Gelevation] = imgradient3(Gx,Gy,Gz) は、XGxYGy および ZGz に沿って方向勾配から勾配の大きさと方向を計算します。

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

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

すべて折りたたむ

3 次元データをワークスペースに読み取り、処理の準備を行います。

volData = load('mri');
sz = volData.siz;
vol = squeeze(volData.D);

勾配を計算します。

[Gmag, Gaz, Gelev] = imgradient3(vol);

勾配の大きさをモンタージュとして可視化します。

figure,
montage(reshape(Gmag,sz(1),sz(2),1,sz(3)),'DisplayRange',[])
title('Gradient magnitude')

入力引数

すべて折りたたむ

入力イメージ。非スパース、数値または論理値の 3 次元行列として指定します。

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

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

意味

'sobel'

ソーベル勾配演算子 (既定)

'prewitt'

プレウィット勾配演算子

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

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

データ型: char

x 軸 (水平方向) に沿った方向勾配。非スパース、数値または論理値の 3 次元行列として指定します。X 軸は列の添字の増加方向を指しています。この行列は Gy および Gz と同じサイズでなければなりません。imgradientxyzGx を返します。

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

y 軸 (垂直方向) に沿った方向勾配。非スパース、数値または論理値の 3 次元行列として指定します。Y 軸は行の添字の増加方向を指しています。この行列は Gx および Gz と同じサイズでなければなりません。imgradientxyzGy を返します。

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

z 軸に沿った方向勾配。非スパース、数値または論理値の 3 次元行列として指定します。この行列は Gx および Gy と同じサイズでなければなりません。imgradientxyzGz を返します。

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

出力引数

すべて折りたたむ

勾配ベクトルの大きさ。イメージ I と同じサイズの非スパース行列として返されます。

Gmagdouble クラスです。ただし、入力イメージ I または方向勾配 GxGyGz のいずれかが single クラスの場合を除きます。この場合、Gmagsingle クラスになります。

方位角。イメージ I と同じサイズの非スパース行列として返されます。Gazimuth には、正の X 軸から X-Y 平面に投影した点までを測定した範囲 [-180 180] 内の角度 (単位は度) が含まれます。

Gazimuthdouble クラスです。ただし、入力イメージ I または方向勾配 GxGyGz のいずれかが single クラスの場合を除きます。この場合、Gazimuthsingle クラスになります。

Gazimuth と Gelevation

勾配の仰角。イメージ I と同じサイズの非スパース行列として返されます。Gelevation には、半径方向のラインと x-y 平面との間を測定した範囲 [-90 90] 内の角度 (単位は度) が含まれます。

Gelevationdouble クラスです。ただし、入力イメージ I または方向勾配 GxGyGz のいずれかが single クラスの場合を除きます。この場合、Gelevationsingle クラスになります。

詳細

すべて折りたたむ

コード生成

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

コードを生成する際、入力引数 method はコンパイル時の定数でなければなりません。

MATLAB Function ブロック

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

アルゴリズム

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

R2016a で導入

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