バックナンバーはこちら。
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
斜面の方向パターン

とりあえず、非極大値抑制の理屈的な話は終わったのかな?

そうだね。

となると、あとは実際にどう試すか。
ってところか。

動作確認用の処理は以下の流れを想定している。
- Sobelフィルタ等の微分フィルタで以下を推定
- x軸、y軸の濃淡変化量
- 変化強度(ノルム)
- 「x軸、y軸の濃淡変化量」から勾配方向角を推定
- arntan関数を利用
- 勾配方向を垂直(UD)、水平(LR)、斜め右上から右下(RULD)、斜め左上から右下の4パターンに丸め。
- 勾配方向角に応じて極大値評価をして非極大値だったら「変化強度(ノルム)」 を0値埋め
- 画像出力

なんかすげぇことになってるな・・・。

一個一個はこれまでに説明した通りでそれほど複雑ではない。

(いつも言うんだよなー。「複雑ではない」って)
勾配方向角度について

あと、勾配方向の角度についてだが、一般的には弧度法を使用する。
しかし、今回はイメージのしやすさ重視で度数法を使用する。

弧度法ってラジアンとかの?

そうそう。
回転半径が分かれば、すぐに円周上の移動距離が分かって便利ではあるんだけど、
人間が見るにはイメージしずらいんだよね。

弧度法についてはここ参照。

たしか2πが360°、πで180°、1/2πで90°ってところか。
まぁ、度数法の方がすぐにどこら辺かは分かりやすいね。

というわけで次回から実際にプログラムを組んでいく。

おー!
まとめ

まとめだよ。
- 非極大値抑制をプログラムで実現する手順を確認。
- 一個一個はそれほど複雑ではない。(はず)
- 勾配方向角度については、度数法で扱う。
- プログラム的には弧度法の方が扱いやすいが、人間から見た分かり易さを重視。
バックナンバーはこちら。
コメント