[ipywidgets] 9. FloatSliderでCanny filterのsigmaを調整してエッジ検出

ipywidgets

はじめに

jupyter notebookの対話的にパラメータを調整できる機能(ipywidgets FloatSlider)で、キャニーフィルター(skimage feature canny)のパラメータsigmaを調整して、画像のエッジを対話的に検出する方法について説明する。

コード

コードをダウンロード(.pyファイル)コードをダウンロード(.ipynbファイル)

解説

モジュールのインポートなど

画像データの読み込み

画像は下記サイトから取得した。

ミールスのイラスト
いらすとやは季節のイベント・動物・子供などのかわいいイラストが沢山見つかるフリー素材サイトです。

画像へのキャニーフィルターの適用

キャニーフィルターについては下記記事で解説した。

[scikit-image] 12. Canny法によるエッジ検出 (feature.canny)
skimage.feature の canny を用いた、Canny法によるエッジ検出

画像の表示

画像はImagegridにより表示した。Imagegridについては下記記事で解説した。

[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を変化させたときのエッジ画像の変化

参考

Widget List — Jupyter Widgets 7.5.1 documentation

コメント