[scikit-image] 2. RGB画像のフィルタ処理

python

はじめに

skimage.color.adapt_rgbでRGB画像にグレースケール画像用フィルタを適用する方法を説明する。

コード

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

解説

グレースケールで機能するフィルターはたくさんある。 しかしそれらのフィルターは、そのままカラーのRGB画像には適用できないので、 scikit-imageの adapt_rgbデコレータを使う。
デコレータを使うには、RGB画像をどのように処理するかを決めなければならない。定義済みなのは2つある。

each_channel:
RGBのチャンネルそれぞれにフィルタを適用して、最後にもとに戻す
hsv_value:
RGBをHSVに変換して、HSVのV(明度)でフィルタを掛けてからRGBに戻す

adapt_rgbの設定

通常使う関数と同じようにこれらの関数を使うことができる。これにより、カラーイメージでフィルタが機能する。

モジュールのインポート

画像のフィルタ処理

plt.imread()で配列として画像ファイルを読み込む。
rgb2hsvでRGB配列をHSV配列に変換する。
sobel_each(im)で定義した関数を実行して、rescale_intensityでコントラストを高めている。
sobel_hsvもsobel_eachと同様。

画像の表示

hsv_valueでフィルタ処理された画像の結果は元の画像の色を保持するが、each_channelでフィルタ処理された画像は色が変なことになっている。

グレースケールに変換してからフィルタ処理

RGB画像をグレースケールにしてから、フィルタをかけることもadapt_rgbで可能。この場合、adapt_rgb用の関数を作成する。* argsと** kwargsを使用して、引数をフィルタに渡すシグネチャを作成して、デコレート関数が任意の数の位置引数とキーワード引数を持つことができるようにすることが重要。


参考

Adapting gray-scale filters to RGB images — skimage 0.22.0 documentation
skimage.color — skimage 0.23.1.post0.dev0 documentation

コメント