第三章 ACES预备课——Linear不是色彩空间
- Color
- 十分钟系列
第三章 ACES预备课——Linear不是色彩空间
3.1 误解
“Linear 色彩空间”
“线性工作流程”……
这是很多VFX 遵循的制作圣经,如果你跟他说这可能有问题,他估计要跟你吵翻天哦~
但是不幸的是,这个还真有点问题。
不过问题不是出在Linear 上,是出在我们的理解上。
第一个重大的错误就是“Linear 色彩空间”。
3.2 色彩空间三指标
当定义一个色彩空间的时候,至少需要三个重要的指标:
- 色域(三个基色的坐标,形成的三角形)
- gamma(如何对色域三角形内进行切分)
- 白点(相当于色域三角形的中心)
我们可以先把色彩空间理解为一个三角形(其实色彩空间是三维的,这里暂时忽略因为亮度所产生的立体维度,简化的讨论一下。有机会再来纠正一些错误哦^_^)
色域(也叫做基色)
也就是图中最外面的白色粗线形成的三角形。
可以试想一下,如果三角形的三个顶点的位置发生了变化,必然会导致整个三角形所覆盖的颜色发生变化。
白点位置
就是图中三角形中心的那个小圆点。
再来想象一下,如果三角形的位置不变,但是中心白点移动了位置,你需要从顶点走到小白点,那么途中经过的色彩肯定也是不同了。
gamma
为什么把 gamma 放到最后?
因为这里就需要明确一个概念了,gamma 可不是色彩空间哦!gamma 只是如何采样的概念。
比方说,下面两个图,他们的色域一样,白点也一样。
还是动用一下想象力,如果我把这个三角形“均匀” 的向内切割,会得到什么样子的结果? 或者换个方式,刚开始的时候切割的少一点,然后越切越大,会是什么结果?
如果对比一下每次切割的顶点,就会发现不同的切割方式会对应不同的颜色。
大家通常理解的 linear 只不过是 gamma = 1 的情况,可以理解为“均匀” 的切分。
这样的好处就是保证计算的方便,而且每次前进的距离总是相同的。
而右边那种 “非均匀” 切割的情况就是 gamma ≠ 1。
还是举个例子来总结一下,假设我们有个常见的色彩空间 sRGB。现在大家可以想象一下,sRGB
到底是如何构成的呢?
- 色域:首先是sRGB 规定了RGB 三个色度坐标。也就是由此确定了三个顶点。三个顶点一旦确定,那么形成的三角形也就确定下来了。
- 白点:sRGB 也规定了白点。也就是说规定了三角形的中心。
- gamma:sRGB 的gamma ≈ 2.2。也就是说切分这个三角形,开始切分的很细,后来越来越粗。
但是大家都是知道linear 的好处:便于计算、算法简便、计算机效率高…… 因此我们可以认为有个sRGB - linear
色彩空间:
- 色域:肯定还是sRGB,因为三角形没变。
- 白点:没变
- gamma:我们改变切分的方式,每次都是均匀的切割。
于是乎,我们就得到了sRGB - linear 色彩空间
。
这个就是大部分VFX 人员认为的“Linear 色彩空间”。
3.3 举一反三
有了这个经验,我们马上可以想到,是不是任何gamma ≠ 1 的色彩空间,我们都可以转换为一个gamma = 1 的色彩空间呢?
没错!比方说:P3-DCI
的 gamma = 2.6。
那么只要保证色域、白点不变,只将 gamma = 1 我们就得到了一个 P3-DCI - linear 色彩空间
。
我们列出一张表格,里面是一些常见的参数:
色域 | 白点 | gamma |
---|---|---|
sRGB | D50 | linear |
P3 | D60 | 2.2 |
WideGamut | DCI | 2.6 |
SGamut | D65 | cineon |
RedColor3 | logC | |
RedLogFilm | ||
Slog3 |
我们只要任意组合这三列,就可以得到一个色彩空间了。
所以会存在
- sRGB - D65 - linear
- WideGamut - D50 - linear ……
可以说任何色彩空间都可以是linear 的,但是linear 不是一个色彩空间!
大部分人在nuke 里面读取一个Alexa 拍摄的素材时,nuke 做的转换仅仅是对 gamma 进行了转换,从 logC 变成了 linear 然后再变成sRGB。
没有对色域、白点进行相应的变换,这就是有时候DI、VFX 之间看到不同色彩而发生扯皮的重要原因!
在这里呼吁大家,尽可能的将色彩空间的名字说完整,不然就会造成更多的误解。
有时候可以省略白点(因为白点往往是官方和色域一起规定的),所以至少要这样说:
- 摄影机的色彩空间是
WideGamut - LogC
、RedColor3 - RedLogFilm
- VFX 需要转换到
sRGB - Linear
当然还有一些色彩空间不需要说那么多,因为这些色彩空间在定义的当初就完全规定了色域、白点、gamma。因此只要说出他的名字就可以了。
例如:ACES
、XYZ
、L*a*b*
…… 这里也看出了ACES
的一些优势,只要说出他的名字,大家都会立刻产生相同的认识,从而避免了混淆。