[ipywidgets] 27. IntRangeSliderで画像の任意の範囲のヒストグラムを表示

ipywidgets

はじめに

この記事では、jupyter notebookで利用できるipywidgetsのIntRangeSliderを使って、画像内の任意の範囲を選択し、その範囲内のヒストグラムを対話的に表示する方法について説明します。

コード

解説

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

バージョン

データの生成

画像データは下記記事と同じコードにより生成しました。

[matplotlib] 57. imshow使用時に軸を画像から離して表示する方法
matplotlibのplt.imshowで画像表示する際に軸を画像から離して配置する方法を解説します。tick_paramsとspinesの設定で軸の位置を調整し、視認性を高めるテクニックを紹介します。

画像の表示

カラーバーの表示

make_axes_locatableを使用してカラーバーを表示します。.append_axes(“top”)メソッドで画像の上部にカラーバーを配置でき、orientation=’horizontal’パラメータを設定することで水平方向のカラーバーを実現できます。

四角の表示

左下の座標を(0, 0)とし、幅0、高さ0のRectangleを作成して、ax.add_patch(rects)で図中に配置します。

ヒストグラムの表示

画像全体のヒストグラムを作成し、plt.bar()で表示します。また、後で選択範囲のヒストグラムを表示するために、あらかじめ空のリストを準備しておきます。

ipywidgetsの設定

IntRangeSliderの設定

IntRangeSliderを使用すると、整数で範囲を指定できます。minで最小値、maxで最大値を設定し、stepで刻み幅、valueで初期値を指定します。descriptionを使えばスライダーの前にラベルを表示でき、orientation=’horizontal’で水平方向、’vertical’で垂直方向にスライダーを配置することができます。

x_limとy_limのスライダーで選択した範囲に四角を表示するため、四角の左下位置をset_xyで設定し、幅と高さをそれぞれset_widthとset_heightで調整します。その後、スライダーで選択した位置の画像を切り取り、その切り取った画像からヒストグラムを生成します。

IntRangeSliderの表示

interactではなく、interactiveを用います。interactiveを使用することでHBox(children=[y_range,x_range])などのようにipywidgetsのレイアウト変更が可能になります。Hboxにより、widgetsを横方向に配置できます。

2つのヒストグラムを表示

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

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

まとめ

本記事を通じて、ipywidgetsのIntRangeSliderを使用して画像の任意の範囲を選択し、そのヒストグラムをリアルタイムで表示する方法を学びました。この技術は、画像処理やデータ分析において、特定領域の特性を視覚的に理解するのに役立ちます。jupyter の対話的機能を活用することで、より効率的な画像解析が可能になります

参考

Using Interact — Jupyter Widgets 8.1.7 documentation
Widget List — Jupyter Widgets 8.1.7 documentation

コメント