imgradient3
3 次元イメージの勾配の大きさと方向の検出
構文
説明
[
は、3 次元のグレースケール イメージまたはバイナリ イメージ Gmag
,Gazimuth
,Gelevation
] = imgradient3(I
)I
の勾配の大きさ Gmag
、勾配の方向 Gazimuth
および勾配の仰角 Gelevation
を返します。
[
は、指定された Gmag
,Gazimuth
,Gelevation
] = imgradient3(I
,method
)method
を使用して勾配の大きさ、方向、および仰角を計算します。
例
ソーベル法を使用した 3 次元勾配の大きさと方向の計算
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')
入力引数
I
— 入力イメージ
3 次元グレースケール イメージ | 3 次元バイナリ イメージ
入力イメージ。3 次元グレースケール イメージまたは 3 次元バイナリ イメージとして指定します。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
method
— 勾配演算子
"sobel"
(既定値) | "prewitt"
| "central"
| "intermediate"
勾配演算子。次のいずれかの値に指定します。
値 | 平均 | ||||||
---|---|---|---|---|---|---|---|
| ソーベル勾配演算子: ピクセルの勾配は、3 x 3 x 3 の近傍内のピクセルの重み付き和です。たとえば、奥行 (z) 方向では、3 つの平面での重みは次のようになります。
| ||||||
| プレウィット勾配演算子: ピクセルの勾配は、3 x 3 x 3 の近傍内のピクセルの重み付き和です。たとえば、奥行 (z) 方向では、3 つの平面での重みは次のようになります。
| ||||||
"central" | 中心差分勾配: ピクセルの勾配は、近傍ピクセルの重み付き差です。たとえば、奥行 (z) 方向では、 | ||||||
"intermediate" | 中間差分勾配: ピクセルの勾配は、隣接するピクセルと現在のピクセルの間の差です。たとえば、奥行 (z) 方向では、 |
イメージの境界で勾配演算子を適用するときに、imgradient3
はイメージの境界外の値は最も近いイメージ境界値と等価であると見なします。この動作は imfilter
の "replicate"
境界オプションと似ています。
データ型: char
| string
Gx
— 水平方向勾配
3 次元数値配列
水平方向勾配。3 次元数値配列として指定します。横 (x) 軸は列の添字の増加方向を指しています。関数 imgradientxyz
を使用して Gx
を計算できます。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
Gy
— 垂直方向勾配
3 次元数値配列
垂直方向勾配。Gx
と同じサイズの 3 次元数値配列として指定します。縦 (y) 軸は行の添字の増加方向を指しています。関数 imgradientxyz
を使用して Gy
を計算できます。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
Gz
— 奥行方向勾配
3 次元数値配列
奥行方向勾配。Gx
と同じサイズの 3 次元数値配列として指定します。奥行 (z) 軸は平面の添字の増加方向を指しています。関数 imgradientxyz
を使用して Gz
を計算できます。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
出力引数
Gazimuth
— 方位角
3 次元数値配列
方位角。勾配の大きさ Gmag
と同じサイズの 3 次元数値配列として返されます。Gazimuth
には、正の x 軸から x-y 平面に投影した点までを測定した範囲 [-180, 180] 内の角度 (度単位) が含まれます。
Gazimuth
は double
クラスです。ただし、入力イメージまたはいずれかの方向勾配が single
クラスの場合を除きます。この場合、Gmag
は single
クラスになります。
Gazimuth と Gelevation
Gelevation
— 勾配の仰角
3 次元数値配列
勾配の仰角。勾配の大きさ Gmag
と同じサイズの 3 次元数値配列として返されます。Gelevation
には、半径方向の直線と x-y 平面の間で測定した範囲 [-90, 90] 内の角度 (度単位) が含まれます。
Gelevation
は double
クラスです。ただし、入力イメージまたはいずれかの方向勾配が single
クラスの場合を除きます。この場合、Gmag
は single
クラスになります。
アルゴリズム
imgradient3
は勾配の出力を正規化しません。勾配の出力イメージの範囲が入力イメージの範囲と一致する必要がある場合、使用する method
引数に応じた勾配イメージの正規化を検討します。たとえば、ソーベル カーネルの正規化係数は 1/44、プレウィットの正規化係数は 1/18 です。
拡張機能
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
使用上の注意および制限:
imgradient3
では C コードの生成がサポートされています (MATLAB® Coder™ が必要)。詳細については、イメージ処理のコード生成を参照してください。コードを生成する際、入力引数
method
はコンパイル時の定数でなければなりません。
GPU コード生成
GPU Coder™ を使用して NVIDIA® GPU のための CUDA® コードを生成します。
使用上の注意および制限:
コードを生成する際、入力引数
method
はコンパイル時の定数でなければなりません。
スレッドベースの環境
MATLAB® の backgroundPool
を使用してバックグラウンドでコードを実行するか、Parallel Computing Toolbox™ の ThreadPool
を使用してコードを高速化します。
この関数は、スレッドベースの環境を完全にサポートします。詳細については、スレッドベースの環境での MATLAB 関数の実行を参照してください。
バージョン履歴
R2016a で導入R2022b: スレッドベース環境のサポート
imgradient3
は、スレッドベースの環境をサポートするようになりました。
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)