はじめに
scikit-imageライブラリを使用して、RGB画像をHSV色空間に変換し、明度(Value)に基づいて2値化処理を行う方法を解説します。HSV色空間は色相(Hue)、彩度(Saturation)、明度(Value)の3つの要素で色を表現するため、特定の色や明るさの領域を抽出するのに適しています。この記事では、rgb2hsv関数を用いた変換方法と、変換後のHSV画像から明度成分を取り出して2値化する手順を具体的なコード例とともに紹介します。
コード

解説
RGB画像では、色相と明度がR、G、B成分が混ざり合った状態になっていますが、HSV画像ではこれらが分離されています。この特性を利用して、HSVのV値(明度)に対する閾値処理により、画像の単純なセグメント化を効果的に行うことができます。
モジュールのインポート
画像をHSVに変換
画像にはギムノカリキウム属 竜頭を用います。

scikit-imageのrgb2hsv関数を使用して、RGB画像をHSV画像に変換できます。変換後の配列では、[:,:,0]は色相(Hue)、[:,:,1]は彩度(Saturation)、[:,:,2]は明度(Value)を表します。
画像の表示
しきい値処理による2値化

明度(value)値を用いてしきい値処理を行います。この例では、閾値を0.35に設定し、0.35より大きい領域と0.35以下の領域に二分しました。処理結果を可視化するため、ax0.hist(hue_img.ravel(), 512)を使用して512区間のヒストグラムを作成し、ax0.axvline(x=hue_threshold, color=’r’, linestyle=’dashed’, linewidth=2)で設定した閾値の位置に赤い点線を表示しています。また、ax1.imshow(binary_img)で2値化した画像を表示し、cmapを’gray’に指定することで白黒画像として出力しています。
コードをダウンロード(.pyファイル) コードをダウンロード(.ipynbファイル)まとめ
RGB画像をHSV色空間に変換することで、色相、彩度、明度の各成分に基づいた画像処理が可能になります。特に明度成分を用いた2値化は、照明条件の変化に強い処理を実現できるため、物体検出や領域分割などのタスクに有効です。scikit-imageのrgb2hsv関数を使えば、簡単にこの変換が行え、必要な成分だけを取り出して処理することができます。HSV色空間は直感的に色を理解しやすいため、画像処理のワークフローを構築する際に役立つツールといえるでしょう。
コメント