バックナンバーはこちら。
https://www.simulationroom999.com/blog/compare-matlabpythonscilabjulia3-backnumber/
はじめに
畳み込み演算の微分フィルタの話。
まずはエッジ検出の雰囲気について。
登場人物
博識フクロウのフクさん
![指差しフクロウ](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
イラストACにて公開の「kino_k」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=iKciwKA9&area=1
エンジニア歴8年の太郎くん
![技術者太郎](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
イラストACにて公開の「しのみ」さんのイラストを使用しています。
https://www.ac-illust.com/main/profile.php?id=uCKphAW2&area=1
画像処理と言えば?
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者02アップ.png)
前回までで、ガウシアンフィルタってのが終わったところだね。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
そうそう。
最も基本的な画像処理という位置づけになるな。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」20アップ.png)
で、その画像処理なんだけど、
ガウシアンフィルタがノイズ除去してくれそうなのはわかったけど、
あんまり画像処理って感じがしないんだよなー。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/はてなフクロウ.png)
ほう?
じゃー、太郎くんが思う画像処理ってどうなの?
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者02アップ.png)
太郎くん:
例えば、写真に写ってるモノの輪郭を抽出するとか。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
なるほど。
いわゆるエッジ検出だな。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」20アップ.png)
どうやるかは知らないけど、
雰囲気的に大変そうだよねー。
大変そうだったらやらなくても良いかなー。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
それほど大変ってことはないな。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」13アップ.png)
そうなの?
エッジ検出の考え方
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
まずはエッジ検出を考えるために以下の画像を用意した。
![犬と自転車輝度](https://www.simulationroom999.com/blog/wp-content/uploads/2023/07/02_犬と自転車輝度.png)
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」13アップ.png)
これは・・・。
恒例の犬と自転車だけど、左と下にあるグラフはなんだ?
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
グラフは輝度だな。
画像自体はグレースケールにしているんで、
ピクセルの値が大きいほど、白に近付き、輝度が高いと言える。
そして、その輝度に山と谷があることがグラフから読み取れる。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
確かに結構あるね。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
そして、輝度の立ち上がり、立下りが激しい部分を実際の画像と見比べると、
何かしらの物体の境界線になっていることが多い。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/技術者01アップ.png)
うん。
それもなんとなくわかる。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
つまり、この山と谷を検知すれば、結果的にエッジ検知になる。
って寸法。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」20アップ.png)
言ってることは分かるが、具体的にどうするんだ?
1ピクセルずつ評価していけば、できなくもない気はするけど、
if文まみれのプログラムを作ることになりそう。
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
if文は不要だな。
まぁfor文は使うと思うけど。
![太郎くん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/「技術者a」10アップ.png)
え?
評価するのにif文がいらない???
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/お休みフクロウ.png)
まぁ、そこらへんは次回解説しよう。
まとめ
![フクさん](https://www.simulationroom999.com/blog/wp-content/uploads/2020/05/指差しフクロウ.png)
まとめだよ。
- 画像処理と言えば、エッジ検出が割と有名。
- エッジをデータでみるとどういうことなのを確認するために輝度のグラフを出してみた。
- 山と谷が検知できればエッジ検知になりそう。
- 普通に考えると、ピクセル単位で評価するif文の嵐になりそうだが・・・。
バックナンバーはこちら。
コメント