[scikit-image] 90. sobelフィルタで画像の各画素における勾配を求める

matplotlib

はじめに

本記事では、scikit-imageライブラリのsobelフィルタを使用して、画像の各画素における勾配を計算する方法について解説します。sobel、sobel_h、sobel_vといった関数の使い方と実際の適用例を紹介します。

解説

モジュールのインポートなど

バージョン

データの生成

2Dのガウス関数を定義し、データを作成します。作成した画像を表示すると以下のようになります。

Sobel フィルタの適用

Sobelフィルタとは、下に示すフィルタのことで、各画素に適用することで画像の勾配を求めることができます。sobel_h関数では水平方向のフィルタのみを適用し、sobel_v関数では垂直方向のフィルタのみを適用することができます。

勾配画像の表示

平行方向の勾配像を表示

垂直方向の勾配像を表示

sobel_hとsobel_vの結果を合わせる

sobel_hとsobel_vの結果を組み合わせて表示すると、sobelフィルタを直接適用した場合と同様の結果が得られます。

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

まとめ

sobelフィルタは画像処理において重要なエッジ検出手法であり、scikit-imageで簡単に実装できることを学びました。sobel_h、sobel_vを使用して水平・垂直方向の勾配を個別に求め、総合的な勾配強度と方向を計算することで、画像の特徴を効果的に抽出できます。

参考

skimage.filters — skimage 0.26.0rc0.dev0 documentation

コメント