色彩管理的理论与实践

颜色是个复杂的事情,我们还是从一些简单的事实说起。

  • 可见光是波段很窄的电磁波,所以可见光本身可以用电磁波的一些物理属性来描述,如频率、辐射能量等;这时我们其实没有“颜色”这个概念
  • 人 对可见光的感知建立在三种视觉细胞上,简单的说这三个细胞不同的输出导致了我们对“颜色”不同的理解,单一的波长的可见光和混合的可见光可能能导致类似的 输出得到相近的颜色感知,不同的混合方式也可能导致相近的颜色感知,因此研究清楚了人这三种细胞的输出可能我们就知道人类感知的颜色有哪些了。我们暂时不 说这三个细胞感知的是什么“颜色”,因为会产生循环论证的感觉。
  • 这样,如果我们单看这三种细胞输出的信号所属的区域,那就是人能辨识的颜色空间,我们可以用一个 3D 的坐标来表示对 3D 来说通常使用 CIE 1931 色彩空间来 描述,这个 3D 坐标相当于是可见光波段输入的辐射在每种细胞的响应函数下积分的输出(trisiumulus)值 (X, Y, Z),通常我们会将三者值的和称为亮度(感受到的辐射功率和),之后有用的就是两个分量占的比例了(剩下的可以减出来),这样我们就得到了所谓的 CIE xyY(其中 x、y 可以看成是 X/(X+Y+Z), Y/(X+Y+Z),而 Y 表示 X+Y+Z)。以上图像就是去掉了亮度后,希望用来表示颜色的部分。
    CIE 1931 color space chromaticity diagram

    这里的颜色只是象征性的表示,因为你的显示设备会紧紧展示一些颜色而不是所有的,但是这个闭合的区域就相当于是颜色的一种 2D 的表示。

    CIE xyY
  • 那 么如果我们希望表示某种色彩,用一些简化的模型,像上面那种不是很规则的区域往往会让我们无从下手。我们可以选择以上空间的一个子空间,然后定义一些基本 色彩的位置,而所有的颜色就可以用这些基本颜色的混合生成出来,这样就会形成在以上图形中一个三角形区域,我们常说的 sRGBAdobe RGB 或者 NTSC 等等都可以看成是大小不同的几个三角形(也是三维空间在这个 2D 里面的投影)。下面是 CIE RGB。有 了范围,我们还需要比较准确的描述位置,这就需要量化,这往往通过一个 n bit 的二进制数来完成,前面讨论显示器的时候说不少廉价的显示器只是用 6bit 的面板,如果我们希望比较准确的描述 gradient 那么 bit 数越多,描述得越准确。现在 8bit应该是稍微严肃一点的和颜色打交道的人的必须的,更专业一点的都是 10bit 了。照相机的 RAW 很早就提供了 10bit 的数字化,但是一旦我们转换到类似 8bit JPG 上就会损失掉这额外的精度。

    CIE RGB
  • 需要注意的是 RGB 和亮度的关系并不是线性的,比如 sRGB 在比较暗的部分是,但是随着亮度增高 \gamma 系数接近 2.2;Adobe RGB 整个接近 2.2。
  • 颜色的表示方法并非只有 CIE、RGB 两种,另一种称为 YUV,这类里面也是使用亮度 Y 和两个色彩的分量,尤其注重的是这两个坐标对人色彩感知的一致性,那么在传输压缩过程中比起 RGB 系来说更具优势,因为就算损失了一些,可能人感知上并不是觉得很严重。比如所说的 NTSC 也叫 YIQ,也是 YUV 一系的表达方式。印刷里面用的比较多的是 CYMK
  • 显 示色彩的设备需要确定自己的色彩空间,有的能覆盖如 NTSC 或者 Adobe RGB 80% 以上的色彩的就被称为广色域显示器,当然现在多数显示器还是停留在 sRGB 这个颜色空间里,Dell U2410 的厉害之处不在于简单的 IPS 或者 8bit,而是在于同时提供了 102% 的 NTSC 覆盖率,换言之你甚至可以直接在相机里面换用 Adobe RGB 而不是 sRGB,这显示在 U2410 上很可能更合适。多数显示器大颜色覆盖率仅仅在 sRGB,那基本上是 76% 的 NTSC 覆盖率。
  • 决定一个显示器色域的因素很多,光源是很重要的一环。LCD 里面比较重要的就是 CCFLLED 了,只有特殊的 CCFL 和 LED 才能制作 wide gamut display。最极端的问题就是如何产生某些单色光,这有解决方案(激光)但是成本较高,因此多数显示器光源都转向使用较便宜的 LED 之类了。

有了这一些基础的概念,我们来看看一些复杂的情况:

  • 生产显示器的一般使用 RGB 三种颜色配色弄出来,液晶的作用在于产生不同的透光程度,将背光过滤掉一部分这样我们看到的就是一些小“像素”合并出来的明暗组合出来的颜色,可以看看这个图,解释了为什么会有偏振现象,同时估计反正也要用

    TN 屏的构造
  • 那 么显示器自己的颜色如何与我们的内容需要产生的表示关联上呢?不同设备往往工作在不同的颜色空间,比如前面说相机可能是 sRGB 也可能是 Adobe RGB,打印机是 CYMK,很可能两者的色域不完全重合,这就需要我们通过一个简单的方式描述每个设备自己的颜色,这就是所谓的 ICC profile,为了比较准确的比较颜色之间的关系,ICC profile 势必会使用 CIE XYZ/L*a*b* 之类的颜色空间,记录一些特殊颜色对应的坐标,从而将其他颜色通过插值计算出来。这样有了 ICC 做转换就容易将一个设备上的颜色转换到公用的颜色空间然后逆转换输出的设备上了。
  • 实际的显示设备很可能不能准确的表示我们想要的颜色,比如白色,矫正所做的事情就是将其与我们需要的颜色 align。那能否猜一下某些操作是在干什么呢?比如一个工作在大致 sRGB 颜色空间的屏,我们希望给定 RGB 时能正确反映我们的感知颜色,那么我们可以将对应颜色的 RGB 输出通过 sensor 读出来看看是不是 CIE xyY 里面的坐标,这样就能知道一些 landmark 上颜色偏了多少,之后的事情就像是做 LSQ fitting 一样求一个变换让这几个 landmark 的 error 最小,这个变换分解成为一些操作,如 \gamma、对比度等即可。
  • 另一个很重要的概念就是白平衡,也可以说是中灰平衡,即 neutral grey 在输出的时候保证仍然是 neutral grey。为此我们常放置一个中灰色的东西在场景里面(灰卡或者 datacolor 有个 cube),事后用这个色块上的颜色做参考我们就知道怎么调整了。比较笨的方式就是在三个坐标上使用不同的缩放系数,常见的选择可以是直接在 RGB 上做,但是感觉那个可能很不合适,更常见的估计是按照 color temperature(内含计算方法),green/tint 来做调整,这两个方向在 CIE 上可以如下表示

    色温调整

试了一下 spyder2 也能把 Win7 矫正了,不过操作稍有不同,可以参考这篇文章的步骤。Win8 也行,但是似乎软件有点问题,在矫正过程中会不停的闪烁,但是似乎比起 Win7 自动就把结果用上了。

—————–
And Rebekah lifted up her eyes, and when she saw Isaac, she lighted off the camel.

Advertisements
色彩管理的理论与实践

一个有关“色彩管理的理论与实践”的想法

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s