在 Lab、Hcl 或任何感知均匀的颜色系统中改变色调和亮度
Posted
技术标签:
【中文标题】在 Lab、Hcl 或任何感知均匀的颜色系统中改变色调和亮度【英文标题】:Changing hue and lightness in Lab, Hcl or any perceptually uniform color system 【发布时间】:2013-01-30 12:56:27 【问题描述】:在 HSL 颜色空间中更改色调、饱和度和亮度非常容易。 见this javascript implementation for example。
生成配色方案也很容易,例如:类比色、单色、三色、四色等。 见this javascript implementation。
问题在于 HSL 颜色系统在感知上并不统一。 实际上这是一个真正的问题。
如果你不知道我在说什么,没关系。 阅读:here 和 here。 (这两篇文章很短但很有价值,你真的应该阅读它们。
解决方案是使用感知一致的色彩空间,例如:CieLab、CieLuv 或 Hcl。
问题是这些色彩空间也有超出色域的颜色(无法显示的颜色)。
要在 javascript 中使用不同的颜色空间,请查看 chroma.js 或 chromatist。
在这个小小的介绍之后,这里是我的实际问题:
我想生成感知上一致的配色方案(类似的、三色的、四色的、互补色等)。正如我在 Hsl 中提到的,它很简单:例如,要生成一个三元组方案,我只需将 HUE 旋转 120,然后使用 240,我就有一个三元组方案。
嗯,在 CieLab、Hcl 或 CieLuv 中,这并不是那么简单。在 Hcl(色调、色度、亮度)中,如果我将色调旋转 120 级而不改变色度和亮度,则生成的颜色可能无法显示(将在 RGB 空间之外)。
让我们总结一下问题:
如何在感知一致的颜色系统(如 CieLab、Hcl、CieLuv 或任何其他感知一致的颜色空间)中生成配色方案?
我想在javascript中实现这个,但基本上我想找到方法,所以问题与语言无关。
我希望我们能一起找到一个聪明的方法:)
【问题讨论】:
这里不合适。而是问一群色彩科学家。您说它与语言无关的事实意味着它在这里是 OT。 与其称它们为黑洞,我建议使用常见的短语来解决这个问题,即这些颜色超出了给定集合的范围。 最后,你需要更清楚地定义你的目标是什么,在像实验室这样的空间中的配色方案。一旦你这样做了,解决方案通常会很明显。但是如果没有这个定义,这个问题显然是不可能的,帮助你定义这个定义的人肯定是色彩科学家。再说一遍,这里是 OT。 木片,我明白了!冷静下来。您在四个 cmet 中解释说这是题外话,您投了反对票,并投票结束。感谢您表达您的观点,现在让社区来决定我的问题是否会被关闭。是的,这不是一个“严格编程”的问题,但也许程序员可以帮我找到一个“算法”。我明白你的意思,你不需要再写十几个 cmets。做得更好:今天是情人节! 仇恨是怎么回事?这是一个很好的问题,有很好的参考。甚至是解决方案 【参考方案1】:最后我基于 HUSL(Human Friendly HSL)色彩空间解决了这个问题。这个色彩空间在感知上并不完全一致,但非常接近。
您可以在这里了解更多信息:
http://boronine.com/husl/
【讨论】:
以上是关于在 Lab、Hcl 或任何感知均匀的颜色系统中改变色调和亮度的主要内容,如果未能解决你的问题,请参考以下文章