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 object. The axes object 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 で導入