本文的公式的基礎都是在前文的基礎上的。詳情請參看前文:
本文在前文的基礎上。把顔色轉換的各個公式重新整理了一番。
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,如需轉載請自行聯系原作者