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

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

バックナンバーはこちら。
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

斜面の方向パターン

太郎くん
太郎くん

とりあえず、x方向とy方向のエッジから勾配の方向は特定できそうってところまでやった感じだね。

太郎くん
太郎くん

でも、360°の方向がわかると言っても、そんなに細かく見れるものなのかな?
画像データってピクセルの塊なわけだから、基本、縦と横方向しかなさそうなイメージがあるな。

フクさん
フクさん

中々鋭いね。
太郎くんの懸念した通りのだ。

太郎くん
太郎くん

ということは縦、横しか判定できない?

フクさん
フクさん

いんや。
斜め方向も確認可能だ。

斜面の方向パターンを図解

フクさん
フクさん

結論を言うと、
評価する勾配方向は
垂直(UD)、水平(LR)、斜め右上から右下(RULD)、斜め左上から右下(LURD)
の4パターンとなる。
勾配方向の角度をこの4パターンに丸める。
67.5[deg]~ 112.5[deg] or -112.5[deg]~ -67.5[deg]だったら垂直。
みたいな感じ。

太郎くん
太郎くん

うーん、言わんとすることはわからんでもないが・・・。

フクさん
フクさん

とりあえず図解しておこう。

非極大値抑制 斜面の方向、-22.5° ~ 22.5° LR、22.5° ~  67.5° RULD、67.5° ~ 112.5° UD、112.5° ~  157.5° LURD、157.5° ~  180.0° LR、-180.0° ~ -157.5° LR、-157.5° ~ -112.5° RULD、-112.5° ~  -67.5° UD、-67.5° ~  -22.5° LURD
フクさん
フクさん

ぱっと見、8方向ではあるのだが、
極大値を判定する際は、逆から見ても評価の線としては一緒なので、
その部分をまとめると4方向になる。
LR:水平
RULD:右上から左下
UD:垂直
LURD:左上から左下
角度を元にした変換表を書くとこんな感じだな。

角度[°]パターン
-22.5 ~ 22.5LR ─
22.5 ~ 67.5RULD /
67.5 ~ 112.5UD │
112.5 ~ 157.5LURD \
157.5 ~ 180.0LR ─
-180.0 ~ -157.5LR ─
-157.5 ~ -112.5RULD /
-112.5 ~ -67.5UD │
-67.5 ~ -22.5LURD \
太郎くん
太郎くん

つまり、中途半端な角度が出ても、この4パターンに丸めるってことか。
それはシンプルでありがたい。

フクさん
フクさん

まぁ、これは判定するピクセルを3×3マスをベースに考えた場合で、
5×5マス、7×7マスで見て、もっと細かいパターンを出すこともあるようだけど、
ここでは3×3マスをベースとした方向の丸めを採用しよう。

太郎くん
太郎くん

(これ以上ややこしくされても困るし)

まとめ

フクさん
フクさん

まとめだよ。

  • 非極大値抑制を実現するための斜面の方向パターンについて説明。
  • arctan関数で細かい方向は特定できるが、基本は4パターンに丸められる。
    • 判定ピクセルマスを5×5、7×7などにしてもっと細かくするパターンもある。

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

コメント

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