はじめに
scikit-imageライブラリのfiltersモジュールにあるrobertsフィルタとsobelフィルタを使った画像エッジ検出について解説する記事です。これらの演算子は、画像内の輝度が急激に変化する箇所(エッジ)を検出するためのツールです。記事では両フィルタの使用方法と特性について、サンプルコードと出力例を交えて説明しています。
コード

解説
本記事では、画像内のエッジを検出するための filters モジュールにある roberts フィルタと sobel フィルタの使い方について解説します。
モジュールのインポート
バージョン
画像の読み込み

上記の画像を読み込んで表示すると、以下のようになります。

画像のグレースケール化
skimage.color モジュールの rgb2gray 関数を使用して画像をグレースケールに変換すると、以下のような結果になります。

フィルタの適用
各フィルタに使用されるカーネルは、以下のような構造になっています。
roberts


sobel


図の表示
コードをダウンロード(.pyファイル)
コードをダウンロード(.ipynbファイル)
まとめ
RobertsとSobelはどちらも画像のエッジを検出するフィルタですが、Robertsはシンプルで高速、Sobelはノイズに強いという特徴があります。目的に応じて適切なフィルタを選択することが重要です。
参考
Edge operators — skimage 0.25.2 documentation
skimage.filters — skimage 0.26.0rc0.dev0 documentation
skimage.filters — skimage 0.26.0rc0.dev0 documentation
コメント
[…] [scikit-image] 16. エッジ演算子(filters.roberts, sobel)skimage.filters の roberts, sobelを用いた画像のエッジ検出sabopy.com2019.05.10 [scikit-image] 53. 画像のラベリング(skimage.measure labelなど)skimage.filtersのthresho […]