[scikit-image] 51. 画像の局所的な極大値を検出(skimage.feature peak_local_max)

python

はじめに

ここでは、scikit-imageライブラリのpeak_local_max関数を使って画像内の局所的な極大値(ピーク)を検出する方法について解説します。

peak_local_maxとは

peak_local_max関数は、画像内で局所的に最も高い値(輝度値)を持つピクセルを検出するための関数です。これは物体検出など様々な画像処理タスクで活用できます。

コード

解説

モジュールのインポート

画像データの読み込み

この例ではストロンギロゴナムの発芽後1年の画像を使用します。画像処理のため、まずrgb2gray関数でグレースケールに変換し、次にimg_as_float関数でピクセル値の範囲を0~1に正規化します。

最大値フィルタの適用

ndi.maximum_filter(im, size=30, mode=’constant’)関数を使用して画像に最大値フィルタを適用できます。size=30を指定すると、30×30ピクセルの範囲内の最大値が、その範囲内のすべてのピクセルに適用されます。その結果、グレースケール画像の明るい領域が膨張して見えるようになります。

局所的極大値の検出

peak_local_max関数を使用すると、画像内の局所的な極大値を効率的に検出できます。この関数の原理は、元の画像と最大値フィルタで膨張させた画像を比較し、両者の値が等しい箇所を極大値として特定するというシンプルなものです。

画像の表示

図の説明:左側にオリジナル画像、中央に最大値フィルタを適用した画像、右側にオリジナル画像上に赤丸で極大値を示しています。

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

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

まとめ

peak_local_max関数は、画像内の局所的な極大値を効率的に検出するための強力なツールです。基本的なパラメータの理解と適切な前処理を組み合わせることで、様々な画像解析タスクに応用することができます。特に医学や生物学の画像処理、天文学、工業製品の検査など、多くの分野で活用されています。

効果的な利用のためには、対象とする画像の特性をよく理解し、パラメータを適切に調整することが重要です。また、前処理や後処理と組み合わせることで、さらに精度の高い検出が可能になります。

参考

Finding local maxima — skimage 0.25.2 documentation
maximum_filter — SciPy v1.16.2 Manual
skimage.feature — skimage 0.25.2 documentation

コメント