 |
 |
|
|
|
|
|
|
|
|
|
|
第八节
色彩模型 |
|
|
|
|
|
|
|
|
下面我们给出RGB模型与HSV模型之间的转换算法。
RGB-TO-HSV算法:
算法的输入是RGB模型中的颜色(rI,gI,bI)值,rI,gI,bI∈[0,1]。
S1: [初始化] V=Max(rI,gI,bI),
Temp=Min(rI,gI,bI).
S2: [计算S] 如果 V=0,则S(0;
否则 S((V-Temp)/V
S3: [计算cr,cg,cb] cr((V-R)/(V-Temp),cg((V-G)/(V-Temp),
cb((V-B)/(V-Temp),
S4: [H] 如果 R=V, 则 H←cb-cg。(这个颜色是在yellow与magenta之间)
如果 G=V, 则 H←2+cr-cg。(这个颜色是在cyan与yellow之间)
如果 B=V, 则 H←4+cg-cr。(这个颜色是在magenta与cyan之间)
H←60*H.如果 H<0,则 H←H+360,结束。
HSV-TO-RGB算法
输入为HSV模型中的H(0-360),S(0-1),V(0-1)。
S1:[当S=0时] 判断H是否为无定义,如果是,则(r,g,b)((V,V,V);否则,
报告出错,结束。
S2:[当S=0时]
S2.1 如果H=360,则H←0。
H←H/60, I←int(H),f ← H-I。M←V(1-S), N←V(1-S*f),K←V(1-S(1-f)),(r,g,b)
←(V,K,,M)。
S2.2 如果 I=0,则(r,g,b)←(V,K,M)。
如果 I=1,则(r,g,b)←(N,V,M)。
如果 I=2,则(r,g,b)←(M,V,K)。
如果 I=3,则(r,g,b)←(M,N,V)。
如果 I=4,则(r,g,b)←(K,M,V)。
如果 I=5,则(r,g,b)←(V,M,N)。
S2.3 输出(r,g,b),结束。
|
|
|
|
|