天天看點

計算機中的顔色XIII——顔色轉換的快速計算公式

本文的公式的基礎都是在前文的基礎上的。詳情請參看前文:

  本文在前文的基礎上。把顔色轉換的各個公式重新整理了一番。

  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=Min,則R'=G'=B'=Max

      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

    本文轉自萬倉一黍部落格園部落格,原文連結:http://www.cnblogs.com/grenet/archive/2010/11/12/1875491.html,如需轉載請自行聯系原作者

繼續閱讀