Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

imgradientxyz

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

説明

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

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

すべて折りたたむ

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

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

方向勾配を計算します。

[Gx, Gy, Gz] = imgradientxyz(vol);

方向勾配をモンタージュとして可視化します。

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

Figure contains an axes object. The axes object with title Gradient magnitude along X contains an object of type image.

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

Figure contains an axes object. The axes object with title Gradient magnitude along Y contains an object of type image.

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

Figure contains an axes object. The axes object with title Gradient magnitude along Z contains an object of type image.

入力引数

すべて折りたたむ

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

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

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

意味

'sobel'

ソーベル勾配演算子: ピクセルの勾配は、3 x 3 x 3 の近傍内のピクセルの重み付き和です。たとえば、奥行 (z) 方向では、3 つの平面での重みは次のようになります。

平面 z-1平面 z平面 z+1
[ 1  3  1 
  3  6  3 
  1  3  1 ]    
[ 0  0  0 
  0  0  0 
  0  0  0 ]    
[ -1  -3  -1 
  -3  -6  -3 
  -1  -3  -1 ]    

'prewitt'

プレウィット勾配演算子: ピクセルの勾配は、3 x 3 x 3 の近傍内のピクセルの重み付き和です。たとえば、奥行 (z) 方向では、3 つの平面での重みは次のようになります。

平面 z-1平面 z平面 z+1
[ 1  1  1 
  1  1  1 
  1  1  1 ]    
[ 0  0  0 
  0  0  0 
  0  0  0 ]    
[ -1  -1  -1 
  -1  -1  -1 
  -1  -1  -1 ]    

'central'

中心差分勾配: ピクセルの勾配は、近傍ピクセルの重み付き差です。たとえば、奥行 (z) 方向では、dI/dz = (I(z+1) - I(z-1))/2 です。

'intermediate'

中間差分勾配: ピクセルの勾配は、隣接するピクセルと現在のピクセルの間の差です。たとえば、奥行 (z) 方向では、dI/dz = I(z+1) - I(z) です。

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

データ型: char | string

出力引数

すべて折りたたむ

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

データ型: single | double

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

データ型: single | double

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

アルゴリズム

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

拡張機能

バージョン履歴

R2016a で導入