はじめに
scikit-imageライブラリを使用して2値画像にラベリングを行い、特定のラベルが付いた領域のみを表示する方法を解説します。skimage.measureモジュールのlabel関数とregionprops_table関数を活用した画像解析テクニックを紹介します。
解説
モジュールのインポートなど
バージョン
画像データの作成
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」のような条件式を使用します。

まとめ
この記事では、scikit-imageライブラリを使用した画像処理の重要なテクニックを学びました。具体的には:
- 2値画像に対してラベリング処理を行う方法
- skimage.measureモジュールのlabel関数の使い方
- regionprops_table関数を使って各ラベル領域の特性を抽出する方法
- 特定のラベルが付いた領域のみを選択的に表示する手法
これらの技術は、画像内のオブジェクト検出や解析において非常に有用であり、医療画像処理や工業用画像検査など様々な分野で応用できます。
参考



コメント