MATLAB,Python,Scilab,Julia比較 第3章 その38【非極大値抑制③】

MATLAB,Python,Scilab,Julia比較 第3章 その38【非極大値抑制③】 数値計算
MATLAB,Python,Scilab,Julia比較 第3章 その38【非極大値抑制③】

バックナンバーはこちら。
https://www.simulationroom999.com/blog/compare-matlabpythonscilabjulia3-backnumber/

はじめに

非極大値抑制なるものの説明続き。

  • 非極大値抑制の大雑把な雰囲気
  • 2次元平面に実施する場合の考え方
  • 勾配の特定方法
  • 斜面の方向パターン

の「勾配の特定方法」について。

登場人物

博識フクロウのフクさん

指差しフクロウ

イラスト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

勾配の特定方法

太郎くん
太郎くん

前回で、いろんな方向から極大値を見つける必要があるってのはわかったけど、
どうしたら良いかがよくわからないんだよね。

フクさん
フクさん

実は、Sobelフィルタの時にこれを実現し得る情報をすでに得ている。

太郎くん
太郎くん

え?そうなの?

フクさん
フクさん

Sobelフィルタって横方向と縦方向のエッジ検出を合成したと思うけど、
その時に横方向ことx軸、縦方向ことy軸のを得ている。

太郎くん
太郎くん

確かに、途中経過として出してはいるね。

フクさん
フクさん

これらは、各方向の濃淡であり、これを利用すると濃淡の斜面の方向が分かるようになる。

太郎くん
太郎くん

ちょっと何言ってるのかわからない・・・。

フクさん
フクさん

x方向が1で、yが0なら横方向の斜面。
x方向が0で、yが1なら縦方向の斜面。
x方向が1で、yが1なら斜め方向の斜面。
まぁ、実際は切りの良い数値にはならなから、もっと細かい、360°のどこの方向を向いている斜面かが特定可能だ。

太郎くん
太郎くん

うーん、またイマイチ飲み込めてない感じはあるが、
言わんとすることは分かるかな。

フクさん
フクさん

そして、それを角度に表現しなおせば、どの方向の斜面に対して極大値を評価すれば良いかが確定する。

太郎くん
太郎くん

んー、角度に直せるの?

フクさん
フクさん

arctan関数を使えば一撃。

arctan関数

太郎くん
太郎くん

arctan関数!!
なんか脳がその情報を拒否する!!

フクさん
フクさん

そんな複雑なものじゃないよ・・・。
tan関数の逆関数だ。

太郎くん
太郎くん

tan関数って、直角三角形の縦÷横をした結果だよね・・・。

フクさん
フクさん

そうそう。
厳密には角度θが分かっていれば、縦÷横の結果を算出できるもの。
だな。

太郎くん
太郎くん

で、arctan関数は何してくれるの?

フクさん
フクさん

「縦÷横」が分かっていれば、角度θが求められる。

濃淡の勾配を求める雰囲気

フクさん
フクさん

まず、濃淡のx,yと濃淡斜面方向角度の関係を図示すると以下になる。

濃淡ベクトルと斜面方向角度の関係、θ、G_y、G_x
フクさん
フクさん

そして、これをtan関数を使って表現すると以下になる。

\(
\displaystyle\tan(\theta)=\frac{G_y}{G_x}
\)

太郎くん
太郎くん

まぁ、tan関数の定義そのものだよね。

フクさん
フクさん

これをtan関数の逆関数である、arctanで表現しなおす。

\(
\displaystyle\theta=\tan^{-1}\frac{G_y}{G_x}=\arctan\frac{G_y}{G_x}
\)

太郎くん
太郎くん

おー!?
arctan関数、むっちゃ便利関数じゃない?!

フクさん
フクさん

そうそう。
だから、この便利関数を利用すれば一撃で濃淡の勾配方向角度が求められる。

まとめ

フクさん
フクさん

まとめだよ。

  • 非極大値抑制の「勾配の特定方法」について解説。
  • 2次元平面で考えるためには勾配の方向が重要。
  • 勾配の方向は、横、縦それぞれの傾斜度合いから推定可能。
    • 実際にはarctan関数を使用する。
      • arctan関数はtan関数の逆関数。

バックナンバーはこちら。

コメント

タイトルとURLをコピーしました