imgradientxy
2 次元イメージの方向勾配の検出
説明
例
プレウィット法を使用した方向勾配の計算
イメージをワークスペースに読み取ります。
I = imread("coins.png");
プレウィット勾配演算子を使用して、x 方向勾配と y 方向勾配を計算します。
[Gx,Gy] = imgradientxy(I,"prewitt");
方向勾配を表示します。
imshowpair(Gx,Gy,"montage"); title("Directional Gradients Gx and Gy, Using Prewitt Method")
方向勾配を使用した勾配の大きさと方向の計算
イメージをワークスペースに読み取ります。
I = imread('coins.png');
x 方向勾配と y 方向勾配を計算します。既定では、imgradientxy
はソーベル勾配演算子を使用します。
[Gx,Gy] = imgradientxy(I);
方向勾配を表示します。
imshowpair(Gx,Gy,'montage') title('Directional Gradients Gx and Gy, Using Sobel Method')
方向勾配を使用して勾配の大きさと方向を計算します。
[Gmag,Gdir] = imgradient(Gx,Gy);
勾配の大きさと方向を表示します。
imshowpair(Gmag,Gdir,'montage') title('Gradient Magnitude (Left) and Gradient Direction (Right)')
入力引数
I
— 入力イメージ
2 次元グレースケール イメージ | 2 次元バイナリ イメージ
入力イメージ。2 次元グレースケール イメージまたは 2 次元バイナリ イメージとして指定します。
データ型: single
| double
| int8
| int32
| uint8
| uint16
| uint32
| logical
method
— 勾配演算子
"sobel"
(既定値) | "prewitt"
| "central"
| "intermediate"
勾配演算子。次のいずれかの値に指定します。
Method | 説明 |
---|---|
"sobel" | ソーベル勾配演算子: ピクセルの勾配は、3 行 3 列の近傍内のピクセルの重み付き和です。垂直 (y) 方向では、重みは次のようになります。 [ 1 2 1 0 0 0 -1 -2 -1 ] |
"prewitt" | プレウィット勾配演算子: ピクセルの勾配は、3 行 3 列の近傍内のピクセルの重み付き和です。垂直 (y) 方向では、重みは次のようになります。 [ 1 1 1 0 0 0 -1 -1 -1 ] |
"central" | 中心差分勾配: ピクセルの勾配は、近傍ピクセルの重み付き差です。y 方向では、 |
"intermediate" | 中間差分勾配: ピクセルの勾配は、隣接するピクセルと現在のピクセルの間の差です。y 方向では、 |
データ型: char
| string
出力引数
Gx
— 水平方向勾配
数値行列
水平方向勾配。イメージ I
と同じサイズの数値行列として返されます。横 (x) 軸は列の添字の増加方向を指しています。Gx
のデータ型は double
です。ただし、入力イメージ I
のデータ型が single
の場合、Gx
のデータ型は single
になります。
データ型: single
| double
Gy
— 垂直方向勾配
数値行列
垂直方向勾配。イメージ I
と同じサイズの数値行列として返されます。縦 (y) 軸は行の添字の増加方向を指しています。Gy
のデータ型は double
です。ただし、入力イメージ I
のデータ型が single
の場合、Gy
のデータ型は single
になります。
データ型: single
| double
ヒント
イメージの境界で勾配演算子を適用するときに、イメージの境界外の値は最も近いイメージ境界値と等価であると見なされます。
アルゴリズム
アルゴリズムでは、x 軸と y 軸に対する方向勾配が計算されます。x 軸は右向きの列に沿って定義され、y 軸は下向きの行に沿って定義されます。
imgradientxy
は勾配の出力を正規化しません。勾配の出力イメージの範囲が入力イメージの範囲と一致する必要がある場合、使用する method
引数に応じた勾配イメージの正規化を検討します。たとえば、ソーベル カーネルの正規化係数は 1/8、プレウィットの場合は 1/6 です。
拡張機能
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
使用上の注意および制限:
imgradientxy
では C コードの生成がサポートされています (MATLAB® Coder™ が必要)。汎用のMATLAB Host Computer
ターゲット プラットフォームを選択した場合、プリコンパイルされたプラットフォーム固有の共有ライブラリを使用するコードが、imgradientxy
によって生成されます。共有ライブラリを使用するとパフォーマンスの最適化は維持されますが、コードを生成できるターゲット プラットフォームが限定されます。詳細については、Image Processing Toolbox でサポートされているコード生成のタイプを参照してください。method
の値はコンパイル時の定数でなければなりません。
GPU 配列
Parallel Computing Toolbox™ を使用してグラフィックス処理装置 (GPU) 上で実行することにより、コードを高速化します。
この関数は、GPU 配列を完全にサポートします。詳細については、GPU でのイメージ処理を参照してください。
バージョン履歴
R2012b で導入R2021b: MATLAB Coder を使用した C コードの生成
imgradientxy
は、C コードの生成をサポートするようになりました (MATLAB Coder が必要)。
参考
edge
| fspecial
| imgradient
| imgradient3
| imgradientxyz
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)