[SciPy] 28. パーセンタイルフィルタによる画像の平滑化(ndimage.percentile_filter)

matplotlib

はじめに

scipyのndimageのpercentile_filterを使って、画像を任意のパーセンタイル点で平滑化する方法について説明する。

コード&解説

モジュールのインポート

バージョン

画像の読み込み

サボテン すみれ丸の画像を、plt.imread()で読み込む。

グレースケール変換

skimage.color の rgb2grayでRGB画像をグレースケール画像に変換する。

変換した画像をcmap=”bone”で表示すると以下のようになる。

パーセンタイルフィルタ

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

percentileを変化させた場合

パーセンタイルを大きくすることで、画像がより鮮明になっていく様子がみてとれる。

sizeを変化させた場合

サイズを大きくすることで、画像がボケていく。

footprintを変化させた場合

footprintでフィルタをかける範囲を変更できる。ここでは、skimageのmorphologyを使用して、フィルタのかかる範囲を設定した。結果は以下のようになる。

Generate structuring elements — skimage v0.19.2 docs
コードをダウンロード(.pyファイル)

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

参考

scipy.ndimage.percentile_filter — SciPy v1.8.1 Manual

コメント