[scikit-image] 94. ラベル付けした画像の特定のラベルイメージのみを表示

matplotlib

はじめに

skimage.measure の label, regionprops_tableで2値画像のラベリングを行い、特定のラベルイメージのみを表示する方法について説明する。

解説

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

バージョン

画像データの作成

2次元平面にランダムに点を配置し、ガウシアンフィルタをかけることで凹凸のある画像を作成し、それを大津のしきい値(threshold_otsu)で2値化することでバイナリ画像を得ている。ガウシアンフィルタのsigmaを変えることで2値化像の円形構造のサイズを変化させている。

作成した画像を加算し、表示すると以下のようになる。

境界に接した部分の除去

境界に接している部分はclear_borderで除去できる。図示すると以下のようになる。

2値化像のラベリング

labelで2値化像をラベル付けして、それぞれの部分を分けて評価できるようにする。
背景を透明にするために値が0のところをnp.nanとする。
図示すると以下のようになる。

regionprops_tableによる情報の取得

regionprops_tableでラベル画像のそれぞれの領域について、様々な情報を得ることができる。
ここでは、’label’でラベル番号、’centroid’で重心を取得する。
pandasのDataFrameに結果を入れることで見やすい表を得ることができる。

ラベル番号つき画像の表示

ax.text()で重心の位置にラベル番号を表示する。

特定のラベルのみの画像の表示

label_image_f==3のようにすることで、特定のラベルイメージのみの画像を作成する。

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

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

参考

[scikit-image] 68. ラベリングした領域のデータをregionprops_tableによりpandasのDataFrameで取得する(skimage.measure regionprops_table)
scikit-imageのregionprops_tableでラベリングした領域の情報を取得できるregionpropsのデータをpandasのDataFrameにする。
[scikit-image] 53. 画像のラベリング(skimage.measure labelなど)
skimage.filtersのthreshold_otsu、morphologyのopening, closingなどによって、画像中の対象物をラベリングする方法について説明する。
[scikit-image] 92. ラベル付けした部分をサイズに応じて塗り分けて表示
skimage.measure の label, regionprops_tableで2値画像のラベリングとサイズ計測を行い、サイズを大中小で分類し、塗り分けて表示する方法について説明する。
skimage.measure — skimage 0.23.0rc0.dev0 documentation

コメント