はじめに
scikit-imageのsegmentation.disk_level_set関数を使用して、レベルセット法のセグメンテーションに必要なディスク状の初期レベルセットを作成する方法を解説します。画像処理においてオブジェクト抽出を行うための基本的なツールとして、この関数の活用法を紹介します。
解説
モジュールのインポートなど
バージョン
2Dデータの作成
要素が0で形状が(128,128)の2次元データを作成します。
diskの半径を変化
np.logspaceで配列を作成
ディスクの半径のための配列を作成します。np.logspaceを使用すれば、logスケールでの配列作成が可能です。例えば、(1, 6, num=6, base=2)と指定すると、2¹から2⁶までの範囲で要素数6の配列が得られます。
disk_level_setの作成
disk_level_set(image.shape, radius=int(i))を使用して、前述のnp.logspaceで準備した配列の要素からdisk画像を作成し、リストに追加します。これにより、異なる半径サイズを持つdisk_level_set画像が生成されます。
画像の表示

diskの中心を変化
np.linspaceで配列を作成
np.linspaceで2次元配列を作成します。
disk_level_setの作成
disk_level_set(image.shape, center=tuple(centers[i]))を使用して、前述のnp.linspaceで準備した配列の要素から中心座標を設定し、ディスク画像を作成してリストに追加します。この処理により、それぞれ中心点の異なるdisk_level_set画像が得られます。
画像の表示

まとめ
レベルセット法におけるディスク状の初期レベルセット作成はsegmentation.disk_level_set関数で簡単に実現できます。適切なパラメータ設定によって様々な形状のセグメンテーションに対応可能であり、画像内のオブジェクト抽出における基礎的かつ重要なステップとなります。
参考
skimage.segmentation — skimage 0.26.0rc0.dev0 documentation
Morphological Snakes — skimage 0.26.0rc0.dev0 documentation
コメント