我想将一些颜色值从众所周知的HSL转换为鲜为人知的HSLum,该怎么做?

hsl(0, 1.0, 0.5) - rgb red  is hslum(0, 1.0., 0.54)
hsl(120, 1.0, 0.5 - rgb green is hslum(0, 1.0, 0.80)
hsl(240, 1.0, 0.5) - rgb blue is hslum(0, 1.0, 0.44)

据我所知,亮度(不是亮度)是这样计算的:
Y = 0.2126 * R + 0.7152 * G + 0.0722 * B

我读了一些文章:Luminance (relative)21296247HSL and HSVlumaLightnessMunsell但找不到解决方案?

据我所知,CIELab 1976公式接近Munsell:
1.16*(Y/Ymax)^1.16*(Y/Ymax)^(1.0/3.0)-0.16 where Y/Ymax > 0.01

或更好的插值/
1.16*(Y/Ymax)^(1.0/3.0)-0.16 where Y/Ymax > (6/29)^3
1.16*(841.0/108.0)*(Y/Ymax)+(4.0/29.0)-0.16 where Y/Ymax <= (6/29)^3

如何进行此类转换?
  • HSL-> HSLum
  • HSLum-> HSL
  • HSLum-> RGB

  • 任何提示都会受到欢迎-算法建议。

    这是做HSLum的一些工具。

    最佳答案

    如果您打算生成和使用在感知上统一的颜色,则可以使用HSLuv,它是由Alexei Boronine创建的库,可以使用多种编程语言。

    它基于CIELUV colorspace并实现了各种颜色转换例程,例如 rgbToHsluv hsluvToRgb hexToHsluv hsluvToHex ojit_r。

    该库不支持从HSL到HSLuv的直接转换,但是您可以按照here所述将HSL转换为RGB,然后再使用rgbToHsluv。

    关于graphics - 如何将HSL(色相,饱和度,亮度)转换为HSLum(色相,饱和度,亮度)和HSLum/RGB?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23699781/

    10-08 23:40