[scikit-image] 4. RGBをHSVに変換して、2値化処理

python

はじめに

skimage.colorのrgb2hsvでRGB画像をHSV画像に変換して、HSVのvalue値を使って2値化処理する方法について説明する。

コード

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

解説

RGB画像では、色相と明度はR、G、Bそれぞれが合体した状態となっているが、HSV画像は色相と明度が分離される。そのため、HSVのV値のしきい値処理によって、画像の単純なセグメント化を効果的に実行することができる。

モジュールのインポート

画像をHSVに変換

画像にはギムノカリキウム属 竜頭を用いる。

rgb2hsvにより、RGB画像をHSV画像に変換する。
変換した変数の[:,:,0]が色相(Hue)で[:,:,1]が彩度(Saturation)、[:,:,2]が明度(Value)となる。

画像の表示

しきい値処理による2値化

value値でしきい値処理をする。ここでは、0.35をしきい値として、0.35より大きいのと0.35以下で2つに分離した。

ax0.hist(hue_img.ravel(), 512)でhue_imgのヒストグラムをbin数を512として作成。ax0.axvline(x=hue_threshold, color=’r’, linestyle=’dashed’, linewidth=2)でしきい値としたvalueの値のところに、赤い点線の垂線を表示する。
ax1.imshow(binary_img)で画像が表示される。cmapを’gray’とし、白黒画像で表示した。

参考

RGB to HSV — skimage v0.15.0 docs
Module: color — skimage v0.16.dev0 docs

コメント