为什么从较小色彩空间到“较大”色彩空间的转换通常是有损的?较小的色域如何具有无法在较大(重叠)色域中表示的颜色?
颜色空间转换期间的颜色丢失
颜色值由用于存储数据的格式的位深度量化。例如,在大多数标准格式和现代显示器中,每种颜色、每个像素有 8 位,有时称为 24 位真彩色。有 2^8 = 256 个级别,这就是为什么 RGB 颜色通常由 0 到 255 范围内的三个值表示的原因。除非特定颜色的转换导致目标空间中恰好是整数值,否则它必须四舍五入到最接近的准确值。(顺便说一下,抖动用于使这种舍入的确定性降低,从而减少条带。)
为了说明,让我们在一维中定义一些虚构的色彩空间。
让 Profile1 覆盖从“真黑”到“真白”的整个范围,任意表示为我们显示器的黑白值。让它成为一个 4 位空间,可能有 2^4 = 16 个级别。这个空间中的渐变看起来像这样:
让 Profile2 只覆盖 Profile1 的一半范围,这样它可以表示的最暗的值是深灰色,最亮的是浅灰色。它也是 4 位的。这个空间中的渐变看起来像:
如果我们希望将较小的 Profile2 中的渐变图像转换为较大的 Profile1,我们必须将 Profile2 中的每个值“映射”到 Profile1 中的新值。如果我们不这样做,只是在保留颜色编号的同时更改配置文件,颜色会发生变化:在这种情况下,对比度会增加。让我们看看当我们将 Profile2 渐变中的每种颜色映射到 Profile1 中最接近的颜色时会发生什么:
尽管 Profile1 是一个更大的色彩空间,但这肯定不是无损转换。
事实上,因为 Profile1 更大,但只有相同的 16 个级别来表示颜色,所以每个可用颜色之间的差距更大。即使配置文件空间大小相同但覆盖范围不同,每个级别表示的颜色也会不同,您仍然需要将颜色与其最接近的匹配匹配,而不是准确。抖动有助于这种不准确性:具体来说,它用一种换另一种,给假的不可能的颜色引入噪音。这是从 Profile2 到 Profile1 的相同转换,这次使用抖动:
灰度空间简化了插图,有限的位深度夸大了效果。然而,完全相同的过程会影响所有色彩空间之间的转换。位深度越高,可用的精度越高,转换可能越接近“无损” 。(当然,您仍然必须应对色域,以及为使一个色域适合另一个色域而做出的权衡。)