Nach zwei Quellen, die ich gefunden habe, entspricht im CIELAB LAB-Farbraum ein Wert von L * = 0 Schwarz. Wikipedia zitieren :
Die drei Koordinaten von CIELAB repräsentieren die Helligkeit der Farbe (L * = 0 ergibt Schwarz und L * = 100 zeigt diffuses Weiß an ...)
und zitiert Phil Cruse :
Die L * -Achse repräsentiert die Helligkeit. Das ist vertikal; von 0, die keine Helligkeit hat (dh absolutes Schwarz) ...
Dies scheint jedoch nicht der Fall zu sein. Wenn man beispielsweise L * = 0, a * = 127, b * = 0 verwendet, erhält man in Mathematica:
FullForm[ColorConvert[LABColor[0, 1.27, 0], "RGB"]]
(*RGBColor[0.46364605275068677, 0., 0.052627307663056185]*)
... was nicht schwarz ist.
Dies scheint kein Mathematica-Fehler zu sein, da er auch in Julia (zumindest für ein paar Sig Feigen) mit dem Color.jl
Paket reproduziert wird :
convert(RGB, LAB(0,127,0))
# RGB{Float64}(0.46778684693714695,0.0,0.04112312700274846)
Die Visualisierung des Farbwürfels des LAB-Farbraums finden Sie ebenfalls im Neat Examples
Abschnitt der Mathematica-Dokumentationsseite für LABColor
. Hier ist es, wobei die L * = 0-Fläche der Oberfläche zur Kamera zeigt:
Mit Ausnahme des Würfels an der Ecke ist der Großteil der Würfel entschieden nicht schwarz. Meine Frage lautet also:
- Warum entspricht eine Einstellung L * = 0 nicht unbedingt Schwarz im CIELAB-Farbraum? Soll L * nicht der wahrgenommenen Leuchtkraft entsprechen? Wenn ja, warum erscheinen dann einige Teile des Unterraums L * = 0 erheblich heller als schwarz?
quelle
LAB(0,127,0)
im RGB-Raum nicht vorhanden ist und die Konvertierung zu numerischen Fehlern führt, die dazu führen, dass sie nicht schwarz erscheint?Manipulate[ ArrayPlot@ Table[LABColor[l, a, b], {a, -1, 1, .05}, {b, -1, 1, .05}], {{l, 0}, -1, 2} ]
Antworten:
Was auch immer der "RGB" -Farbraum (sRGB?) Ist, den Sie in Mathematica als Ziel eingegeben haben, er hat einen begrenzten Farbbereich, der durch die R-, G- und B-Werte beschrieben wird, normalerweise ähnlich dem, was ein Monitor erzeugen kann und der Drucker drucken kann usw. und viel kleiner als Lab. Da es nur eine begrenzte Anzahl von Werten gibt (256 pro Farbkanal in 8-Bit), versuchen die RGB-Farbräume, keine Werte für Farben zu verschwenden, die nicht reproduziert werden können, um unangenehme Nebenwirkungen zu vermeiden.
Die Konvertierung von Lab zu RGB führt zu Farben außerhalb des Farbumfangs, und das Programm versucht dann, die Lab-Farbe der nächstgelegenen Farbe im RGB-Zielfarbraum zuzuordnen, normalerweise durch Trimmen von Werten <0 oder> 1 auf 0 und 1.
Wenn Sie gerne damit spielen, finden Sie hier ein großartiges Tool im Internet, den CIE Color Calculator von Bruce Lindbloom, das für schnelle interaktive Konvertierungen verwendet werden kann
quelle
Die Antwort ist ganz einfach: Die von Ihnen angegebene Farbe ist ungültig (existiert nicht). Beachten Sie, dass es in vielen Farbmodellen möglich ist, "Farben" anzugeben, die nicht vorhanden sind.
Insbesondere geben Sie L * = 0 (kein Licht) an, aber Sie geben auch a * = 1,27 an. Wie kann es eine Farbkomponente geben, wenn kein Licht vorhanden ist?
Wenn Sie die folgende Tabelle untersuchen (aus einer unveröffentlichten Arbeit von mir), werden Sie feststellen, dass für Werte unter L * = 3,14 die maximale Sättigung Null ist (wie für L * = 100).
Die Tabelle zeigt die maximal wahrnehmbare Sättigung für Farben
h
(vertikal) bei unterschiedlicher IntensitätL
(horizontal). Die Höchstwerte sind fett gedruckt.Quelle der Tabelle ist: [Int10] International Color Consortium. Spezifikation ICC.1: 2010 (Profilversion 4.3.0.0), 12. 2010. [Online: http://www.color.org/ specification / ICC1v43_2010-12.pdf; Stand 15. November 2011].
quelle