我想将一些颜色值从众所周知的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),21296247,HSL and HSV,luma,Lightness,Munsell但找不到解决方案?
据我所知,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
如何进行此类转换?
任何提示都会受到欢迎-算法建议。
这是做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/