Selon deux sources que j'ai trouvées, dans l'espace colorimétrique CIELAB LAB, une valeur de L * = 0 correspond au noir. Citant Wikipédia :
Les trois coordonnées de CIELAB représentent la luminosité de la couleur (L * = 0 donne du noir et L * = 100 indique du blanc diffus ...)
et citant Phil Cruse :
L'axe L * représente la légèreté. C'est vertical; à partir de 0, qui n'a aucune légèreté (c'est-à-dire noir absolu) ...
Cependant, cela ne semble pas être le cas. Par exemple, en utilisant L * = 0, a * = 127, b * = 0, on obtient dans Mathematica:
FullForm[ColorConvert[LABColor[0, 1.27, 0], "RGB"]]
(*RGBColor[0.46364605275068677, 0., 0.052627307663056185]*)
... qui n'est pas noir.
Cela ne semble pas être un bogue Mathematica, car il est également reproduit (pour quelques figues sig, au moins) dans Julia en utilisant le Color.jl
package:
convert(RGB, LAB(0,127,0))
# RGB{Float64}(0.46778684693714695,0.0,0.04112312700274846)
De même, la visualisation du cube de couleur du LAB Colorspace se trouve dans la Neat Examples
section de la page de documentation de Mathematica pour LABColor
. La voici, avec la face L * = 0 de la surface pointée vers la caméra:
À l'exception du cube au coin, la majorité des cubes ne sont décidément pas noirs. Ma question est donc:
- Pourquoi un paramètre L * = 0 ne correspond-il pas nécessairement au noir dans l'espace colorimétrique CIELAB? N'est-il pas censé correspondre à la luminosité perçue? Si oui, alors pourquoi certaines parties du sous-espace L * = 0 apparaissent-elles considérablement plus lumineuses que le noir?
LAB(0,127,0)
n'existe pas dans l'espace RVB, et donc la conversion entraîne des erreurs numériques qui la font apparaître non noire?
Manipulate[ ArrayPlot@ Table[LABColor[l, a, b], {a, -1, 1, .05}, {b, -1, 1, .05}], {{l, 0}, -1, 2} ]