[ipywidgets] 1. interactによる画像の2値化

ipywidgets

はじめに

この記事では、Jupyter Notebookにおけるipywidgetsのinteract機能を活用して、画像の二値化処理を対話的に行う方法について説明します。しきい値をヒストグラム上でリアルタイムに調整しながら、画像の二値化結果を確認できる手法を解説します。

コード

解説

モジュールのインポート

データの生成

2値化に用いる画像

この画像を2値化処理します。なお、この画像はmatplotlibのSliderで使用したものと同一です。

[matplotlib] 38. widgets.Sliderによる画像の2値化
matplotlibのwidgets.Sliderを使って画像の2値化処理をインタラクティブに行う方法を解説。ヒストグラム上でしきい値を動的に調整し、リアルタイムで2値化結果を確認する手法を紹介します。Pythonでの画像処理に役立つテクニックです。

ヒストグラムの設定

plt.subplots(1, 2)を使って横に並んだ2つの図を作成します。左側の図(ax1)には2値化像を、右側の図(ax2)にはヒストグラムを表示します。ヒストグラムはax.hist()関数で生成しています。

ヒストグラム上にしきい値を示す垂線を表示するために、l, = ax2.plot((ini,ini),(0,5000),’k-‘)というコードを使用しています。

interactの設定

2値化は binarized = Z>x で行います。これによって x より大きい要素が True となり、それ以外の要素は False となります。

ax1.imshow(binarized, interpolation='None', origin='lower', extent=[-4, 4, -4, 4]) を使用して2値化像を表示します。

l.set_xdata((x,x)) によって、しきい値を示す垂線の位置を更新します。

interactの適用

interact(f, x=(vmin,vmax))を使用すると、vminからvmaxの範囲で値を調整できるスライダーが表示されます。スライダーの値を変更するたびに関数f(x)が自動的に実行され、結果がリアルタイムで更新されます。

スライダーを動かしたときの変化

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

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

まとめ

本記事では、Jupyter Notebookのipywidgetsモジュールにあるinteract機能を活用して、画像の二値化処理を対話的に行う方法を解説しました。ヒストグラム上でしきい値を調整しながらリアルタイムで二値化結果を確認できるため、最適な処理パラメータを効率的に見つけることができます。この手法は画像処理だけでなく、様々なパラメータ調整が必要な場面で応用可能です。

参考

jupyter notebook で ipywidgets を使ってインタラクティブにパラメータを操作してついでに画像処理もしてみる - Qiita
matplotlib とかで jupyter notebook に関数のグラフをプロットするのはいいけど値を変更して試行錯誤するたびにいちいち Ctrl + Enter とかするのがちとめんどくさい。 最近流行りのリアクティブ(もう古い?)...
Using Interact — Jupyter Widgets 8.1.7 documentation

コメント