※当サイトはPRを含みます

【画像処理】空間フィルタリング_微分/プリューウィット/ソーベルフィルタ

微分フィルタとは

微分フィルタ(Derivative Filter)は、デジタル画像の濃淡の変化を捉えるために使用されるフィルタであり、主にエッジ検出に用いられます。
一般的な数学の微分と同様に、画像においても隣接する画素の値の差を求めることで濃淡の変化を検出します。

微分の定義

連続関数の場合、関数 f(x)の微分は以下の式で定義されます。$$f'(x) = \lim_{h \to 0} \frac{f(x+h) – f(x)}{h}$$

デジタル画像では、離散的な画素値の集合であるため、右隣または左隣の画素との差分を計算することで近似的に微分を求めます。

微分フィルタ

微分フィルタにはいくつかの種類があります。横方向(X方向)の微分を求める場合、以下のようなカーネルを適用します。

基本的な微分フィルタ(横方向)

  • 右隣の画素との差を取るフィルタ:$$\begin{bmatrix} 0 & 0 & 0 \\ 0 & -1 & 1 \\ 0 & 0 & 0 \end{bmatrix}$$
  • 左右の差分の平均を取るフィルタ:$$\begin{bmatrix} 0 & 0 & 0 \\ -1 & 0 & 1 \\ 0 & 0 & 0 \end{bmatrix}$$

右隣の画素との差を取るフィルタを適用した画像が以下になります。
画像の方向のエッジが強く出ていいることが分かります。

基本的な微分フィルタ(横方向)

同様に縦方向(Y方向)の微分を求める場合は以下のようなカーネルを適用します。

  • 上の画素との差を取るフィルタ:$$\begin{bmatrix} 0 & 1 & 0 \\ 0 & -1 & 0 \\ 0 & 0 & 0 \end{bmatrix}$$
  • 上下の差分の平均を取るフィルタ:$$\begin{bmatrix} 0 & 1 & 0 \\ 0 & 0 & 0 \\ 0 & -1 & 0 \end{bmatrix}$$

上の画素との差を取るフィルタを適用した画像が以下になります。
画像の方向のエッジが強く出ていいることが分かります。

プリューウィットフィルタ

微分フィルタでは、画像の濃淡が急激に変化するエッジ部分を抽出できるが同時に画像に含まれるノイズを強調する傾向があります。
そこで、横方向の微分と縦方向平滑化を組み合わせたプリューウィットフィルタが用いることでノイズを抑えながらエッジを抽出することができます。同様に縦方向の微分と横方向平滑化を組み合わせたプリューウィットフィルタもあります

エッジの検出方向が水平方向(G_x)、垂直方向(G_y)のフィルタは以下の通りです。

$$G_x = \begin{bmatrix} -1 & 0 & 1 \\ -1 & 0 & 1 \\ -1 & 0 & 1 \end{bmatrix}$$
$$G_y = \begin{bmatrix} -1 & -1 & -1 \\ 0 & 0 & 0 \\ 1 & 1 & 1 \end{bmatrix}$$

ソーベルフィルタ

ソーベルフィルタは、プレウィットフィルタに比べて中央の係数を大きくすることで、エッジの検出性能を向上させたフィルタです。

$$G_x = \begin{bmatrix} -1 & 0 & 1 \\ -2 & 0 & 2 \\ -1 & 0 & 1 \end{bmatrix}$$
$$G_y = \begin{bmatrix} -1 & -2 & -1 \\ 0 & 0 & 0 \\ 1 & 2 & 1 \end{bmatrix}$$

おすすめ参考書