颜色位深度

颜色位深度指的是在一张图片中,每个像素可用的内存大小。颜色的位深度越高,图像能够显示的颜色数量就越多,但占用的内存也会更大。

这就好象在现实世界里,一张 A3 纸能容纳比 A4 纸更多的图像细节,但也会占用更大的桌面空间一样。

除了颜色种类和图像体积外,位深度还会影响颜色运算的精确程度。

要讲清楚颜色位深度的概念,我们最好从计算机图像技术黎明期的一种老式颜色系统开始讲起。它便是:索引颜色。

索引颜色

在年代久远的老式计算机系统中,每个图像文件都内建了一个色板。这个色板记录了图像中每种颜色的数值,如同字典的索引一样,所以这种颜色系统也被称为“索引颜色”。因为计算机按照一定的位数来存储数值,数值越大,需要的位数越多,因此色板的大小也按照位数来进行定义。

../../_images/Kiki_lowbit.png
1 位

1 位数值只能表达 0 和 1,所以 1 位色板只能显示两种颜色,通常是黑白。

4 位 (16 色)

4 位数值可以显示 16 种颜色。这是电子游戏黎明期的常见色彩系统,许多经典游戏使用的便是此类色板。如果你喜欢怀旧游戏,你或许对“16 色”这种说法并不陌生。

8 位

8 位数值可以显示 256 种颜色。许多早期电子游戏使用 8 位色板将像素纹理和像素拼合图保存到运行内存。

计算机图像技术经过多年的发展,能够同时显示的颜色越来越多。索引颜色不再符合行业需求而被逐渐淘汰,Krita 也不支持索引颜色。现代计算机图像技术按照原色将图像分为多个色彩通道,如 RGB 色彩模型就有红、绿、蓝 3 个色彩通道 (如果支持透明度则有 4 个通道)。色彩通道的位数决定了每个通道可以显示的原色的亮度级别数量 (即“每通道位深度”)。这种色彩处理方式叫做“真彩色”。

真彩色

../../_images/Rgbcolorcube_3.png

每通道 1、2、3 位的图像实际并不存在,但它们在说明真彩色的概念时比较方便,仅作演示。1 位通道有 2 级色调变化 (0%, 100%),一张图像能显示 2 x 2 x 2 = 8 种颜色。2 位通道有 4 级变化 (0%, 33%, 66%, 100%),一张图像能显示 4 x 4 x 4 = 64 种颜色。 3 位通道有 8 级变化,一张图像能显示 8 x 8 x 8 = 512 种颜色。通道位深度每增加 1 位,色彩立方体的每个面都会被细分一次,可以显示的颜色种类是之前的 2 次方,能够表现更加细腻的色彩变化。

每通道 4 位 (Krita 不支持)

俗称高彩色,或者总计 16 位颜色 (RGBA, 4 + 4 + 4 + 4 = 16)。这是一个比较老旧的颜色系统,在 Windows 9X 时代曾经非常流行,但现在已经不常见了。

每通道 8 位

俗称“真彩色”,也被称作 24 位颜色 (RGB, 8 + 8 + 8 = 24)、32 位颜色 (RGBA, 8 + 8 + 8 + 8 = 32) 。它们的每个通道能够显示 256 级色调。这是 Krita 可以处理的最低的颜色通道位深度,也目前使用最广泛的通道位深度。

每通道 16 位

俗称“高色深”,它的每个通道能显示 65536 种颜色数值。这种图像可以记录更加细腻的色调变化,甚至能够超出目前的显示器的呈现能力。如果颜色数值中不含负值,这种图像能提供 16 位的色彩运算精度。

16 位浮点

16 位浮点相对于 16 位整数而言,具有色彩范围更宽,但色彩运算精度较低的特点。16 位整数使用像 [1, 4, 3] 这样的颜色坐标,而 16 位浮点使用的是 [0.15, 0.70, 0.3759] 这样的颜色坐标,纯白的坐标是 [1.0,1.0,1.0]。因为整数变量和浮点变量的差异,也因为场景光参考图像允许颜色数值为负值,16 位浮点的每个通道在 0 到 1 的区间只有 2048 个颜色数值,每通道色彩精度在 10 至 11 位之间,所以通常也被称作“半浮点精度”。相对的 16 位整数下面每通道的色彩精度就是货真价实的 16 位。16 位浮点是 HDR 或场景光参考图像所要求的最低位深度。

32 位浮点

32 位浮点与 16 位浮点类似,但精度更高。它也是 OpenColor IO 的内部色彩深度,因此处理 HDR 图像时比 16 位浮点更快。由于浮点数据的特性,32 位浮点的每个通道在 0 到 1 的区间中有 16777216 个数值。但它的范围更宽,可以远超 1。32 位浮点的每通道精度约为 23 到 24 位,也被称作“单浮点精度”。HDR 或者场景光参考图像至少需要 16 位浮点,也可以选用 32 位浮点。

许多廉价显示器的面板只有每通道 6 位,它们能够呈现的颜色数目要远少于图像实际的颜色数目,这会造成颜色渐变呈现带状的色阶。某些显示器会通过抖动算法来掩盖这种缺陷,但这样会造成闪烁或者噪点。数字绘画最好能使用 8 位面板的显示器。少数非常高端的显示器甚至可以显示 10 位甚至 12 位的颜色。

虽然 16 位浮点甚至 32 位浮点的特性看起来十分诱人,但它们的内存消耗也十分惊人 (尤其在制作动画时),而且还会带来诸如性能下降和混合模式不兼容等问题。我们会在后面的“场景线性绘画”章节中作进一步介绍。对于一般绘画用途来说,每通道 8 位是最常用的,而且也完全够用。