RGB和HSV的关系

来源:互联网 发布:c语言多线程实例 编辑:程序博客网 时间:2024/05/24 07:19

RGB

RGB是三基色,Red,Green,Blue的缩写,通过红,绿,蓝不同分量值叠加来表示一种颜色。

HSV

Hue,Saturation,Value的缩写,HSV对用户来说是一种直观的颜色模型

  • Hue,色相,就是色彩信息,即所处的光谱颜色的位置。该参数用一角度量来表示,值为0到360,红、绿、蓝分别相隔120度。互补色分别相差180度。

  • Saturation,饱和度,颜色的深度,范围从0到1,它表示成所选颜色的纯度和该颜色最大的纯度之间的比率,等于0的时候,无论Hue为什么值都表示灰色,灰度值由Value值决定

  • Value,色调,色彩的明亮程度,范围从0到1。

HSV可以用锥形图来表示:

这里写图片描述这里写图片描述

RGB和HSV的关系

RGB转化到HSV的算法:

max=max(R,G,B) min=min(R,G,B) if R = max, H = (G-B)/(max-min) if G = max, H = 2 + (B-R)/(max-min) if B = max, H = 4 + (R-G)/(max-min) H = H * 60 if H < 0, H = H + 360 V=max(R,G,B) S=(max-min)/max 

HSV转化到RGB算法:

if s = 0  R=G=B=V else  H /= 60; i = INTEGER(H)f = H - i a = V * ( 1 - s )b = V * ( 1 - s * f )c = V * ( 1 - s * (1 - f ) )switch(i)case 0: R = V; G = c; B = a; case 1: R = b; G = v; B = a; case 2: R = a; G = v; B = c; case 3: R = a; G = b; B = v; case 4: R = c; G = a; B = v; case 5: R = v; G = a; B = b;