はじめに
この記事では、画像処理ライブラリ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
コメント