はじめに
scikit-imageを活用してサボテンの種子をカウントする手法を解説。threshold_sauvola、モルフォロジー演算、ラベリング、regionpropsなどの画像処理技術を組み合わせて、植物学研究や種子分析に役立つ自動計測方法を紹介します。
コード


解説
モジュールのインポートなど
バージョン
画像の読み込み
獅子王丸の実から種を採取しました。6個の実から取り出した種子をティッシュペーパー上に広げた画像を分析に使用します。



画像の2値化
画像をバイナリ化するためにskimage.filtersのthreshold_sauvolaを使用します。threshold_sauvolaの詳細については下記記事で説明しています。

結果を示すと以下のようになります。

Openingによるゴミの除去
Openingの処理で二値化画像から小さなノイズを除去します。結果は以下のようになります。

ラベル画像の生成
skimage.measureのlabel関数を使用してラベル画像を生成します。このラベル画像では、背景部分は0の値となります。そのまま画像表示すると見づらいため、背景部分をNaN値に変換して表示を改善します。
図示すると以下のようになります。

種それぞれの面積を調べる
面積が100ピクセル以下のものはノイズと考えられるため、100ピクセルを超える物体のみをカウントした結果、253個のサボテンの種が確認された。
centroidによってそれぞれの種の重心座標が得られるので、各種に番号を振った画像を作成すると以下のようになる。

画像を見ると、いくつかの種が互いにくっついていることがわかります。このため、watershedアルゴリズムを使用することで、より正確な種の数をカウントできると考えられます。なお、watershedセグメンテーション手法については下記記事で詳しく解説しています。

まとめ
本記事では、scikit-imageライブラリを使ってサボテンの種の数を自動計測する方法を解説しました。threshold_sauvolaによる適応的二値化、openingによるノイズ除去、labelによる連結成分のラベリング、そしてregionpropsによる特徴抽出という一連の処理を通じて、画像内のサボテンの種を高精度でカウントすることができます。この手法は植物学研究や農業分野での種子分析に応用可能であると思います。
コメント