之前项目中使用的颜色距离计算材料,现在做个总结,原文参见
因此,问题“最接近的颜色是什么?” 和“如何测量颜色之间的距离?” 变得相关。
本文评估了几种常见的颜色距离指标,并提出了既简单又能产生良好结果的新公式。
PC 的图形应用程序通常采用 红-绿-蓝(RGB) 颜色空间。该模型很好地映射了普通阴极射线管(CRT) 显示器的工作方式。这些显示器具有三种荧光粉,当它们被电子束撞击时会发出红光、绿光或蓝光。RGB 模型的另一个优点是它是一个三维正交空间,这正是我们需要欧几里得距离函数的空间。
RGB 的问题在于它并不总是最容易使用的模型(这就是打印机通常使用 CMYK 模型的原因),更根本的是,它并没有模拟我们(人类)感知颜色的方式。具体来说,颜色感知是非线性的,并不完全正交。
标准颜色模型是 CIE XYZ 颜色空间。所有其他模型都可以解释为 CIE XYZ 颜色空间的不同映射或子集。CIE 是一个复杂的模型,最重要的是,尽管它定义了可以区分的所有颜色的空间,但它并没有提供 感知上统一的颜色空间。因此,CIE XYZ 空间中两点之间的距离与这些颜色的相对接近度无关。经过十年的辩论,CIE 未能就感知统一色彩空间的定义达成一致,因此将其批准印章应用于**两个相互竞争的感知统一色彩模型:CIE L * a * b *和 CIE L *u * v *** 。多项研究发现的一个特定缺陷是 CIE L * a * b * 随着颜色色度的增加逐渐过分强调色差。
视频和电视行业研究了感知均匀色彩模型的问题,以实现高质量的压缩。视频频道的带宽有限;要求对亮度和色度信息进行紧凑编码。但是当决定丢弃一些数据时,会希望在保留最佳视觉质量的同时这样做。视频行业开发的两个知名模型是“YIQ”和“YUV”。YUV 被 Betamax 标准和 PAL 和 SECAM(欧洲电视)以及一些计算机图形格式使用。NTSC(美国电视)使用YIQ;基本上,YIQ 是 YUV,其缩放因子针对减少的带宽进行了优化。为了完整起见,以下是从伽马校正的 R’G’B’ 转换为 YUV 和 YIQ 的矩阵:
顺便说一下,YUV 和 YIQ 的“Y”是颜色的伽马校正“亮度”分量;CIE XYZ 模型的“Y”是线性(= 未校正)亮度。两者是相关的,但它们并不相同。
概括一下,并为解决方案指明方向:
考虑到最后一点,我编写了一个小程序,该程序使用 RGB 立方体的颜色创建一个调色板,该立方体被切割成 64 个小立方体(每个红色、绿色和蓝色分量两个位,给出 2 2 × 2 2 × 2 2 = 64 2^2×2^2×2^2=64 22×22×22=64颜色)。程序显示调色板中的一种颜色,例如颜色 24,测试人员从剩余的 63 个调色板条目中选择最接近的颜色。
下一步是让程序使用上述任何颜色空间自动选择最接近的颜色。
请注意,程序的目标不是找到从一个色板到下一个色板的最小显着差异;我的一个“观察者”可能用来匹配另一种颜色的颜色明显不同。我的目的是让他们选择最接近的条目,以便深入了解人们如何评估颜色“接近度”。
由于我在这个实验中使用的测试组规模较小,下面的结果可能应该被认为是轶事。
虽然蓝色对亮度感觉的贡献很小(约 10%),但人类视觉在蓝色中具有非常好的颜色辨别能力 [ Poynton, 1999 ]。这可以解释为什么具有较大“蓝色”贡献的颜色需要与具有少量蓝色的颜色不同的权重。
提议的算法(由我们的产品EGI、 AniSprite和PaletteMaker使用)是加权欧几里得距离函数的组合,其中权重因子取决于颜色的“红色”分量有多大。第一个计算“红色”的平均水平,然后加权ΔR’和 ΔB’信号作为平均红色水平的函数。颜色 C 1和 C 2之间的距离(其中每个红色、绿色和蓝色通道的范围为 0-255)为:
这个公式的结果非常接近 L * u * v * (使用修改后的亮度曲线),更重要的是,它是一个更稳定的算法:它没有突然给出远离最佳结果的颜色范围. 公式的权重可以进一步优化,但同样,最接近颜色的选择是主观的。
c代码实现
typedef struct {
unsigned char r, g, b;
} RGB;
double ColourDistance(RGB e1, RGB e2)
{
long rmean = ( (long)e1.r + (long)e2.r ) / 2;
long r = (long)e1.r - (long)e2.r;
long g = (long)e1.g - (long)e2.g;
long b = (long)e1.b - (long)e2.b;
return sqrt((((512+rmean)*r*r)>>8) + 4*g*g + (((767-rmean)*b*b)>>8));
}
可能已经注意到,上面的段落提到了 RGB 和 非线性R’G’B *'*颜色空间。线性和非线性 RGB 空间通过伽马校正相关联。伽马校正领域令人困惑,因为同一个术语用于描述几种完全不同(但相关)的现象:
Alman, D.H.; “Industrial color difference evaluation”; Color Research and Application; No. 18 (1993); pp. 137-139
Foley, J.D., A. van Dam, S.K. Feiner, J.F. Hughes; “Computer Graphics, Principles and Practice”; second edition; Addison-Wesley; 1990; pp. 574-600.
An overview of many colour models, with the focus on how they relate to each other and to the CIE XYZ model. On page 589, the book says: “The Y component of YIQ […] is defined to be the same as the CIE Y primary”. As the CIE Y (luminance) is linear, this implies that the Y channel of YIQ (video luma) is linear as well. This is explicitly contradicted by Poynton’s colorspace-faq, item 10.
Granger, E.M.; “Is CIE Lab* Good Enough for Desktop Publishing?”; technical report, Light Source Inc.; 1994.
Granger claims that CIE Lab* has flaws. The Guth ADT colour space is proposed as an alternative.
Nemcsics, A.; “Color Dynamics”; Publisher Akadmiai Kiad, Budapest; 1993.
Poynton, Charles A.; “Gamma and its Disguises”; Journal of the Society of Motion Picture and Television Engineers; Vol. 102, No. 12 (December 1993); pp. 1099-1108.
Poynton, Charles A.; “Frequently Asked Questions About Colour” (“colorspace-faq”); 1999.
Maintained and available on the Internet in text (ASCII), Postscript and Adobe Acrobat formats.