如何计算欧氏距离? (HSL)

时间:2018-03-17 12:21:39

标签: javascript html swift image colors

因为我读了一篇文章HSL color scheme对于人眼配色方案非常准确我非常确定 HSL比较是检查两种颜色是否是最好的方法类似。

从此开始:

我有两种HSL颜色,如......

  • 一种参考颜色:296° 100% 62%(如[296, 100, 62]

  • 另一种颜色:290° 100% 40%(作为[290, 100, 40]

...我想计算一个象征其相似性的百分比。

所以这两种颜色([296, 100, 62][290, 100, 40])看起来非常相似[296, 100, 62]& [196, 30, 32]没有。

如何计算欧几里德距离以获得差异值?

var color1 = [296, 100, 62]
var hue1 = color1[0],      // hue          (values: 0-360)
    sat1 = color1[1],      // saturation   (values: 0-100)
    lig1 = color1[2]       // light        (values: 0-100)

var color2 = [290, 100, 40]
var hue2 = color2[0],      // hue          (values: 0-360)
    sat2 = color2[1],      // saturation   (values: 0-100)
    lig2 = color2[2]       // light        (values: 0-100)


?? How to calculate there difference?

注意:您可以在这里查看euclidean distance

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

气缸中的欧几里德距离......实际上是不可能的。

您应该在维基百科中查看https://en.wikipedia.org/wiki/Color_difference。您将看到欧几里德距离可以用RGB完成(三元组的每个值都可以变为无穷大)。但这种距离并不那么精确。

在上面的页面中,您将看到在1994年和2000年,CIE改进了以类欧几里德方式计算色差的方法,但使用了LCh色彩模型,这与HSL(色度与饱和度)没有太大差别。 2000版有一些修正因素。

在任何情况下,只有当dE小于6时,色差才有效。超过此限制,您无法比较dE。所以可以说颜色与其他颜色相似(或不相似),但如果dE很大,则无法比较非常不同的颜色(与参考颜色相比)。