[scikit-image] 84. flood_fillのtoleranceにより塗りつぶす領域を変化させる(skimage.segmentation.flood_fill)

python

はじめに

skimage.segmentationのflood_fillでtoleranceを変化させたときに、塗りつぶされる領域がどのように変化するかを解説する。

コード

解説

モジュールのインポートなど

バージョン

画像の読み込み

発芽し、1年10ヶ月たった海王丸の画像を用いる。

この画像をplt.imreadで読み込み、rgb2grayでグレースケール化して、img_as_ubyteで0〜255のデータに変換した。

特定の領域を塗りつぶし

(y,x)=(100,50)の属する領域のすべての画素を255(白)とする。ここでtoleranceは1とした。toleranceとは、許容値の設定であり、シードポイントからプラスまたはマイナスの許容値内の値を持つ隣接画素が塗りつぶされる。

結果の表示

左にオリジナル画像、右にflood_fill処理した画像を表示した。
右図にはflood_fillで指定したseed_pointの座標にマゼンタ丸を表示した。

toleranceを変化させたときの塗りつぶし領域の変化

toleranceを5から10刻みで変化させたときの塗りつぶされる領域は以下のようになる。toleranceが大きいほど広い範囲が塗りつぶされる。

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

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

参考

Flood Fill — skimage 0.23.0rc1.dev0 documentation
skimage.segmentation — skimage 0.23.0rc1.dev0 documentation
skimage.util — skimage 0.23.0rc1.dev0 documentation
skimage.color — skimage 0.23.0rc3.dev0 documentation

コメント