はじめに
この記事では、scikit-imageライブラリのexposure.adjust_gamma関数を使用して、画像のガンマ値を変化させた際の効果をアニメーションで可視化する方法について解説します。ガンマ補正は画像の明るさを調整する技術で、ガンマ値を変えることで画像の暗部や明部がどのように変化するかを示します。
コード
解説
モジュールのインポート
画像の読み込みとグレースケール化
figの作成とヒストグラムの図の設定
x軸のラベルと範囲、y軸のラベルのフォーマットを調整します。ax_cdf = ax[1].twinx()を使用してx軸を共有し、第2のy軸で累積ヒストグラムを表示します。
ヒストグラムと累積ヒストグラムをアニメーション表示するために、空のリスト「lines」と「Bars」を事前に作成します。
アニメーションの設定
アニメーションでは古いグラフを消して新しいグラフを表示する動作を繰り返します。ax[0].cla()で現在表示されている画像を消去します。ただし、ax[1]は.cla()で消すと軸ラベルの設定も消えてしまうため、データのみを消去します。データの消去には.pop().remove()メソッドを使用できます。
exposure.adjust_gamma()関数でガンマ補正を適用し、imshow()でax[0]に画像を表示します。現在のガンマ値はax[0].set_title(“gamma = “+str(num/10+0.1)[:3])でタイトルに表示します。
ax[1].histではアニメーション表示がうまく機能しないため、代替方法としてnp.histogramでデータを生成し、.bar()メソッドで表示する方法を採用しました。累積ヒストグラムはexposure.cumulative_distribution()関数で作成できます。
アニメーションの表示
FuncAnimationを使用してアニメーションを表示します。updateを20ステップ実行してアニメーションを生成します。intervalは400msに設定されているため、全体で8秒のアニメーションとなります。jupyter notebook上ではHTML(ani.to_html5_video())を実行することでアニメーションを表示できます。
まとめ
scikit-imageのexposure.adjust_gamma関数を用いたガンマ補正のアニメーション可視化により、画像処理における明暗調整の効果を直感的に理解することができます。異なるガンマ値が画像とそのヒストグラムにどのような影響を与えるかを動的に観察することで、画像処理における適切なパラメータ選択の参考になります。
参考

コメント