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

matplotlib Animation

はじめに

画像の非線形変換である渦巻き効果(skimage.transform.swirl)のstrengthパラメータを変化させた時の画像変化をmatplotlibのFuncAnimationを使用してアニメーション表示する方法について解説します。サンプル画像に対して強度を変えながら渦巻き効果を適用し、その視覚的な変化を動画として表現する技術的な内容を説明します。

コード

解説

モジュールのインポート

データの読み込みと図の生成

アニメーションの設定

表示されている図を消す

アニメーション表示では、連続的に画像を更新するため、ax.cla()を使って現在の画像を消去してから新しい画像を表示しています。

画像の渦巻き処理

スワール変換については下記で詳しく解説しています。ここでは、strengthパラメータを変化させた際の画像の変化について見ていきます。

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

画像の表示

タイトルに変化するstrengthの値の表示

変化するstrengthの値をアニメーションのタイトルにリアルタイムで表示する。

アニメーションの表示

10ステップのアニメーション関数を実行すると、400 ms間隔で順次図が切り替わり、合計4秒のアニメーションとなります。jupyter notebook上でHTML(ani.to_html5_video())を実行すれば、アニメーションを直接表示できます。

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

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

まとめ

skimage.transform.swirl関数のstrengthパラメータを変化させることで、画像に様々な強さの渦巻き効果を適用できます。matplotlibのFuncAnimationを使えば、このパラメータ変化による画像の変形過程をスムーズなアニメーションとして可視化することができます。これにより、非線形画像変換の効果を直感的に理解することが可能になります。

参考

Swirl — skimage 0.25.2 documentation

コメント