バックナンバーはこちら。
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フィルタでエッジ検出ができるっぽいのはわかったんだけど・・・。
なんか気になることがあるみたいだね。
エッジ部分って、白い線にはなってるんだけど、
この線って太かったり、細かったりするじゃん?
まぁ微分した結果が出てるだけだからね。
実際は純粋な一本線みたいな感じで検出できる方が理想的だとは思うだよね。
うむ。
それは正しい。
でも、なんか大変そうだし、特に取り扱わなくてもいっか。
それほど難しくはないな。
(こいつの言う「難しくない」はあんまり信用ならねぇんだよなぁ・・・。)
どうなっていたら良いのか。
ちなみに、その難しくないとされてる手法を使うとどんな感じになる想定なの?
こんなイメージだな。
元画像
Sobelフィルタ実施
某処理実施
おー!
確かに一本線になってるっぽい!
何をしたのか?
で、これって何をしたの?
非極大値抑制。
Non-maximum suppressionとも呼ばれるな。
YOLOのような物体検出器でも同様の用語が出てくるが、それとは別物。
物体検出器の方は複数のバウンディングボックス候補のうち最も正しいものだけを残すって機能だな。
まぁ、広義で同一の概念とは言えるかもしれないが。
名前的には極大値じゃないものを抑制?
それとも、極大値抑制をしないもの?
前者の意味だな。
つまり、極大値だけをピンポイントで残す手法だ。
手法の名前とどんなことやってそうかはわかったけど、
具体的に何すればいいかはさっぱりわからん。
そこは順に説明していこう。
以下の説明を想定している。
- 非極大値抑制の大雑把な雰囲気
- 2次元平面に実施する場合の考え方
- 勾配の特定方法
- 斜面の方向パターン
(なにが「難しくない」だ・・・。十分カオスじゃねぇか・・・。)
まとめ
まとめだよ。
- エッジ検出もっとシビアに行いたい。
- 非極大値抑制を使うといい感じになる。
- 同様の用語が物体検出器でも出てくるが別物。
- 具体的な話は順を追って説明する。
バックナンバーはこちら。
コメント