[matplotlib animation] 36. Canny法によるエッジ検出アニメーション

matplotlib Animation

はじめに

この記事では、matplotlibのアニメーション機能を使用して、Canny法によるエッジ検出アニメーションを作成する方法について解説します。Canny法は画像処理において重要なエッジ検出アルゴリズムで、ノイズ除去、勾配計算、非最大抑制、ヒステリシスによる閾値処理という4つのステップから構成されています。これらの処理を視覚的に表現するアニメーションの実装方法を、Pythonコードを用いて詳しく説明します。

コード

解説

モジュールのインポート

データの読み込み

まず画像をimread()関数で読み込みます。
次にndi.rotate()関数を使って画像を回転させます。この際、mode=constantパラメータによりエッジ部分は定数値で処理されます。
その後、gaussian_filter関数によって画像にぼかし効果を適用し、
最後に「im + 0.17 * np.random.random(im.shape)」の計算でランダムノイズを画像に追加します。

アニメーションの設定

ax.cla()で現在の図をクリアし、feature.canny()のsigma値を変化させながらアニメーションを表示します。ax.set_title(“$\sigma=$”+str(num/20+0.05)[:4])でタイトルに現在のsigma値を表示します。

アニメーションの表示

FuncAnimationを使用してアニメーションを表示します。50ステップのupdateを実行してアニメーションを生成します。intervalは200msに設定されているため、アニメーションの長さは約10秒になります。また、HTML(ani.to_html5_video())を使用することで、Jupyter Notebook上にアニメーションを表示できます。

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

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

まとめ

Canny法によるエッジ検出のアニメーション作成を通じて、画像処理の基本的な概念と実装方法を学ぶことができます。matplotlibを使ったアニメーション機能は、複雑なアルゴリズムの動作を視覚的に理解するのに役立ちます。

参考

matplotlib.animation.FuncAnimation — Matplotlib 3.10.6 documentation

コメント