はじめに
skimage.colorのrgb2hsvでRGB画像をHSV画像に変換して、HSVのvalue値を使って2値化処理する方法について説明する。
コード
解説
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 0.24.0 documentation
skimage.color — skimage 0.25.0rc2.dev0 documentation
コメント