[matplotlib animation] 27. スノーノイズ

matplotlib Animation

はじめに

matplotlib FuncAnimationでスノーノイズのアニメーションを作成する。

コード

解説

モジュールのインポート

図と軸と軸ラベルの設定

軸のラベルを非表示にし、軸の目盛を白くして見えないようにしている。

スノーノイズデータの生成

スノーノイズとは、ブラウン管TVでアナログテレビ放送を受信する際に生じるノイズのことである。

np.random.randint(0,2,(240,320,10)) で0または1のランダムなデータ群を生成する。データの構造は、(240,320)のデータが10個ある構造となっている。
データのサイズについては、ブラウン管TVのアスペクト比とおなじになるように4:3とした。

アニメーションの設定

アニメーションでは古い画像を消して新しい画像を表示するという動作を繰り返すので、ax.cla()で現在表示されている画像を消している。

plt.imshow(data[:,:,num], cmap=’binary’, vmin=0, vmax=1)で白黒のスノーノイズ画像をnumに従って、順次表示していく。つまり、表示されるdataは、data[:,:,0]、data[:,:,1]、data[:,:,2]という風になる。

アニメーションの表示

FuncAnimationでanimationの表示。updateを10step実行してアニメーションとする。intervalは100 ms なので1秒のアニメーションとなる。
HTML(ani.to_html5_video())でjupyter notebook上にアニメーションを表示できる。

アニメーションの保存

ani.save(‘snownoise.mp4’, writer=”ffmpeg”,dpi=dpi)でアニメーションを保存することができる。dpiを設定することで指定の解像度での保存が可能。

ffmpegのインストールが必要な場合は、

conda install -c anaconda ffmpeg 

によりインストールする。(condaでモジュールの管理をしている場合)

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

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

参考

スノーノイズ - Wikipedia
https://matplotlib.org/gallery/animation/animation_demo.html#sphx-glr-gallery-animation-animation-demo-py

コメント