HSL-Leichtigkeit vs. Augenempfindlichkeit

Kann das menschliche Auge in einem monochromatischen Spektrum hellere Farben genauso gut unterscheiden wie dunklere Farben? Ich meine, gibt es wirklich eine lineare Beziehung zwischen der Helligkeitseigenschaft im HSL-Farbmodell und der wahrgenommenen Helligkeit?

Ich bin mir nicht sicher, ob dies wirklich die bestmögliche SE-Site für diese Frage ist. Meine Antwort unten enthält zumindest sehr wenig Biologie. Es gibt keinen "Colorimetry Stack Exchange", aber ich denke, dies wäre ein Thema, z. B. bei Graphic Design . Leider haben sie kein MathJax ... vielleicht passt Physik besser? Oder Psychologie & Neurowissenschaften ?

Antworten (1)

Nein, die L - Achse im HSL-Farbraum entspricht nicht wirklich der vom menschlichen Auge wahrgenommenen Helligkeit , außer im gröbsten Sinne, dass bei gegebenen Werten der H- und S - Komponenten eine Erhöhung von L eine Zunahme der wahrgenommenen Helligkeit bewirkt .

Die L -Komponente des Standard-HSL-Farbraums wird einfach als Durchschnitt der niedrigsten und der höchsten RGB-Komponente der Farbe (in welchem ​​RGB-Farbraum auch immer verwendet wird) berechnet:

L = Mindest ( R , G , B ) + max ( R , G , B ) 2

Allein diese Definition sollte deutlich machen, dass der L- Wert nicht der wahrgenommenen Helligkeit entsprechen kann, da er den mittleren der drei RGB-Kanäle komplett ignoriert. Somit ist die Farbe ( R =0, G =0, B =1), also rein b l u e , hat genau den gleichen L -Wert (0,5) wie die Farbe ( R =0, G =1, B =1), dh c j a n , aber es ist auf den ersten Blick offensichtlich, dass letztere Farbe optisch viel heller ist.

Tatsächlich versucht der HSL-Farbraum nicht einmal , die wahrgenommene Helligkeit der Farben zu erreichen; vielmehr wird die Definition des L -Kanals gewählt, weil sie die praktische Eigenschaft hat, dass sie Schwarz auf L = 0, Weiß auf L = 1 und alle sechs maximal gesättigten reinen RGB-Farben (Rot, Gelb, Grün, Cyan, Blau) abbildet und Magenta) trotz ihrer großen wahrnehmbaren Helligkeitsunterschiede auf L = 0,5.


Eine viel bessere Annäherung an die wahrgenommene Helligkeit einer Farbe ist das Luma Y ', das als gewichteter Durchschnitt der RGB-Kanäle definiert ist. Die genauen Gewichtungen hängen von der Definition und dem verwendeten RGB-Farbraum ab, aber eine gängige Wahl (aus ITU-R Rec. 709 ) ist:

Y ' = 0,2126 R + 0,7152 G + 0,0722 B

Die Gewichtungen werden gewählt, um die unterschiedliche wahrgenommene Helligkeit der verschiedenen RGB-Primärfarben zu berücksichtigen. Auffällig ist, dass allein der Grünanteil über 70 % der Luma ausmacht, fast zehnmal so viel wie der Blauanteil. Noch ein visueller Vergleich von 100 %   b l u e mit 100 %   g r e e n bestätigt eindeutig, dass diese Wahl der Gewichte gerechtfertigt ist: Das reine Grün erscheint viel heller als das Blau und fast so hell wie das Cyan (das ihre Summe ist) darüber.


Die Definition der Luma ignoriert jedoch immer noch die Nichtlinearität sowohl der Standard-RGB-Farbräume (z. B. sRGB ) als auch des menschlichen Auges. Während sich diese beiden Effekte teilweise gegenseitig aufheben, sodass Luma als vernünftige Annäherung an die wahrgenommene Helligkeit verwendet werden kann, müssen sie für wirklich genaue Ergebnisse berücksichtigt werden. Dies umfasst mehrere Schritte:

  1. Wandeln Sie die RGB-Farbe in einen linearen Farbraum um. Für sRGB kann die folgende Formel verwendet werden: R L = f ( R ) , G L = f ( G ) , B L = f ( B ) , wo:

    f ( C ) = { C / 12.92 wenn  0 C 0,04045 ( ( C + 0,055 ) / 1.055 ) 2.4 wenn  0,04045 < C 1
    (Hier, R , G und B sind die sRGB-Komponentenwerte und R L , G L und B L die linearen, beide auf den Bereich von 0,0 bis 1,0 skaliert.) Alternativ ist eine sehr gute Annäherung an die obige Formel durch einfache Gamma-Expansion mit gegeben γ = 2.2 : f ( C ) = C 2.2 .

  2. Berechnen Sie die relative Leuchtdichte als gewichteten Durchschnitt der linearen RGB-Komponentenwerte:

    Y = 0,2126 R L + 0,7152 G L + 0,0722 B L
    (Die Gewichtungen sind genau die gleichen wie für die Luma-Formel oben, weil sie von dort stammen; die Luma-Berechnung wendet sie einfach blind auf die Gamma-komprimierten RGB-Werte an.)

  3. Wandeln Sie den relativen Leuchtdichtewert in eine Annäherung an die wahrgenommene Helligkeit um, indem Sie so etwas wie die CIELAB - Formel verwenden: = 1.16 g ( Y ) 0,16 , wo:

    g ( Y ) = { 1 3 ( 29 6 ) 2 Y + 4 29 wenn  0 Y ( 6 29 ) 3 Y 1 / 3 Andernfalls
    (Anmerkung: Im CIELAB-Standard ist die L Der Wert reicht von 0 bis 100, aber aus Gründen der Konsistenz habe ich mich in der obigen Formel für die Definition entschieden = L / 100 , so dass sein Wertebereich ebenfalls von 0 bis 1 reicht.)