はじめに
この記事では、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サイズが大きくなるにつれて局所的な処理の範囲が広がり、画像のコントラストやディテールの表現が変化することが明確に示されています。このアニメーションは画像処理のパラメータ調整が結果に与える影響を直感的に把握するのに役立ちます。
参考

コメント