Dip-prewitt-operator

提供:Dev Guides
移動先:案内検索

プレウィットオペレーター

Prewitt演算子は、画像のエッジ検出に使用されます。 2種類のエッジを検出します

  • 水平エッジ
  • 垂直エッジ

エッジは、画像の対応するピクセル強度の差を使用して計算されます。 エッジ検出に使用されるすべてのマスクは、派生マスクとも呼ばれます。 このチュートリアルのシリーズで何度も述べたように、その画像は信号でもあるため、信号の変化は微分を使用してのみ計算できるためです。 そのため、これらの演算子は派生演算子または派生マスクとも呼ばれます。

すべての派生マスクには、次のプロパティが必要です。

  • マスクには反対記号が必要です。
  • マスクの合計はゼロに等しくなければなりません。
  • 重みが大きいほど、エッジ検出が多くなります。

Prewittオペレーターは、水平方向のエッジを検出するマスクと垂直方向のエッジを検出するマスクの2つのマスクを提供します。

縦方向

-1 0 1
-1 0 1
-1 0 1

上記のマスクは垂直方向のエッジを検出します。これは、垂直方向の列がゼロであるためです。 このマスクを画像上で畳み込むと、画像の垂直エッジが得られます。

使い方

このマスクを画像に適用すると、目立つ垂直エッジになります。 これは、単に一次微分として機能し、エッジ領域のピクセル強度の差を計算します。 中央の列はゼロであるため、画像の元の値は含まれませんが、その辺の右と左のピクセル値の差を計算します。 これによりエッジ強度が増加し、元の画像と比較して強調されます。

水平方向

-1 -1 -1
0 0 0
1 1 1

上記のマスクは水平方向のエッジを検出します。これは、ゼロ列が水平方向にあるためです。 このマスクを画像に畳み込むと、画像の顕著な水平方向のエッジになります。

使い方

このマスクは、画像の水平方向のエッジを際立たせます。 また、上記のマスクの原理に基づいて動作し、特定のエッジのピクセル強度間の差を計算します。 マスクの中央の行はゼロで構成されるため、画像のエッジの元の値は含まれず、特定のエッジの上下のピクセル強度の差を計算します。 したがって、強度の突然の変化を増やし、エッジをより見やすくします。 上記のマスクは両方とも、派生マスクの原則に従います。 両方のマスクには反対の符号があり、両方のマスクの合計はゼロに等しくなります。 上記のマスクは両方とも標準化されており、それらの値を変更できないため、この演算子では3番目の条件は適用されません。

次は、これらのマスクの動作を確認します。

サンプル画像

以下は、上記の2つのマスクを1つずつ適用するサンプル画像です。

Prewitt Operator

垂直マスクを適用した後

上記のサンプル画像に垂直マスクを適用すると、次の画像が得られます。 この画像には垂直エッジが含まれています。 水平方向のエッジの画像と比較することで、より正確に判断できます。

Prewitt Operator

水平マスクを適用した後

上記のサンプル画像に水平マスクを適用すると、次の画像が得られます。

Prewitt Operator

比較

ご覧のとおり、垂直マスクを適用した最初の画像では、すべての垂直エッジが元の画像よりも目立ちます。 同様に、2番目の図では、水平マスクを適用したため、すべての水平エッジが表示されています。 このようにして、画像から水平エッジと垂直エッジの両方を検出できることがわかります。