はじめに
skimage flood_fillのパラメータであるtoleranceを変化させたときの画像の変化をアニメーション(matplotlib, FuncAnimation)で表示する。
なお、skimageのflood_fillについては下記で解説した。
[scikit-image] 83. flood_fillによる特定の領域の塗りつぶし(skimage.segmentation.flood_fill)
skimage.segmentationのflood_fillで、特定の領域を指定の色で塗りつぶす方法について説明する。
[scikit-image] 84. flood_fillのtoleranceにより塗りつぶす領域を変化させる(skimage.segmentation.flood_fill)
skimage.segmentationのflood_fillでtoleranceを変化させたときに、塗りつぶされる領域がどのように変化するかを解説する。
コード
解説
モジュールのインポートなど
バージョン
画像の読み込み
花が咲いた満月の画像を用いる。
この画像をplt.imreadで読み込み、rgb2grayでグレースケール化して、img_as_ubyteで0〜255のデータに変換した。
画像を表示
画像を表示すると以下のようになる。
図中左上にあるマゼンタの丸をseed pointとしてflood_fillを行う。
アニメーション関数の設定
flood_fillでtoleranceを変化させて画像を処理し、ax.cla()ですでに表示されている画像を消し、ax.imshowで処理した画像を表示することでアニメーションとする。
そのときそのときのtoleranceの値はax.set_title(‘Tolerance {0}’.format(str(2 + i)))で随時表示する。
アニメーションの表示
FuncAnimationでアニメーションを表示する。frame数を100、intervalを100msとし、10秒のアニメーションとする。 HTML(ani.to_html5_video())
により、jupyter notebook またはjupyter lab上にアニメーションを表示できる。
ani.save(‘ファイル名’, writer=”ffmpeg”,dpi=100)でアニメーションをMP4形式で保存することができる。
コードをダウンロード(.pyファイル) コードをダウンロード(.ipynbファイル)参考
Flood Fill — skimage 0.25.0rc2.dev0 documentation
コメント