【画像処理】ラプラシアンフィルタの原理・特徴・計算式

この記事では、画像処理におけるLaplacian Filter(ラプラシアンフィルタ)の原理や特徴、計算式についてまとめました。

ラプラシアンフィルタ

ラプラシアンフィルタ(Laplacian Filter)は、二次微分を利用して画像から輪郭を抽出する空間フィルタです。

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

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

カーネルの導出方法

デジタル画像は離散データなので、微分は差分で計算することができます。
水平方向および垂直方向の画素値の一次微分I_{x}, I_{y}は次式で表せます。

(1) \begin{eqnarray*} I_{x}(x, y)=I(x+1, y)-I(x, y)\\ I_{y}(x, y)=I(x, y+1)-I(x, y) \end{eqnarray*}

二次微分I_{xx}, I_{yy}はもう一度差分を取ることで計算できます。

(2) \begin{eqnarray*} I_{xx}(x, y)&=&{I(x+1, y)-I(x, y)}-{I(x, y)-I(x-1, y)} \\ &=&I(x-1, y)-2I(x, y)+I(x+1, y)\\ I_{yy}(x, y)&=&{I(x, y+1)-I(x, y)}-{I(x, y)-I(x, y-1)} \\ &=&I(x, y-1)-2(x, y)+I(x, y+1) \end{eqnarray*}

よって、ラプラシアン\nabla^2I(x, y)は以下のように表せます。

(3) \begin{eqnarray*} \nabla^2I(x, y)&=&I_{xx}(x, y)+I_{yy}(x, y) \\ &=&I(x-1, y)+I(x, y-1)-4I(x, y) + I(x+1, y)+I(x, y+1) \end{eqnarray*}

ラプラシアン\nabla^2I(x, y)の計算結果からカーネルK_4は次のように求まります。

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

上式はラプラシアンフィルタのカーネル(4近傍)となります。
ラプラシアンフィルタのカーネルは、4近傍(上下左右)だけでなく、斜め方向の2次微分も加えた8近傍K_8のカーネルも存在します。

(5) \begin{eqnarray*} K_8= \left[ \begin{array}{ccc} 1 & 1 &  1 \\ 1 &  -8 &  1 \\ 1 &  1 &  1 \\ \end{array} \right] \end{eqnarray*}

4近傍と8近傍の違いは、「微分を取る近傍の画素数」です。

説明
4近傍 注目画素の上下左右の4画素の二次微分を取る
8近傍 注目画素の上下左右だけでなく斜めも加えた8画素の二次微分を取る

計算例(例題)

入力画像Iとラプラシアンフィルタ(4近傍)のカーネルKが次のように与えられたとき、出力画像I'を求めよ。

(6) \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} 0 & 1 & 0\\ 0 & -4  & 0\\ 0 & 1 & 0\\ \end{array} \right] \end{eqnarray*}

解説

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

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

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

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

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

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

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

コメント

  1. tatsu より:

    nice!!