はじめに
この記事では、matplotlibのwidgets.Sliderを使って画像の2値化処理をインタラクティブに調整する方法について解説します。ヒストグラム上でしきい値を動かすことで、リアルタイムに2値化された画像がどのように変化するかを確認できます。
コード

解説
モジュールのインポート
データの生成
画像の表示

この記事では画像の2値化処理について説明します。なお、matplotlibにおける画像の基本的な取扱いについては下記で解説しています。

2値像とヒストグラムの図の設定
plt.subplots(1, 2)を使用して横に並んだ2つの図を作成します。左側の図(ax1)には2値化された画像を、右側の図(ax2)にはヒストグラムを表示します。plt.subplots_adjust(bottom=0.25)でスライダーを配置するための領域を下部に確保します。
2値像とヒストグラムの表示
2値化は「binarized = Z>0.1」で行います。これにより0.1より大きい要素がTrueとなり、それ以外の要素はFalseとなります。ヒストグラムは「ax.hist()」で作成しました。「l, = ax2.plot((0.1,0.1),(0,5000),’k-‘)」というコードによって、ヒストグラム上にしきい値の位置を示す垂直線を表示する。
スライダーの設定
スライダーの設置
2値化像とヒストグラムのグラフの下にスライダーを設置します。
スライダーの調整
sli_b = Slider(ax_b, ‘Binarize’, vmin, vmax, valinit=0.1)では、ax_bはスライダーを設置する場所、’Binarize’はスライダーのラベルを指定します。スライダーの選択可能な範囲はヒストグラムと同じ範囲に設定しています。また、valinitはスライダーの初期値を表します。
スライダーの適用
スライダーの値はslib = sli_b.val で取得し、この値を使って画像の2値化処理を行い表示します。また、l.set_xdata((slib,slib)) を用いることで、ヒストグラム上のしきい値を示す垂線がスライダーで選択した位置に移動します。
スライダーを動かした場合の変化


まとめ
matplotlibのwidgets.Sliderを活用することで、画像処理のパラメータ調整が直感的かつ効率的に行えるようになります。特に2値化処理のような閾値調整が必要な場合、スライダーを用いたインタラクティブな操作は非常に有効です。この手法は他の画像処理タスクにも応用可能で、Pythonによる画像処理の幅を広げてくれるでしょう。
参考
より簡単な方法
下記記事のipywidgetsを使えば、より簡単かつ柔軟に対話的な操作ができる。

コメント
[…] [matplotlibの使い方] 38. widgets.Sliderによる画像の2値化matplotlibではインタラクティブにパラメータを調整できる機能がある。ここでは、その機能の一つであるwidgets.Sliderにより、ヒストグラ […]