zoukankan      html  css  js  c++  java
  • 计算机中的颜色XIII——颜色转换的快速计算公式

      本文的公式的基础都是在前文的基础上的。详情请参看前文:

      计算机中的颜色I——颜色概述

      计算机中的颜色II——VB2005中的Color结构

      计算机中的颜色III——HSV表示方法

      计算机中的颜色IV——纯色、色相色

      计算机中的颜色V——快速计算颜色的色相值

      计算机中的颜色VI——从色相值到纯色的快速计算

      计算机中的颜色VII——快速计算纯色的偏转

      计算机中的颜色VIII——快速计算颜色的偏转

      计算机中的颜色IX——总述:RGB和HSV快速转换

      计算机中的颜色X——两颜色的偏转值

      计算机中的颜色XI——从色相值到纯色的快速计算(新的公式)

      计算机中的颜色XII——快速计算纯色的色相值(新的公式)

      本文在前文的基础上。把颜色转换的各个公式重新整理了一番。

      1、基本概念:

        计算机中的颜色一般采用两种表示方法:

          RGB法:用R、G、B三个分量来表示一种颜色。每个分量取值范围在[0,255]

          HSV法:用色相H、饱和S、亮度V来表示一种颜色。

              其中,H的取值范围是[0,360),S的取值范围是[0,1],V的取值范围是[0,1]

        纯色:颜色的S,V分量均是1,则该颜色表示纯色。纯色和色相有一一对应的关系。故有时用纯色表示色相

        灰度色:当S=0时,该颜色为灰度色。此时,三个颜色分量均相等。

      2、基本函数:

        MAX{A1,A2,A3,A4,……}:表示在A1,A2,A3,A4,……中取最大值

        MIN{A1,A2,A3,A4,……}:表示在A1,A2,A3,A4,……中取最小值

        |A|:表示取A的绝对值,若A≥0,则为A;若A<0,则为-A

        SIGN(A):表示取A的符号,若A>0,则为1;若A<0,则为-1;若A=0,则为0

        {A,P}:范围截取函数,若A<0,则为0;若A>P,则为P;若0≤A≤P,则为A

        A MOD B:求余运算,表示A除以B后的余数

      3、颜色的转换:RGB》HSV

        颜色Q的三个分量R、G、B

        令Max=MAX{R,G,B};Min=MIN{R,G,B}

        若Max=Min,则H=0,S=0,V=Max/255

        若Max≠Min,则

          H=180+(2Max-G-B+R-Min)×SIGN(B-G-0.5)/(Max-Min)×60

          S=1-Min/Max

          V=Max/255

      4、颜色的转换:HSV》RGB

        颜色Q的三个分量H、S、V

        令Max=255V

        

        若S=0,则表示灰度色;R=G=B=Max

        若S>0,则

          令P=255SV=Max-Min;Min=Max-255SV=255(1-S)V

          H'=H/60×P

          R={|H'-3P|-P,P}+255(1-S)V

          G={2P-|H'-2P|,P}+255(1-S)V

          B={2P-|H'-4P|,P}+255(1-S)V

      5、获得指定颜色的纯色

        颜色Q的三个分量R、G、B。该颜色对应的纯色Q'的三个分量R'、G'、B'。

        令Max=MAX{R,G,B};Min=MIN{R,G,B}

        

        若Max=Min,则R'=G'=B'=Max

        

        若Max≠Min,则

          R'=(R-Min)/(Max-Min)

          G'=(G-Min)/(Max-Min)

          B'=(B-Min)/(Max-Min)

      6、颜色的偏转

        颜色Q的三个分量R、G、B。该颜色偏转N后得到的颜色Q'的三个分量R'、G'、B'

        N>0表示顺时针方向偏转;N<0表示逆时针方向偏转    

        若R=G=B,则该颜色为灰度色。则R'=R,G'=G,B'=B

        若不为灰度色

        先按照3的方法求出Q的色相H

        颜色Q'的色相H'=(H+N) MOD 360

        再按照4的方法求出颜色Q'的三个颜色分量

      7、求出两个颜色的偏转值

        颜色Q1的三个分量R1、G1、B1;颜色Q2的三个分量R2、G2、B2。求从颜色Q1到颜色Q2的偏转值

        先按照3的方法求出Q1的色相H1,Q2的色相H2

        N=(H2-H1) MOD 360

        

        

  • 相关阅读:
    验证foreach 能否操做更改原表
    asp.net post/get 公共方法
    C# json日期转换
    学数学
    2742: [HEOI2012]Akai的数学作业
    BZOJ2208
    树状数组求逆序对
    网络流复习计划
    SG函数学(hua)习(shui)记录
    SPLAY板子
  • 原文地址:https://www.cnblogs.com/grenet/p/1875491.html
Copyright © 2011-2022 走看看