Main Content

Edge Detection

ソーベル法、プレウィット法、ロバーツ法またはキャニー法を使用したイメージ内のオブジェクトのエッジ検出

  • ライブラリ:
  • Computer Vision Toolbox / Analysis & Enhancement

  • Edge Detection block

説明

Edge Detection ブロックは、入力イメージ内のオブジェクトのエッジを検出します。ブロックは次の 4 つの手法をサポートします。ソーベル、プレウィット、ロバーツ、キャニー。最初の 3 つの手法では、イメージの勾配の大きさを近似することによってエッジを検出します。その後、ブロックはソーベル カーネル、プレウィット カーネルまたはロバーツ カーネルをそれぞれ使用して入力行列を畳み込み、結果のイメージの勾配成分を出力します。さらに、ブロックは、勾配の大きさをしきい値処理して、エッジ検出のバイナリ イメージを出力します。

キャニー法では、ガウス フィルターの導関数を使用して入力イメージの勾配を計算します。次に、勾配の局所的最大値を探してエッジを検出します。この方法では強いエッジと弱いエッジを検出するために 2 つのしきい値を使用します。強いエッジと連結している場合にのみ、弱いエッジも出力されます。ブロックは、このメソッドのエッジ検出のバイナリ イメージを出力します。

端子

入力

すべて展開する

入力イメージ。強度値の行列として指定します。

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

メモ

キャニー法は、8 ビット、16 ビット、32 ビットの符号付き固定小数点整数や 8 ビット、16 ビット、32 ビットの符号なし整数をサポートしていません。

勾配からエッジを検出するには、しきい値をスカラーまたは 2 要素ベクトルとして指定します。この値のデータ型は、入力イメージのデータ型と一致しなければなりません。キャニー エッジ検出法の場合、しきい値は [0 1] の範囲の 2 要素ベクトルでなければなりません。他の手法の場合、しきい値はスカラーです。

依存関係

この端子を有効にするには、次のようにします。

  • [メソッド] パラメーターを [キャニー] に設定します。別の方法としては、[メソッド] パラメーターを [ソーベル][プレウィット]、または [ロバーツ] に設定し、[出力タイプ] パラメーターを [バイナリ イメージ] または [バイナリ イメージと勾配成分] に設定します。

  • [ユーザー定義のしきい値] を選択します。

  • [しきい値のソース] パラメーターを [入力端子] に設定します。

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

メモ

キャニー法は、8 ビット、16 ビット、32 ビットの符号付き固定小数点整数や 8 ビット、16 ビット、32 ビットの符号なし整数をサポートしていません。

出力

すべて展開する

エッジ検出。バイナリ イメージとして返されます。値が 1 のピクセルは、エッジ ピクセルを表します。

依存関係

[メソッド] パラメーターを [キャニー] に設定すると、この端子は常に有効になります。[ソーベル][プレウィット]、または [ロバーツ] のメソッドでこの端子を有効にするには、[出力タイプ] パラメーターを [バイナリ イメージ] または [バイナリ イメージと勾配成分] に設定します。

データ型: Boolean

垂直方向のエッジに対する勾配の応答の行列。

依存関係

この端子を有効にするには、パラメーターを次のように設定します。

  • メソッド[ソーベル] または [プレウィット]

  • 出力タイプ[勾配成分] または [バイナリ イメージと勾配成分]

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

水平方向のエッジに対する勾配の応答の行列。

依存関係

この端子を有効にするには、パラメーターを次のように設定します。

  • メソッド[ソーベル] または [プレウィット]

  • 出力タイプ[勾配成分] または [バイナリ イメージと勾配成分]

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

45 度のエッジに対する勾配の応答の行列。

依存関係

この端子を有効にするには、パラメーターを次のように設定します。

  • メソッドロバーツ

  • 出力タイプ[勾配成分] または [バイナリ イメージと勾配成分]

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

135 度のエッジに対する勾配の応答の行列。

依存関係

この端子を有効にするには、パラメーターを次のように設定します。

  • メソッドロバーツ

  • 出力タイプ[勾配成分] または [バイナリ イメージと勾配成分]

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

パラメーター

すべて展開する

メイン

入力イメージのエッジを検出する手法を指定します。[ソーベル][プレウィット][ロバーツ][キャニー] から選択できます。

次のいずれかのオプションから出力イメージのタイプを指定します。

  • バイナリ イメージ — ブロックは [エッジ] 端子でブール行列を出力します。1 とラベル付けされた行列の要素は、エッジ ピクセルを表します。

  • 勾配成分 — ブロックは勾配成分を出力します。メソッドが [ソーベル] および [プレウィット] の場合、勾配成分は、[Gh] 端子では水平エッジ応答、[Gv] 端子では垂直エッジ応答にそれぞれ対応します。メソッドが [ロバーツ] の場合、勾配成分は [G45] 端子では 45 度、[G135] 端子では 135 度のエッジ応答にそれぞれ対応します。

  • バイナリ イメージとイメージの勾配成分 — ブロックはバイナリ イメージとイメージの勾配成分の両方を出力します。

