[matplotlib animation] 45. skimage.transform.swirlのradius変化アニメーション

matplotlib Animation

はじめに

この記事では、画像処理ライブラリskimageの渦巻き変換(transform.swirl)のパラメータradiusを変化させた時の画像変化をmatplotlibのFuncAnimationを使ってアニメーション表示する方法について解説します。サンプル画像に対して渦巻きエフェクトのradius値を徐々に変更することで、画像の歪み具合がどのように変化するかを視覚的に表現します。

コード

解説

モジュールのインポート

バージョン

画像の読み込み

読み込んだ画像をimshowで表示すると下のようになります。

渦巻画像の作成

渦巻き効果のradius値を段階的に変化させた画像を生成し、順次リストに格納していきます。

[scikit-image] 24. 画像の非線形変換(渦巻き模様:transform.swirl)
scikit-imageのtransform.swirl関数を使った画像の渦巻き変換について解説します。基本的な使い方からパラメータ調整まで、Pythonでの実装例を交えて非線形画像変換の方法を紹介しています。

アニメーションの設定

アニメーション表示は、現在の画像を消して新しい画像を順次表示する方法で行います。具体的には、ax.cla()で古い画像を消去し、ax.imshow(swirled_imgs[num])で渦巻き画像を順番に表示していきます。また、タイトルには変化するradiusの値を表示します。

アニメーションの表示

アニメーション関数を40ステップ実行し、250ミリ秒間隔で図を順次更新することで、合計10秒のアニメーションを生成します。jupyter notebookやlab上で表示するには、HTML(ani.to_html5_video())を実行するだけで簡単にアニメーションを組み込めます。

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

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

まとめ

matplotlib.animation.FuncAnimationを使用して、skimage.transform.swirlのradius値を変化させることで、画像の渦巻き変換の度合いが動的に変化するアニメーションを作成できます。この手法は画像処理の効果を視覚的に理解するのに役立ちます。

参考

Swirl — skimage 0.25.2 documentation

コメント