[SciPy] 24. ガウス微分フィルタによるエッジ検出(ndimage.gaussian_gradient_magnitude)

matplotlib

はじめに

scipyのndimageのgaussian_gradient_magnitudeを使って、画像のエッジを検出して表示する方法について説明する。

コード&解説

モジュールのインポート

バージョン

画像の読み込み

下記サイトから画像を取得し、plt.imread()で読み込む。

たい焼き器のイラスト(養殖)
いらすとやは季節のイベント・動物・子供などのかわいいイラストが沢山見つかるフリー素材サイトです。

グレースケール変換

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

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

ガウス微分フィルタ

sigma=3でガウス微分フィルタを適用した結果は以下のようになる。

手動でガウス微分フィルタ

x方向にガウス微分フィルタをかけた結果は、ndi.gaussian_filter(img_g, (sigma,sigma), (0,1))で得られる。yはorderを(1,0)とした場合に得られる。強度の像は各成分の2乗値の平方根で得られる。

ガウス微分フィルタのsigmaを変えた場合

ガウス微分フィルタのsigmaを変えた時の変化は以下のようになる。

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

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

参考

scipy.ndimage.gaussian_gradient_magnitude — SciPy v1.8.1 Manual
scipy.ndimage.gaussian_filter — SciPy v1.8.1 Manual

コメント