はじめに
jupyter notebookの対話的にパラメータを調整できる機能(ipywidgets FloatSlider)で、キャニーフィルター(skimage feature canny)のパラメータsigmaを調整して、画像のエッジを対話的に検出する方法について説明する。
コード
![](https://sabopy.com/wp/wp-content/uploads/2020/02/Screenshot-2020-02-12-at-07.28.19.jpg)
解説
モジュールのインポートなど
画像データの読み込み
画像は下記サイトから取得した。
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDIT9tdDJnlNPIwuaqTU8pdV_gxO37lVsHRdhqSrMuLDCHWMnDl-lvu-QUWlvW7TU25uDKcRwyAcUQCKnimTsLdzcEmXIUr5JuXYS6N2kXdBSeRQA7eZGjv3XI321ZnNmqiLyQvlxXYbYy/s400/food_india_meals.png)
ミールスのイラスト
いらすとやは季節のイベント・動物・子供などのかわいいイラストが沢山見つかるフリー素材サイトです。
画像へのキャニーフィルターの適用
キャニーフィルターについては下記記事で解説した。
![](https://sabopy.com/wp/wp-content/uploads/2019/11/cannycactus-160x90.jpg)
[scikit-image] 12. Canny法によるエッジ検出 (feature.canny)
skimage.feature の canny を用いた、Canny法によるエッジ検出
画像の表示
画像はImagegridにより表示した。Imagegridについては下記記事で解説した。
![](https://sabopy.com/wp/wp-content/uploads/2019/03/Simple_Axesgrid1-160x90.png)
[matplotlib] 19. mpl_toolkits.axes_grid1 の使い方(画像の表示)
axes_grid1のImageGridを用いて複数の画像を表示する方法
左にオリジナル画像、右にキャニーフィルターでエッジを検出した画像を表示する。
ipywidgetsの設定
sigmaの値をFloatSliderで少数点(0.1刻み)で可変的に調整できるようにする。
@interact(sigma=sigma)でipywidgetsを有効にしてから、関数plot(sigma)で、設定したsigmaで新しいエッジ画像を出力し、前の画像を.cla()で消してからimshow()で表示する。
set_titleにより、現在のsigmaの値をタイトルに表示する。
sigmaを変化させたときのエッジ画像の変化
![](https://sabopy.com/wp/wp-content/uploads/2020/02/Screenshot-2020-02-12-at-07.28.41.jpg)
![](https://sabopy.com/wp/wp-content/uploads/2020/02/Screenshot-2020-02-12-at-07.28.59.jpg)
参考
Widget List — Jupyter Widgets 8.1.3 documentation
コメント