【画像処理】プレヴィットフィルタの原理・特徴・計算式

スポンサーリンク
ビッグバナー(上2)

この記事では、画像処理におけるPrewitt(プレヴィット)フィルタの原理や特徴、計算式についてまとめました。

プレヴィットフィルタ

Prewitt(プレヴィット)は、画像から輪郭を抽出する空間フィルタの1つです。
このフィルタは、同様に輪郭検出を行う一次微分フィルタをノイズの影響を受けにくいように、平滑化処理を加えて改良したものです。
※プレヴィットフィルタを更に改良したものとしてソーベルフィルタ(Sobel filter)というものもあります。

■入力画像(左)、出力画像(右)

出力画像(フィルタを掛けた後)を見ると、輪郭の部分が白くなっている、つまり画素値が大きいことがわかります。

プレヴィットフィルタのカーネル

前回の記事では、一次微分フィルタについて紹介しました。
【参考文献】【画像処理】一次微分フィルタの原理・特徴・計算式

一次微分フィルタにおける、水平方向微分のカーネルK_x、および垂直方向微分のカーネルK_yは次の通りです。
(周囲1近傍の場合)

(1) \begin{eqnarray*} K_x= \left[ \begin{array}{ccc} 0 & 0 & 0 \\ -1 & 0 & 1 \\ 0 & 0 & 0 \\ \end{array} \right], K_y= \left[ \begin{array}{ccc} 0 & -1 & 0 \\ 0 & 0 & 0 \\ 0 & 1 & 0 \\ \end{array} \right] \end{eqnarray*}

一次微分フィルタのカーネルに単純な平滑化処理(ぼかし)を加えると、次のようになります。

(2) \begin{eqnarray*} K_x= \left[ \begin{array}{ccc} -1 & 0 & 1 \\ -1 & 0 & 1 \\ -1 & 0 & 1 \\ \end{array} \right], K_y= \left[ \begin{array}{ccc} -1 & -1 & -1 \\ 0 & 0 & 0 \\ 1 & 1 & 1 \\ \end{array} \right] \end{eqnarray*}

これがプレヴィットフィルタのカーネルとなります。
尚、水平方向微分では縦方向の輪郭を取り出すことができます。
逆に垂直方向微分では横方向の輪郭を取り出します。

計算例

入力画像Iとプレヴィットフィルタフィルタ(垂直方向微分)のカーネルKが次のように与えられたとき、出力画像I'を求めよ。

(3) \begin{eqnarray*} I= \left[ \begin{array}{ccccc} 0 & 0 & 0 &  0\\ 0& 10 & 10 &  0\\ 0&   0 & 10 &  0\\ 0 & 0 & 0 &  0\\ \end{array} \right], K= \left[ \begin{array}{ccccc} -1 & -1 & -1\\ 0 & 0  & 0\\ 1 & 1  & 1\\ \end{array} \right] \end{eqnarray*}

解説

入力画像IとカーネルK畳み込み演算してやると

(4) \begin{eqnarray*} I'(1,1)&=&1\cdot 10=10\\ I'(2,1)&=&1\cdot 10=10\\ I'(1,2)&=&(-1\cdot 10)+(-1\cdot 10)=-20\\ I'(2,2)&=&(-1\cdot 10)+(-1\cdot 10)=-20\\ \end{eqnarray*}

となります。今回は、入力画像の端の画素値は0とします。
また、0未満の画素値は0とします。

すると、出力画像I'は次のようになります。

(5) \begin{eqnarray*} I'= \left[ \begin{array}{ccccc} 0 & 0 & 0 &  0\\ 0& 10 & 10 &  0\\ 0& 0 & 0 &  0\\ 0 & 0 & 0 &  0\\ \end{array} \right] \end{eqnarray*}

【関連記事】
【画像処理入門】アルゴリズム&プログラミング

スポンサーリンク
レクタングル(下2)
レクタングル(下2)

シェア&フォローお願いします!