[SciPy] 27. ミニマムフィルタによる低輝度部分の強調(ndimage.minimum_filter)

matplotlib

はじめに

このページでは、SciPyのndimageモジュールに含まれるminimum_filterの使い方と応用例について詳しく解説します。

ミニマムフィルタとは

ミニマムフィルタ(minimum_filter)は、指定された範囲(ウィンドウ)内の最小値を取り出すフィルタです。画像処理においては、低輝度の部分を強調し、高輝度の部分を目立たなくする効果があります。

コード&解説

モジュールのインポート

バージョン

画像の読み込み

Matplotlibのpltモジュールのimread()関数を使用して、サボテン「すみれ丸」の画像を読み込みます。

グレースケール変換

skimageライブラリのcolor.rgb2gray関数を使用してRGB画像をグレースケールに変換できます。変換した画像をcmap=”bone”パラメータで表示すると、以下のような結果になります。

ミニマムフィルタ

ミニマムフィルタのサイズを10として処理すると、以下のような画像が得られます。高輝度部分である棘が目立たなくなり、まるで棘のないサボテンのようになっていることがわかります。

sizeを変化させた場合

サイズを大きくすることで、高輝度部分がより目立たなくなっていきます。

footprintを変化させた場合

footprintパラメータを使用してフィルタの適用範囲をカスタマイズできます。以下の例では、skimageのmorphologyモジュールを活用してフィルタの形状を定義しています。適用結果は次のようになります。

Generate footprints (structuring elements) — skimage 0.25.2 documentation
コードをダウンロード(.pyファイル)

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

参考

minimum_filter — SciPy v1.16.1 Manual

コメント