在Lab,Hcl或任何感知上均匀的颜色系统中改变色调和亮度

时间:2013-02-14 16:36:50

标签: javascript math language-agnostic colors color-picker

如果非常简单,可以更改HSL色彩空间中的色调,饱和度和亮度。 请参阅this javascript implementation for example

生成颜色方案也很容易,如:类似,单色,三元组,四分体等。 请参阅this javascript implementation

问题是HSL颜色系统在感知上并不统一 实际上这是一个真正的问题。

如果你不知道我在说什么,那没关系。 了解它:herehere。 (这两篇文章非常简短但很有价值,你真的应该阅读它们。)

解决方案是使用感知统一的颜色空间,如:CieLab,CieLuv或Hcl。

问题是这些色彩空间也有超出色域的颜色(无法显示的颜色)。

要在javascript中使用不同的颜色空间,请查看chroma.jschromatist

在这个小小的介绍之后,这是我的实际问题:

我想生成感知统一的配色方案(类似,三元组,四元组,互补等)。正如我在Hsl中所提到的那样很简单:例如,为了生成一个三元组方案,我只需用120旋转HUE然后用240旋转,我就有一个三元组方案。

好吧,在CieLab,Hcl或CieLuv中,它并不那么简单。在Hcl(色调,色度,亮度)中,如果我在不改变色度和亮度的情况下旋转120等级的Hue,则生成的颜色可能无法显示(将在RGB空间之外)。

让我们总结一下这个问题:

如何在感知统一的颜色系统中生成颜色方案(如CieLab,Hcl,CieLuv或任何其他感知均匀的颜色空间)?

我想在javascript中实现这个,但基本上我想找到方法,所以问题是语言无关。

我希望我们能够一起找到一个聪明的方法:)

1 个答案:

答案 0 :(得分:2)

最后,我基于HUSL(Human Friendly HSL)色彩空间解决了这个问题。这个色彩空间在感知上并不完美,但它非常接近它。

您可以在此处了解更多信息:

http://boronine.com/husl/