您的位置:首页 > 其它

RGB和HSV空间的转换

2016-08-15 15:26 253 查看
 

作者:万仓一黍

出处:http://grenet.cnblogs.com/

  RGB模式:用R、G、B三个颜色的分量来表示颜色,分量的取值范围为[0,255],整数型

  HSV模式:用H、S、V三个分量来表示颜色。

        分量H:表示颜色的色相,取值[0,360),整数型

        分量S:表示颜色的纯度(饱和度),取值[0,1),浮点数型

        分量V:表示颜色的亮度,取值[0,1),浮点数型

  1、RGB到HSV

    颜色(R,G,B)如何快速转化到(H,S,V)

   

    令MAX为R、G、B三个分量的最大值;MIN为三个分量的最小值,定义域0~255

    若MAX=MIN,即R、G、B值相等,对应于RGB颜色空间中的主对角线,表示无彩色系的灰度颜色,则

      H=0

      S=0

      V=MAX/255

    若MAX≠MIN,任意一种颜色(R’,G’,B’)的色相计算公式:

      当G≥B时(正六边形色平面中,以R为顶点,会发现右边三个阴影部分的纯色都有一个共性,那就是分量G的值大于等于分量B的值,而左边三个空白部分的纯色也都有一个共性,就是分量B的值大于等于分量G的值)

        H=(Max-R’+G’-Min+B’-Min)/(Max-Min)×60

        S=1-MIN/MAX

        V=MAX/255

      当G<B时

        H=360-(Max-R’+G’-Min+B’-Min)/(Max-Min)×60

        S=1-MIN/MAX

        V=MAX/255

  2、HSV到RGB

    颜色(H,S,V)如何快速转化到(R,G,B)

    

    颜色(H,S,V)可以看成颜色(0,S,V)顺时针偏转H后得到颜色,其实,就是获得该颜色MAX与MIN分量

    MAX=V×255=255V

    若S=0,说明MAX=MIN,此时表示灰度色

      R=MAX

      G=MAX

      B=MAX

    若S>0,则令ρ=MAX-MIN=255SV,MIN=MAX-ρ

      若H>180,令H’=360-H;反之,令H’=H

      令λ=H’/60×ρ

      R=2ρ-λ;若R<0,则R=0;若R>ρ,则R=ρ;

      G=λ;若G>ρ,则G=ρ;

      B=λ-2ρ;若B<0;则B=0;

      若H>180,则交换G和B分量的值;反之,不交换。最后

      R=R+MIN

      G=G+MIN

      B=B+MIN
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  rgb