2014-12-08 11:02:23
颜色是一种很奇妙的东西, 通常看到的颜色受多种条件影响, 计算机显示的颜色也是一样. 相关的学科是色度学, 其中的关键是确定颜色匹配函数和定义颜色空间, 有了这两种东西就可以定量地描述颜色了.
国际照明委员会简称CIE(为其法文缩写)制定了颜色匹配函数(或称标准色度观察者), 开始时直接使用了基于红蓝绿的CIE-RGB颜色空间. 但基于此空间的颜色匹配函数会出现负值, 理解使用上都不方便, 所以CIE又定义了CIE-XYZ颜色空间, 以后还定义了CIE-L’a’b’, CIE-L’u’v’颜色空间. 这些颜色空间之间存在换算关系, 可互相转换, 目前使用最广的是最早定义的CIE-XYZ系统.
通常我们实验上得到的是物质的光谱, 如各种吸收光谱, 发射光谱. 如何将这些光谱转变为具体的颜色就需要色度学的知识.
设光源的相对光谱功率分布函数为 $S(\l)$, 物质的吸收函数为 $R(\l)$, 则颜色三刺激值
\[\alg X &= k \int S(\l) R(\l) \bar x(\l) d\l \\ Y &= k \int S(\l) R(\l) \bar y(\l) d\l \\ Z &= k \int S(\l) R(\l) \bar z(\l) d\l \\ k &= {100 \over \int S(\l) R(\l) \bar y(\l) d\l} \\ \ealg\]其中 $\bar x(\l), \bar y(\l), \bar z(\l)$ 为颜色匹配函数. 注意 $Y$ 同时被定义为代表强度.
有了颜色三刺激值后, 即可得到色度坐标,
$x={X \over X+Y+Z}, y={Y \over X+Y+Z}$
从CIE标准图上即可查出具体的颜色.
利用计算机显示颜色时, 一般使用sRGB颜色空间, 从CIE-XYZ空间向sRGB空间的转换可参考sRGB的标准. 由于sRGB的色域小于CIE-XYZ, 所以在显示的时候不可能表现出所有的颜色, 这不可避免地会引起失真. 因此要想得到逼真的光谱色并不是一件容易的事情. 目前的近似解决方案很多, 最简单的是将得到的RGB值加上一个值以保证其所有值为正, 或者根据sRGB的白点将色域外的值取为边界值.
下面是各种模拟的光谱和色度图
参考资料
- 胡维生. 颜色物理和CIE标准色度系统, 物理, 11(4).
- 包装色彩学, 郑州大学
- 张健敏. 彩色光谱的计算机重现. 苏州大学, 2005.
- Color Science
- Rendering Spectra
- Chromaticity Diagrams
- How the CIE Color Calculator Works
- Color: from spectrum to tristimulus
- Color systems RGB and CIE XYZ
- The colors of chemistry
- Reproducing a “visible spectrum” on a display
- Colour Rendering of Spectra
- Useful Color Data
- Colour & Vision Research laboratory and database
- useful color data