计算机中的颜色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
轉載于:https://www.cnblogs.com/grenet/archive/2010/11/12/1875491.html
總結
以上是生活随笔為你收集整理的计算机中的颜色XIII——颜色转换的快速计算公式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CSS十条速记口诀
- 下一篇: 使用代码生成建立可扩展序列化器(上)