依存関係

このパラメーターを有効にするには、[メソッド] パラメーターを [ソーベル][プレウィット]、または [ロバーツ] に設定します。

ダイアログまたは [Th] 端子から、目的のしきい値を指定します。

依存関係

[メソッド] パラメーターを [キャニー] に設定すると、このパラメーターは常に有効になります。ソーベル法、プレウィット法、またはロバーツ法でこのパラメーターを有効にするには、[出力タイプ] パラメーターを [バイナリ イメージ] または [バイナリ イメージと勾配成分] に設定します。

次のいずれかのオプションから、しきい値を入力するためのソースを選択します。

  • 入力端子[Th] 端子を使用してしきい値を指定します。この値のデータ型は、入力イメージのデータ型と一致しなければなりません。

  • ダイアログにより指定 — 目的のしきい値をダイアログ ボックスに入力します。

依存関係

このパラメーターを有効にするには、次のようにします。

  • [メソッド] パラメーターを [キャニー] に設定します。別の方法としては、[メソッド] パラメーターを [ソーベル][プレウィット]、または [ロバーツ] に設定し、[出力タイプ] パラメーターを [バイナリ イメージ] または [バイナリ イメージと勾配成分] に設定します。

  • [ユーザー定義のしきい値] を選択します。

入力データの範囲内のしきい値を指定します。このしきい値は、ソーベル、プレウィット、およびロバーツのエッジ検出法に適用されます。

依存関係

このパラメーターを有効にするには、次のブロック パラメーターを設定します。

  • メソッド[ソーベル][プレウィット]、または [ロバーツ]

  • 出力タイプ[バイナリ イメージ] または [バイナリ イメージと勾配成分]

  • ユーザー定義のしきい値On

  • しきい値のソースダイアログにより指定

キャニー エッジ検出のしきい値を、[0 1] の範囲の 2 要素ベクトルとして指定します。ベクトルの各要素は、弱いエッジと強いエッジの下方しきい値と上方しきい値をそれぞれ指定します。

依存関係

このパラメーターを有効にするには、次のブロック パラメーターを設定します。

  • メソッドキャニー

  • ユーザー定義のしきい値On

  • しきい値のソースダイアログにより指定

しきい値を自動計算するためのしきい値スケール係数を指定します。ブロックは、勾配の大きさを 2 乗したイメージの平均値を使用して自動しきい値を計算し、このパラメーターの値に自動しきい値を乗算して新しいしきい値を決定します。

依存関係

このパラメーターを有効にするには、次のブロック パラメーターを設定します。

  • メソッド[ソーベル][プレウィット]、または [ロバーツ]

  • 出力タイプ[バイナリ イメージ] または [バイナリ イメージと勾配成分]

  • ユーザー定義のしきい値Off

出力イメージ内のエッジを細くするには、このパラメーターを選択します。このオプションを使用すると処理時間が長くなり、必要なメモリ リソースが増えます。

ヒント

[エッジ細線化] チェック ボックスをオフにし、[しきい値] パラメーターを使用してしきい値を指定すると、このブロックはメモリ使用量と処理時間に関して最も効率的になります。

依存関係

このパラメーターを有効にするには、次のブロック パラメーターを設定します。

  • メソッド[ソーベル][プレウィット]、または [ロバーツ]

  • 出力タイプ[バイナリ イメージ] または [バイナリ イメージと勾配成分]

弱いエッジのイメージ ピクセルと非エッジのイメージ ピクセルのおよその割合を指定します。ブロックは、この値を使用して自動しきい値を計算します。

依存関係

このパラメーターを有効にするには、次のブロック パラメーターを設定します。

  • メソッドキャニー

  • ユーザー定義のしきい値Off

キャニー エッジ検出アルゴリズムに使用されるガウス フィルターの標準偏差を指定します。

依存関係

このパラメーターを有効にするには、[メソッド] パラメーターを [キャニー] に設定します。

データ型

固定小数点ブロック パラメーターの詳細については、ブロックの固定小数点属性の指定を参照してください。

ブロックの特性

データ型

double | fixed point | integer | single

多次元信号

いいえ

可変サイズの信号

はい

参照

[1] Gonzales, Rafael C. and Richard E. Woods. Digital Image Processing. 2nd ed. Englewood Cliffs, NJ: Prentice Hall, 2002.

[2] Pratt, William K. Digital Image Processing, 2nd ed. NY: John Wiley & Sons, 1991.

拡張機能

C/C++ コード生成
Simulink® Coder™ を使用して C および C++ コードを生成します。

バージョン履歴

R2006a より前に導入

参考

|