バックナンバーはこちら。
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°ってところか。
まぁ、度数法の方がすぐにどこら辺かは分かりやすいね。
というわけで次回から実際にプログラムを組んでいく。
おー!
まとめ
まとめだよ。
- 非極大値抑制をプログラムで実現する手順を確認。
- 一個一個はそれほど複雑ではない。(はず)
- 勾配方向角度については、度数法で扱う。
- プログラム的には弧度法の方が扱いやすいが、人間から見た分かり易さを重視。
バックナンバーはこちら。
コメント