【画像処理】RGBからHSVへの変換

この記事では、画像処理におけるRGBからHSVへの色空間変換の原理や特徴、計算式についてまとめました。

RGBからHSVへの変換

HSV色空間の概要については下記事で解説しています。
【画像処理】HSV色空間の原理・特徴・計算式

【前提条件】
R、G、Bの値が0.0~1.0の範囲にあるとします。

色相Hの計算

R,G,Bの3つの値のうち、最大のものをMAX、最小のものをMINとしたとき、色相Hは以下の式で計算できます。

(1) \begin{eqnarray*} H= \begin{cases} 60\times \frac{G-R}{MAX-MIN}\hspace{10px}(MAX=R)\\ 60\times \frac{B-G}{MAX-MIN}+120\hspace{10px}(MAX=G)\\ 60\times \frac{R-B}{MAX-MIN}+240\hspace{10px}(MAX=B)\\ 0 \hspace{10px}(MIN=MAX)\\ \end{cases} \end{eqnarray*}

つまり、R, G, Bの3つの値のうち、どれが最大値かによって計算式が変わります。
色相Hが負の値になれば、360を加算して0~360の範囲内に収めます。

色彩Sの計算

色彩Sは円柱モデルか円錐モデルかによって計算方法が異なります。
円柱モデルのときの色彩をS_1、円錐モデルのときの色彩をS_2としたとき、以下の式で計算できます。

(2) \begin{eqnarray*} S_1&=&MAX-MIN \\ S_2&=&\frac{MAX-MIN}{MAX} \end{eqnarray*}

色彩Sは0~1の範囲内に値が収まります。

明度Vの計算

明度Vは以下の式で計算できます。

(3) \begin{eqnarray*} V=MAX \end{eqnarray*}

明度Vは0~1の範囲内に値が収まります。

実装例(プログラム)

【Python/OpenCV】RGBからHSVに変換

【おすすめ記事】
【画像処理入門】アルゴリズム&プログラミング

シェア&フォローお願いします!