Main Content

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

imgradient3

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

説明

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

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

[Gmag,Gazimuth,Gelevation] = imgradient3(Gx,Gy,Gz) は、それぞれ x 方向、y 方向、および z 方向の方向勾配 GxGy、および Gz から勾配の大きさ、方向、および仰角を計算します。

すべて折りたたむ

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

Figure contains an axes. The axes with title Gradient magnitude 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) です。

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

データ型: char | string

水平方向勾配。3 次元数値配列として指定します。横 (x) 軸は列の添字の増加方向を指しています。関数 imgradientxyz を使用して Gx を計算できます。

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

垂直方向勾配。Gx と同じサイズの 3 次元数値配列として指定します。縦 (y) 軸は行の添字の増加方向を指しています。関数 imgradientxyz を使用して Gy を計算できます。

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

奥行方向勾配。Gx と同じサイズの 3 次元数値配列として指定します。奥行 (z) 軸は平面の添字の増加方向を指しています。関数 imgradientxyz を使用して Gz を計算できます。

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

出力引数

すべて折りたたむ

勾配ベクトルの大きさ。イメージ I、または方向勾配 GxGyGz と同じサイズの 3 次元数値配列として返されます。

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

方位角。勾配の大きさ Gmag と同じサイズの 3 次元数値配列として返されます。Gazimuth には、正の x 軸から x-y 平面に投影した点までを測定した範囲 [-180, 180] 内の角度 (度単位) が含まれます。

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

Gazimuth と Gelevation

勾配の仰角。勾配の大きさ Gmag と同じサイズの 3 次元数値配列として返されます。Gelevation には、半径方向の直線と x-y 平面の間で測定した範囲 [-90, 90] 内の角度 (度単位) が含まれます。

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

アルゴリズム

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

拡張機能

R2016a で導入