4

色の値をよく知っている 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 式はマンセルに近い:

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

そのような変換を行う方法は?

  1. HSL -> HSLum
  2. HSLum -> HSL
  3. HSLum -> RGB

どんなヒントでも大歓迎です - アルゴリズムの提案。

HSLumを実行するツールを次に示します。

4

2 に答える 2

3

知覚的に均一な色を生成して操作する場合は、複数のプログラミング言語で利用できるAlexei Boronineによって作成されたライブラリであるHSLuvを使用できます。

これはCIELUV 色空間に基づいており、 rgbToHsluvhsluvToRgbhexToHsluvhsluvToHexなどのさまざまな色変換ルーチンを実装しています。

ライブラリは HSL から HSLuv への直接変換をサポートしていませんが、ここで説明されているように HSL を RGB に変換し、後で rgbToHsluv を使用できます。

于 2016-12-22T11:25:17.957 に答える