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?
la source
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} ]
Réponses:
Quel que soit l'espace colorimétrique "RVB" (sRGB?) Que vous avez entré comme destination dans Mathematica, il a une gamme limitée de couleurs qui sont décrites par les valeurs R, G et B, généralement similaires à ce qu'un moniteur peut produire, l'imprimante peut imprimer etc et bien plus petit que Lab. Puisqu'il n'y a qu'un nombre limité de valeurs (256 par canal de couleur en 8 bits), les espaces colorimétriques RVB essaient de ne pas gaspiller de valeurs sur des couleurs qui ne peuvent pas être reproduites pour éviter des effets secondaires désagréables.
La conversion de Lab en RVB aboutit à des couleurs hors gamme et le programme essaie ensuite de mapper la couleur Lab à la couleur la plus proche qui existe dans l'espace colorimétrique RVB cible, généralement en coupant toutes les valeurs <0 ou> 1 à 0 et 1.
Si vous êtes enclin à jouer avec, voici un excellent outil sur le Web, CIE Color Calculator de Bruce Lindbloom, qui peut être utilisé pour des conversions interactives rapides
la source
La réponse est assez simple: la couleur que vous avez spécifiée n'est pas valide (elle n'existe pas). Sachez qu'il est possible dans de nombreux modèles de couleurs de spécifier des "couleurs" qui n'existent pas.
Plus précisément, vous spécifiez L * = 0 (pas de lumière), mais vous spécifiez également a * = 1,27. Comment peut-il y avoir une composante de couleur s'il n'y a pas de lumière?
Si vous examinez le tableau suivant (de certains de mes travaux non publiés), vous verrez que pour les valeurs inférieures à L * = 3,14, la saturation maximale est nulle (comme pour L * = 100).
Le tableau montre la saturation perceptible maximale pour les couleurs
h
(verticales) à différentes intensitésL
(horizontales). Les maximums sont imprimés en gras.La source du tableau est: [Int10] International Color Consortium. Spécification ICC.1: 2010 (Profile version 4.3.0.0), 12 2010. [En ligne: http://www.color.org/ specification / ICC1v43_2010-12.pdf; Stand 15. novembre 2011].
la source