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

python

はじめに

skimage.featureのpeak_local_maxによる画像中の局所的な極大値を検出する方法について説明する。

コード

解説

モジュールのインポート

画像データの読み込み

発芽後1年のストロンギロゴナムの画像を使用する。rgb2grayによりグレースケール画像とし、img_as_floatによりデータ範囲を0〜1とする。

最大値フィルタの適用

ndi.maximum_filter(im, size=30, mode=’constant’)で画像に最大値フィルタを適用できる。sizeが30×30なので、この範囲の中の最大値が範囲内のすべてのピクセルに適用されることになる。そのためグレースケール画像の明るい部分は膨張して見えるようになる。

局所的極大値の検出

peak_local_maxで画像中の局所的な極大値が検出できる。原理としては、元の画像と最大値フィルタで膨張させた画像とで等しい箇所を極大値としてみなしている。

画像の表示

左にオリジナル、中央に最大値フィルタを適用した画像、右にオリジナル画像と赤丸で極大値を示している。

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

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

参考

Finding local maxima — skimage 0.22.0 documentation
scipy.ndimage.maximum_filter — SciPy v1.13.0 Manual
skimage.feature — skimage 0.22.0 documentation

コメント