[matplotlib animation] 31. Local Histogram Equalizationのパラメータのselemを変えたときの画像の変化

matplotlib Animation

はじめに

この記事では、scikit-imageのfilters.rank.equalizeを使用した局所的ヒストグラム均等化(Local Histogram Equalization)のパラメータselemを変化させたときの画像処理結果の変化をmatplotlibのアニメーションで可視化しています。ヒストグラム均等化は画像のコントラストを向上させる手法で、selemパラメータは処理の窓サイズを決定します。

コード

解説

モジュールのインポート

画像の設定

アニメーションの設定

アニメーションでは、古いグラフを消して新しいグラフを表示する動作を繰り返すため、ax.cla()を使用して現在表示されているグラフを消去しています。

update関数内では、selem = disk(5*num+5)という式でselemの大きさを変化させ、ヒストグラム均等化への影響を調査したアニメーションを表示しています。このアニメーションでは、selemの値を5から100まで変化させ、各フレームでの現在のselem値をタイトルに表示しています。

アニメーションの表示

FuncAnimationを使用してアニメーションを表示します。updateを20ステップ実行してアニメーションを作成します。intervalは500msに設定されているため、全体で10秒のアニメーションとなります。HTML(ani.to_html5_video())を使用することで、jupyter notebook上に直接アニメーションを表示できます。

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

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

とめ

Local Histogram Equalizationにおけるselemパラメータ(構造要素のサイズ)が画像処理結果に与える影響を視覚的に理解できるアニメーションを作成しました。selemサイズが大きくなるにつれて局所的な処理の範囲が広がり、画像のコントラストやディテールの表現が変化することが明確に示されています。このアニメーションは画像処理のパラメータ調整が結果に与える影響を直感的に把握するのに役立ちます。

参考

[scikit-image] 6. ヒストグラム均等化による画像コントラスト向上
scikit-imageのrank.equalizeを用いたヒストグラム均等化の実装方法を解説。暗い画像や低コントラスト画像を鮮明にする処理技術で、医療画像や天体写真などで活用されています。Pythonによる実装例も紹介。
matplotlib.animation.FuncAnimation — Matplotlib 3.10.6 documentation

コメント