[matplotlib animation] 50. rank.mean_bilateralを用いた平均化する領域が変化していくアニメーション

matplotlib Animation

はじめに

この記事はMatplotlibを使用したアニメーション作成に関するもので、skimage.rank.mean_bilateralの機能を活用して画像の平均化する領域(s0, s1パラメータ)が徐々に変化していく様子を視覚的に表現する方法について解説しています。bilateral filterは画像のエッジを保持しながらノイズを除去するフィルタリング手法であり、このアニメーションではそのパラメータ変化による効果の違いを動的に示しています。

なお、画像の平均化については下記で解説しました。

[scikit-image] 35. 平均化フィルタによる画像の平滑化(skimage.rank mean, mean_percentile, mean_percentile)
ここでは、skimage rank mean, mean_percentile, mean_percentileにより画像に平均化フィルタを適用した例について説明する。

コード

解説

モジュールのインポート

画像の読み込みとグレースケール化

平均化範囲の設定

アニメーション設定

bilateral_imageはrank.mean_bilateral()を適用した画像です。このアニメーションでは、rank.mean_bilateralのパラメータs0とs1を徐々に増加させて変化を表示します。ax.cla()を使用して前のフレームの画像を消去し、ax.axis(‘off’)により軸の表示を非表示にしています。

アニメーションの表示

アニメーション関数を10ステップ実行し、500ミリ秒間隔で図を更新するため、全体で5秒のアニメーションとなります。jupyter notebook上では、HTML(ani.to_html5_video())を実行することでアニメーションを表示できます。

これにより、中央のロフォフォラが徐々に平滑化されていく過程を観察することができます。

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

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

まとめ

skimage.rank.mean_bilateralを使ったアニメーション作成では、s0とs1パラメータを変化させることで、画像の平均化される領域の変化を視覚的に確認できます。このようなアニメーションは画像処理パラメータの効果を理解するための教育的ツールとして有用で、Matplotlibのアニメーション機能と組み合わせることで効果的な視覚化が可能になります。

参考

skimage.filters.rank — skimage 0.26.0rc0.dev0 documentation

コメント