バックナンバーはこちら。
https://www.simulationroom999.com/blog/compare-matlabpythonscilabjulia3-backnumber/
はじめに
畳み込み演算の微分フィルタの話。
各種微分フィルタ解説
登場人物
博識フクロウのフクさん

イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1
エンジニア歴8年の太郎くん

イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1
各種微分フィルタ

前回は、畳み込みカーネルをいろんな動機でいじくりまわした感じだったね。

実は、それぞれ名称があったりする。

お、そうなんだ。

ざっと以下になるな。
- 微分フィルタ
- 一次微分フィルタ
- Prewittフィルタ
- Sobelフィルタ
微分フィルタ

これが微分フィルタ。
一番最初に教えたやつだな。
\(
K_{dif}=
\begin{bmatrix}
0 \\
1 \\
0 \\
\end{bmatrix}
\begin{bmatrix}
-1 & 1 & 0
\end{bmatrix}=
\begin{bmatrix}
0 & 0 & 0 \\
-1 & 1 & 0 \\
0 & 0 & 0 \\
\end{bmatrix}
\)

とりあえず、引き算を実現して微分っぽくするやつだねー。
一次微分フィルタ

そして、これが一次微分フィルタ
\(
K_{dif1}=
\begin{bmatrix}
0 \\
1 \\
0 \\
\end{bmatrix}
\begin{bmatrix}
-1 & 0 & 1
\end{bmatrix}=
\begin{bmatrix}
0 & 0 & 0 \\
-1 & 0 & 1 \\
0 & 0 & 0 \\
\end{bmatrix}
\)

微分フィルタよりも演算結果が顕著になるやつだね。
Prewittフィルタ

そして、Prewittフィルタ
\(
K_{pre}=
\begin{bmatrix}
1 \\
1 \\
1 \\
\end{bmatrix}
\begin{bmatrix}
-1 & 0 & 1
\end{bmatrix}=
\begin{bmatrix}
-1 & 0 & 1 \\
-1 & 0 & 1 \\
-1 & 0 & 1 \\
\end{bmatrix}
\)

一次微分フィルタに平滑の要素を加えて、対ノイズ性を引き上げたものだね。
Sobelフィルタ

最後にSobelフィルタだ。
\(
K_{sbl}=
\begin{bmatrix}
1 \\
2 \\
1 \\
\end{bmatrix}
\begin{bmatrix}
-1 & 0 & 1
\end{bmatrix}=
\begin{bmatrix}
-1 & 0 & 1 \\
-2 & 0 & 2 \\
-1 & 0 & 1 \\
\end{bmatrix}
\)

これは平滑の要素をガウシアン的に変形したものだね。
ノイズ除去と画像の特性を残すという両方を兼ねることを目的としたもの。

ちゃんと覚えてるみたいだね。
今後の予定

で、これからは実際に各ツール、各言語で試してみるって感じになるのかな?

そうだね。
いろいろ対策をしたSobelフィルタを試す予定。

なのだが、実はいろいろ課題がある。
よって、その課題の認識と、対策方法を確定して、それに対して各ツール、各言語でお試しって感じだな。

ということは、まだいろいろあるんだな・・・。
まとめ

まとめだよ。
- 各種フィルタについて説明。
- 微分フィルタ
- 一次微分フィルタ
- Prewittフィルタ
- Sobelフィルタ
バックナンバーはこちら。
コメント