HSV color space

计算机图形学原理的课给我们指定了课题然后自己去研究并且做ppt(顺便吐槽一下晚课下课布置作业第二天早课就要交的辣鸡时间安排)

肝了一个晚上 大概知道了一点 先写下来  

HSV其实是hue saturation value 即为色调 饱和度 明度 的一个颜色模型 是RGB颜色模型的替代表示、

色调H  用角度度量 取值范围一般为0~360度 从红色开始按逆时针方向算 红色为0度 绿色为120度 蓝色为240度 它们的互补色为黄色60度 青色180度 品红300度

保护度S表示颜色接近光谱色的程度 一种颜色可以看作是某种光谱色与白色混合的结果 其中光谱色占的比例越大 颜色接近光谱色的程度就越高 颜色的饱和度就越高 饱和度高 颜色则深而艳 光谱色的白光成分为0 饱和度达到最高 通常取值范围为0%~100% 值越大颜色越饱和

明度V表示颜色明亮的程度  对于光源色  明度值与发光体的光亮度有关  对于物体色  此值和物体的透射比或反射比有关  通常取值范围为0%(黑)到100%(白)

HSV模型通常用倒六棱锥的模型表示  H参数表示色彩信息  即所处的光谱颜色的位置  该参数用一角度量来表示  纯度S为一比例值  范围从0到1  表示所选颜色的纯度和该颜色最大的纯度之间的比率  S=0时  只有灰度 V表示色彩的明亮程度  范围从0到1  它和光强度之间并没有直接的联系

 

算法:

RCB转化到HSV的算法:

max=max(R,G,B);

min=min(R,G,B);

V=max(rR,G,B);

S=(max-min)/max;

if(R=max) H=(G-B)/(max-min)*60;

if(G=max) H=120+(B-R)/*(max-min)*60;

if(B=max) H=240+(R-G)/(max-min)*60;

if(H<0) H=H+360;

 

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;
posted @ 2018-09-12 15:35  周园顾  阅读(1099)  评论(0编辑  收藏  举报