炸鸡人博客 基本上无害
Posts with the tag 色彩:

搞颜色系列:单色光光谱

前言

人眼可见色域在色度图中表现为彩色的马蹄形,单色光(monochromatic light)的颜色对应于马蹄的弧形边界。本文想将单色光的颜色按波长线性增大的顺序一字排开,用类似彩虹渐变图的形式展示单色光光谱。用 Python 的 Matplotlib 包来实现的话,很快就能决定画图思路:

  1. 读取 XYZ 颜色匹配函数(CMF)作为 XYZ 三刺激值。
  2. XYZ 变换为 sRGB,接着做 gamma 校正。
  3. 用 RGB 数组构造 ListedColormap 对象,用 plt.colorbar 画出。

RGB 要求范围在 $[0, 1]$,但 CMF 直接计算出的 RGB 既有负数分量,也有大于 1 的分量,所以必须采用一种方法处理范围外的分量。最后的画图效果会因处理方法的不同产生很大差别,例如下图的三条光谱:

three_colorbars.png

就采取了不同的处理方式,因此在发色、颜色过渡,和亮度表现上都大有不同。本文将尝试实现不同的效果并加以分析。完整代码和相关数据见 我的 Github 仓库

搞颜色系列:绘制 CIE 1931 色度图

前言

1920 年代末 Wright 和 Guild 的颜色匹配实验发展出了用红绿蓝三基色(primaries)定量表示所有人眼可见颜色的 CIE RGB 色彩空间,1931 年国际照明委员会(CIE)通过对 CIE RGB 色彩空间做线性变换得到了 CIE XYZ 色彩空间。XYZ 空间里的人眼可见色域(gamut of human vision)是一块从原点出发,向无限远处不断延伸的立体区域。将这块区域投影到 $X + Y + Z = 1$ 的平面上,就能画出方便展示的 CIE 1931 色度图(chromaticity diagram)(图自 维基):

wikipeida-CIE1931xy

如何从最初的颜色匹配实验导出 CIE 1931 RGB 颜色匹配函数

罗切斯特大学朱禺皓的 博客文章,基于颜色匹配实验的原始论文跟后人的调查,先从单位系统和色度系数讲起,再引入颜色匹配函数的概念和计算方法,并直接指出颜色匹配函数就是匹配单位功率单色光的亮度时,红绿蓝三基色的亮度经亮度系数缩放后的值。本文讲解的顺序跟一般教科书相反,显得更加自然和易于理解。专业术语的翻译可能有误,还请读者指正。

cover