VC语言

本类阅读TOP10

·VC++ 学习笔记(二)
·用Visual C++打造IE浏览器(1)
·每个开发人员现在应该下载的十种必备工具
·教你用VC6做QQ对对碰外挂程序
·Netmsg 局域网聊天程序
·Windows消息大全
·VC++下使用ADO编写数据库程序
·VC++学习笔记(四)
·非法探取密码的原理及其防范
·怎样在VC++中访问、修改注册表

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
颜色模型浅谈(二)

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

二、三基色颜色模型


  下面我们就开始具体的讲解颜色模型。

  众所周知,当我们将两种不同的颜色按一定比例混合可以生成另一种颜色,通过混合三种不同的颜色我们就可以得到我们想要的颜色,这就是三基色颜色模型的基本原理。但是理论表明在实际的基色组中,没有一种组合能生成所有的颜色。以我们常用的RGB为例,如下图:

rgb.gif (3642 bytes)

  这是一张颜色匹配图,该图表示了生成某一光谱颜色所需要的R、G、B配比,从图中可以看到500nm附近的光波颜色中R为负值,因此RGB显示器是无法500nm附近的光波颜色的。

XYZ颜色模型

cie2.gif (3757 bytes)  为了用三基色定义出所有的颜色,国际照明委员会CIE定义了三种标准基色XYZ,这三种基色是假想的颜色,并同时给出了颜色匹配图(见右图)。这样所有颜色的定义都有了国际标准,并且我们有了XYZ颜色模型。

Cr=aX+bY+cZ

 

  我们令x=X/(X+Y+Z) y=Y/(X+Y+Z),这样x,y的值就只依赖于光源的色彩和纯度,而与光源的亮度无关,并且我们将参数x,y称为色度。通过色度我们就可以确定所有的颜色了。

  通过对(x,y)作图我们就得到了下面这张图,称之为CIE色度图。

cie.gif (3098 bytes)

  曲线上的点是光谱颜色,即纯彩色,他们的纯度最高。连接红色和紫色的直线称为紫色线,它不属于光谱颜色。曲线包围的点为所有可能的可见光的组合,C点即为白色,很显然越靠近C点则它的纯度就越低。如此一来,自然界中所有的颜色就都包含在曲线所包围的区域中了。

  有了色度图就可以帮助我们:

  一、为不同的基色组比较整个颜色范围。基色组所确定的颜色范围表示成直线段或多边形。如图,C1、C2、C3为我们所选择的基色组,则C1、C2、C3三点所围成的三角形就是基色组所确定的颜色范围,该三角形内所有的颜色都可以通过混合适量的C1、C2、C3所得到。由于图中没有一个三角形包含所有的颜色,这也就是为什么没有一种三基色组能生成所有的颜色。

cie3.gif (2943 bytes)

  二、识别互补色。如果两种颜色的光按一定比例混合后能够得到白色光,那么我们就称其为互补色。例如,红色和青色、蓝色和黄色。从色度图上看,互补色一定是位于一条过白色C点的线段的两端。如下图,混合适量的C1、C2就可以得到白色了。

cie4.gif (2784 bytes)

  三、确定所选颜色的主频率和纯度。我们可以通过二基色颜色范围的解释来确定一种颜色的主频率。如如下图中的C1点,从C点过C1点作一条线段与光谱曲线相交,我们得到Cs点,这样颜色C1就可以表示为颜色Cs和白光的混合。那么C1的主频率就为Cs。但这种方法不适用与那些C和紫色线之间的颜色点如C2点,因为紫色线不属于光谱范围。为此,我们作C2C的反向延长线,交光谱曲线于Cp点,则C2点的主频率就为Cp,并把C2解释为,从白中减去Cp而得到。

cie5.gif (3046 bytes)




相关文章

相关软件