バックナンバーはこちら。
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]だったら垂直。
みたいな感じ。
うーん、言わんとすることはわからんでもないが・・・。
とりあえず図解しておこう。
ぱっと見、8方向ではあるのだが、
極大値を判定する際は、逆から見ても評価の線としては一緒なので、
その部分をまとめると4方向になる。
LR:水平
RULD:右上から左下
UD:垂直
LURD:左上から左下
角度を元にした変換表を書くとこんな感じだな。
角度[°] | パターン |
---|---|
-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 \ |
つまり、中途半端な角度が出ても、この4パターンに丸めるってことか。
それはシンプルでありがたい。
まぁ、これは判定するピクセルを3×3マスをベースに考えた場合で、
5×5マス、7×7マスで見て、もっと細かいパターンを出すこともあるようだけど、
ここでは3×3マスをベースとした方向の丸めを採用しよう。
(これ以上ややこしくされても困るし)
まとめ
まとめだよ。
- 非極大値抑制を実現するための斜面の方向パターンについて説明。
- arctan関数で細かい方向は特定できるが、基本は4パターンに丸められる。
- 判定ピクセルマスを5×5、7×7などにしてもっと細かくするパターンもある。
バックナンバーはこちら。
コメント