二几种常用的颜色模型 在计算机图形学中有两种重要的原色混合 系统:红、绿、蓝(RGB)加色系统和青、品红 、黄(CMY)减色系统。 如图8.14所示,这两种系统中的颜色互为 补色。青色是红色的补色,品红是绿色的补色 ,黄色是蓝色的补色。所谓某颜色的补色是从 白色中减去这种颜色后所得的颜色。 (1)加色系统 (2)减色系统 图8.14两种颜色系统
二 几种常用的颜色模型 在计算机图形学中有两种重要的原色混合 系统:红﹑绿﹑蓝(RGB)加色系统和青﹑品红 ﹑黄(CMY)减色系统。 如图8.14所示,这两种系统中的颜色互为 补色。青色是红色的补色,品红是绿色的补色 ,黄色是蓝色的补色。所谓某颜色的补色是从 白色中减去这种颜色后所得的颜色
彩色印刷、胶卷中等非发光显示体中采用 CMY减色系统。对于发光体如彩色CRT显示成彩 色灯光,常采用RGB加色系统。 在RGB系统中,颜色是由三个分量的不同 数值的组合来决定的。RGB彩色空间可以被表 示成一个立方体空间,如图8.15(1)所示。 从黑点到白点的连线,是彩色空间中灰色的 分布。这个彩色空间表示了显示器中的所有 颜色。 在硬拷贝设备中,使用的是CMY模型。图 8.15(2)是这个模型的图示
彩色印刷﹑胶卷中等非发光显示体中采用 CMY减色系统。对于发光体如彩色CRT显示成彩 色灯光,常采用RGB加色系统。 在RGB系统中,颜色是由三个分量的不同 数值的组合来决定的。RGB彩色空间可以被表 示成一个立方体空间,如图8.15(1)所示。 从黑点到白点的连线,是彩色空间中灰色的 分布。这个彩色空间表示了显示器中的所有 颜色。 在硬拷贝设备中,使用的是CMY模型。图 8.15(2)是这个模型的图示
两个系统的关系可以由下式给出 色彩 红R) 春C) 绿G) 蓝B) 品红U的 黄Y) 图8-15 (1)RGB (2)C3Y
两个系统的关系可以由下式给出 图8-15
RGB和CMY颜色模型是面向硬件的,而 HSV(Hue,Saturation,Value)模型是面向用户 的,它对应于三体维空间中的一个正六面锥体 (图8.16)。这个六面锥体的顶面与V=1相对 应,包含着具有最大亮度值的各种颜色。色彩 H由绕V轴的旋转角给定的。红色对应于角度0, 绿色对应于角度120,蓝色对应于角度240,每 一种颜色和它的补色相差180,饱和度$取值为 0-1。饱和度是相对于模型所表示的颜色范围 来量度的,并非相对于C1E色度图来量度的, 因而与纯度不相同
RGB和CMY颜色模型是面向硬件的,而 HSV(Hue,Saturation,Value)模型是面向用户 的,它对应于三体维空间中的一个正六面锥体 (图8.16)。这个六面锥体的顶面与V=1相对 应,包含着具有最大亮度值的各种颜色。色彩 H由绕V轴的旋转角给定的。红色对应于角度0, 绿色对应于角度120,蓝色对应于角度240,每 一种颜色和它的补色相差180,饱和度S取值为 0-1。饱和度是相对于模型所表示的颜色范围 来量度的,并非相对于CIE色度图来量度的, 因而与纯度不相同
V(明度值) 绿 黄 12 红 青 0 H(色彩角) S(饱和度) 图8.16HSV颜色六棱锥
六面推体顶点位于原点,V=0时,代表黑 色,V=1,S=0的点为白色。S=0而V值为中间 值时都是灰色,S=O时,H值是无意义的。当 S丰O时,H是有意义的。HSV模型与画家配 色的方式相对应。纯色颜料对应V=1,S=1, 添加白色获得的色泽相当于减少S,不同的 色深可由减少V值即添加黑色实现。形成不 同的色调需同时减少S和V值。 RGB颜色空间与HSV颜色空间是可以相互 转化的
六面锥体顶点位于原点,V=0时,代表黑 色,V=1,S=0的点为白色。S=0而V值为中间 值时都是灰色,S=0时,H值是无意义的。当 S≠0时,H是有意义的。 HSV模型与画家配 色的方式相对应。纯色颜料对应V=1,S=1, 添加白色获得的色泽相当于减少S,不同的 色深可由减少V值即添加黑色实现。形成不 同的色调需同时减少 S和V值。 RGB颜色空间与HSV颜色空间是可以相互 转化的
下面我们给出RGB模型与HSV模型之间的转 换算法。 RGB-TO-HSV算法: 算法的输入是RGB模型中的颜色(rI,gI, bl)值,rI,gl,b1∈[0,1们。 S1:[初始化]V=Max(rI,gI,bI), Temp=Min(rl,gl,bl). S2: [计算S] 如果V=0,则S(0; 否则S(N-Temp)W S3: [计算cr,cg,cb]cr(W-R)/(W-Temp), cg((V-G)/(V-Temp), cb ((V-B)/(V-Temp)
下面我们给出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。 (这个颜色是在ye l low-与magenta.之间) 如果G=V,则H←2+cr-cg。 (这个颜色是在cyan与yel low,之间) 如果B=V,则H←4+cg-cr。 (这个颜色是在magenta与cyan之间) H←60*H 如果HK0,则H←H+360,结束
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=O时]判断H是否为无定义,如果是,则 (r,g,b)(N,V,V);否则,报告出错,结束。 S2:[当S=0时] S2.1如果H=360,则H←0。 H←H/60,I←int(H),f←HI。 M←V(1-S),N←V(1-S*f),K←V(1-S(1-f)), (r,g,b) ←(N, K,,MO。 S2.2如果 (r,g,b)←(N,K M。 如果 则则 (r, g, b)←(N, ,MO。 如果 (r, g, b)←(M, V,K)o 如果 1=3, 」(r,g,b)←(M,N, V)
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)。 如果=5,则(r,g,b)←(N,M,N)。 S2.3输出(r,g,b),结束
如果 I=4,则(r,g,b)←(K,M,V)。 如果 I=5,则(r,g,b)←(V,M,N)。 S2.3 输出(r,g,b),结束