zoukankan      html  css  js  c++  java
  • 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;
  • 相关阅读:
    CodeForces 7B
    CodeForces 4D
    离散化
    线段树入门
    洛谷 P3951 小凯的疑惑(赛瓦维斯特定理)
    Codeforces 1295D Same GCDs (欧拉函数)
    Codeforces 1295C Obtain The String (二分)
    Codeforces 1295B Infinite Prefixes
    Codeforces 1295A Display The Number(思维)
    Codeforces 1294F Three Paths on a Tree(树的直径,思维)
  • 原文地址:https://www.cnblogs.com/whdsunny/p/9635116.html
Copyright © 2011-2022 走看看