De acordo com duas fontes que encontrei, no espaço de cores CIELAB LAB, um valor de L * = 0 corresponde ao preto. Citando a Wikipedia :
As três coordenadas do CIELAB representam a claridade da cor (L * = 0 produz preto e L * = 100 indica branco difuso ...)
e citando Phil Cruse :
O eixo L * representa a luminosidade. Isso é vertical; de 0, que não tem leveza (ou seja, preto absoluto) ...
No entanto, este parece não ser o caso. Por exemplo, usando L * = 0, a * = 127, b * = 0 é obtido no Mathematica:
FullForm[ColorConvert[LABColor[0, 1.27, 0], "RGB"]]
(*RGBColor[0.46364605275068677, 0., 0.052627307663056185]*)
... que não é preto.
Isso não parece ser um bug do Mathematica, pois também é reproduzido (para alguns sig figs, pelo menos) na Julia usando o Color.jl
pacote:
convert(RGB, LAB(0,127,0))
# RGB{Float64}(0.46778684693714695,0.0,0.04112312700274846)
Da mesma forma, visualizar o cubo de cores do LAB Colorspace está na Neat Examples
seção da página de documentação do Mathematica LABColor
. Aqui está, com a face L * = 0 da superfície apontando para a câmera:
Com exceção do cubo na esquina, a maioria dos cubos não é preta. Então, minha pergunta é:
- Por que uma configuração L * = 0 não corresponde necessariamente ao preto no espaço de cores do CIELAB? L * não deveria corresponder à luminosidade percebida? Se sim, então por que algumas partes do subespaço L * = 0 parecem consideravelmente mais brilhantes que o preto?
fonte
LAB(0,127,0)
não existe no espaço RGB e, portanto, a conversão resulta em erros numéricos que fazem com que ela pareça não preta?Manipulate[ ArrayPlot@ Table[LABColor[l, a, b], {a, -1, 1, .05}, {b, -1, 1, .05}], {{l, 0}, -1, 2} ]
Respostas:
Qualquer que seja o espaço de cores "RGB" (sRGB?) Que você inseriu como destino no Mathematica, ele possui uma gama limitada de cores descritas pelos valores R, G e B, geralmente semelhantes ao que um monitor pode produzir, a impressora pode imprimir etc e muito menor que o Lab. Como existe apenas um número limitado de valores (256 por canal de cores em 8 bits), os espaços de cores RGB tentam não desperdiçar valores em cores que não podem ser reproduzidas para evitar efeitos colaterais desagradáveis.
A conversão do Lab para RGB termina com cores fora da gama e, em seguida, o programa tenta mapear a cor do Lab para a cor mais próxima que existe no espaço de cores RGB de destino, geralmente aparando os valores <0 ou> 1 a 0 e 1
Se você gosta de brincar com ele, aqui está uma ótima ferramenta na Web, a CIE Color Calculator de Bruce Lindbloom, que pode ser usada para conversões interativas rápidas
fonte
A resposta é bem simples: a cor que você especificou é inválido (ela não existe). Esteja ciente de que em muitos modelos de cores é possível especificar "cores" que não existem.
Especificamente, você especifica L * = 0 (sem luz), mas também especifica um * = 1,27. Como pode haver qualquer componente de cor se não houver luz?
Se você examinar a tabela a seguir (de algum trabalho não publicado meu), verá que, para valores abaixo de L * = 3,14, a saturação máxima é zero (como é para L * = 100).
A tabela mostra a saturação máxima perceptível para cores
h
(vertical) em diferentes intensidadesL
(horizontal). Os máximos são impressos em negrito.A fonte da tabela é: [Int10] International Color Consortium. Especificação ICC.1: 2010 (versão do perfil 4.3.0.0), 12 de 2010. [Online: http://www.color.org/ especificação / ICC1v43_2010-12.pdf; Stand 15. November 2011].
fonte