はじめに
skimage.segmentationのrandom_walkerによって、ランダムウォーカーアルゴリズムを使い画像をセグメント化した例について説明する。
コード

解説
モジュールのインポート
画像の読み込み
昨年蒔いたアストロフィツム属・ストロンギロゴナムの幼苗の画像を用いる。
画像の3値化
ランダムウォーカーアルゴリズムは複数のラベル付けされた領域がそれぞれうまい具合に拡散していってセグメント化が行われる。その原理については下記が詳しい。
Module: segmentation — skimage v0.18.0 docs
ここでは、要素の値が0.05未満の領域を1とし、値が0.85より大きいものを2、それ以外を0としてラベル像を作成した。
random walker セグメンテーションの適用
dataには画像、 markersにはlabel像を指定する。betaはランダムウォーカーの拡散挙動に対する係数であり、値が大きいほど、拡散が制限される、デフォルト値は130。
modeは計算方式のことで’bf’,‘cg’, ‘cg_mg’がある。実行速度は下記のようにcg_mg > bf > cgとなる。
cg_mgモードを使うには pyamg module (http://pyamg.github.io/)をインストールする必要がある。
画像の表示
左に元画像、中央にラベル像、右にランダムウォーカーセグメンテーションの結果を示している。
参考
Random walker segmentation — skimage v0.18.0 docs
Module: segmentation — skimage v0.18.0 docs
コメント