我在 HSI(色相饱和度和强度)中有两个颜色值,我想要一个代表两种颜色之间视觉差异的数字。色调是介于 0 和 360 之间的数字。饱和度为 0 到 1,强度为 0 到 1。
例如,让我们考虑饱和度为 100% 且强度为 100% 时的红色和蓝色。 在这个网站上是一种通过输入以下文本来显示颜色的方法。
红色是:hsv 0、100%、100%
蓝色是:hsv 240、100%、100%
显然这是两种非常不同的颜色,所以我可以尝试计算颜色之间差异的一种简单方法是使用色调分量并计算色调的绝对差异,这将是 120 (360-240),因为 360 也等于0 色调。
问题出现在饱和度或强度非常暗或非常亮的情况下,考虑非常深的红色和蓝色。
深红色是:hsv 0、100%、20%
深蓝色是:hsv 240, 100% 20%
显然,这两种颜色之间的视觉差异小于明亮的红色和蓝色,如果被要求比较差异,人类会这样说。我的意思是,问朋友“哪一对颜色最不同?” 他们可能会说顶部是鲜红色的蓝色。
我正在尝试计算人类会注意到的两种颜色之间的差异。如果一个人看两种颜色 a 和 b,然后看两种颜色 c 和 d,他会注意到哪些颜色最不同。首先,如果颜色很亮(但不是太亮),那么差异是基于色调的。如果颜色太亮(例如白色)或太暗(例如黑色或太灰),则差异较小。
应该有一个函数 diff ,其中 x=diff(a,b) 和 y=diff(c,d) 产生 x 和 y,我可以使用 x 和 y 比较差异以找到最不同的颜色或最少不同的颜色。