【问题标题】:Calculate the apparent difference in color between two HSI color values计算两个 HSI 颜色值之间的颜色表观差异
【发布时间】:2012-12-21 12:55:26
【问题描述】:

我在 HSI(色相饱和度和强度)中有两个颜色值,我想要一个代表两种颜色之间视觉差异的数字。色调是介于 0 和 360 之间的数字。饱和度为 0 到 1,强度为 0 到 1。

让我们考虑例如饱和度为 100% 和强度为 100% 时的红色和蓝色。 At this website is a way to display the color by entering in the following text.

红色是: hsv 0, 100%, 100%

蓝色是: hsv 240, 100%, 100%

显然,这是两种截然不同的颜色,因此我可以尝试计算颜色之间差异的一种简单方法是使用色调分量并计算色调的绝对差异,即 120 (360-240),因为 360 是色调也等于 0。

问题出现在饱和度或强度非常暗或非常亮的情况下,考虑非常深的红色和蓝色。

深红色是: hsv 0, 100%, 20%

深蓝色是: 单纯疱疹病毒 240, 100% 20%

显然,这两种颜色之间的视觉差异小于明亮的红色和蓝色,如果被要求比较差异,人类会这样说。我的意思是,问朋友“哪一对颜色最不同?”他们可能会说顶部是亮红色的蓝色。

我正在尝试计算人类会注意到的两种颜色之间的差异。如果一个人看两种颜色 a 和 b,然后看两种颜色 c 和 d,他会注意到哪些颜色最不同。首先,如果颜色很亮(但不是太亮),那么差异是基于色调的。如果颜色太亮(例如白色)或太暗(例如黑色或太灰),则差异会更小。

应该有一个函数 diff ,其中 x=diff(a,b) 和 y=diff(c,d) 产生 x 和 y,我可以使用 x 和 y 比较差异以找到最不同的颜色或至少不同的颜色。

【问题讨论】:

  • 我怀疑是否有确切的答案。你可以试试RGB色彩空间,好像更容易分辨。
  • 我做了一些谷歌搜索,发现了一个色差算法emanueleferonato.com/2009/09/08/…,还有一篇关于这个色差的维基百科文章en.wikipedia.org/wiki/Color_difference一定有很多方法可以解决这个问题
  • 我有印刷/打样方面的专业背景,计算色差的传统方法是 Delta E。您可以在此处找到一篇维基百科文章:en.wikipedia.org/wiki/Color_difference
  • @Phil In RGB -> HSI,如果只有在 RGB 中有纯白色时才能获得 100% 强度。所以你关于红色和蓝色的例子是错误的。现在,去 CieLAB 查找颜色之间的距离通常被认为是一种更好的方法,但对于您的应用程序,在 HSI 中使用某些度量可能会受到影响。我稍后会附上一个试图证明这一点的答案。

标签: colors rgb hsv hsl


【解决方案1】:

WCAG2.0 和 1.0 指南都参考了不同的色差感知方程:

  1. 对比度(http://www.w3.org/TR/2008/REC-WCAG20-20081211/Overview.html#contrast-ratiodef)

  2. 亮度差和3。色差 (http://www.w3.org/TR/AERT#color-contrast)。

我尝试了 Delta-e 方法(http://colormine.org/delta-e-calculator/),但它是准度量的,因此差异测量可能会根据您传递两种颜色的顺序而改变。如果在您的示例中您希望 diff(a,b) 始终等于 diff(b,a) 那么这不是您想要的(此名称下可能有不同的算法不是准度量的,但我没有调查过过去那个网站)。

我认为色差度量最接近我对色差测量的期望。对于您的示例,它将产生 diff(a,b) > diff(c,d)

您可以使用此网站上的工具自行测试:http://www.dasplankton.de/ContrastA/

【讨论】:

    【解决方案2】:

    一般的答案似乎是 David van Driessche 所说的,使用 Delta E。我在这里找到了一些 Java 代码:https://github.com/kennyliou/GAI

    这是问题的答案,可能不是最佳答案。

    【讨论】:

    • 我认为这实际上并不是一个糟糕的答案,因为您正在尝试计算人类感知,而这也是校对工作流程中发生的事情。当您进行证明时,您正在尝试制作看起来与预期的最终产品相同的东西。并且“相同”是由人类判断并使用此 Delta E 值在理论上测量(或近似)的。
    • 顺便说一句,根据您的操作,注意观看条件。人类在不同的照明条件下(例如日光与荧光灯)看到的颜色非常不同。照明条件可以非常显着地改变人类的颜色感知(从而感知颜色差异)。以至于某些颜色在一种光照条件下可能看起来相同,而在另一种光照条件下可能看起来不同(如果有兴趣,请搜索“同色异谱”)。
    猜你喜欢
    • 2015-01-17
    • 1970-01-01
    • 2011-08-09
    • 2014-03-16
    • 1970-01-01
    • 2013-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多