Gama e Linear

Agora, a situação que mencionamos quando falamos de teoria é o que chamaríamos de “linear”. Cada nível de brilho tem o mesmo valor. Nossos olhos não percebem linearmente. Em vez disso, achamos mais fácil distinguir entre tons de cinza mais escuros do que entre tons de cinza mais claros.

Como os humanos são os que usam computadores, fizemos com que os computadores dessem mais espaço para valores mais escuros no sistema de coordenadas da imagem. Chamamos isso de “codificação gama”, pois aplica uma função gama à TRC (função de transferência) de uma imagem. A TRC, neste caso, é a curva de resposta de tom, curva de reprodução de tom ou função de transferência (porque os especialistas em gerenciamento de cor se odeiam), que informa ao seu computador ou impressora quanta cor corresponde a um determinado valor.

../../_images/Pepper_tonecurves.png

Um dos problemas mais comuns que as pessoas enfrentam com o gerenciamento de cor do Krita é a atribuição do espaço de cor correto ao TRC codificado. Acima, a Pimenta central é a da direita, onde o TRC codificado e atribuído são os mesmos. À esquerda, temos uma Pimenta codificada em sRGB, mas com um perfil linear atribuído, e à direita, uma Pimenta codificada com um TRC linear e com um TRC sRGB atribuído. Imagem de Pimenta & Cenoura.

A tabela a seguir mostra como há muito espaço sendo usado por valores mais claros em um espaço linear em comparação ao TRC sRGB padrão de nossos computadores modernos e outros TRCs disponíveis em nossos perfis entregues:

../../_images/trc_gray_gradients.svg

Se observarmos o linear dos TRCs Rec. 709, podemos ver que há um salto considerável entre os tons mais escuros e os mais claros, enquanto se observarmos o Lab L* TRC ou o sRGB TRC, eles parecem mais uniformemente espaçados. Isso se deve à sensibilidade dos nossos olhos a valores mais escuros. Isso também significa que, se não houver profundidade de bits suficiente, uma imagem em um espaço linear parecerá ter faixas feias. É por isso que, quando criamos imagens para visualização em uma tela, sempre usamos algo como os Lab L*, sRGB ou TRCs de Gama 2.2 para codificar a imagem.

No entanto, essa modificação para dar mais espaço aos valores mais escuros leva a uma matemática de cor instável ao misturar as cores.

Podemos ver isso com o seguinte experimento:

../../_images/Krita_2_9_colormanagement_blending_1.png

Esquerda: Círculos coloridos desfocados em um espaço sRGB regular. Direita: Círculos coloridos desfocados em um espaço linear.

Círculos coloridos, meio desfocados. Em um ambiente com correção de gama, isso resulta em uma borda preta estranha. Em um ambiente linear, isso nos dá uma bela gradação.

Isso também vale para o pincel de borrões coloridos do Krita:

../../_images/Krita_2_9_colormanagement_blending_2.png

Isso mesmo, a “turvação” das cores, como é uma reclamação comum de pintores digitais em todo o mundo, é, na verdade, um espaço de cor com correção de gama que está bagunçando suas cores. Se você estava trabalhando em laboratório para evitar isso, experimente um espaço de cor RGB linear.

O que está acontecendo nos bastidores

Imagine que queremos misturar vermelho e verde.

Primeiro, precisaríamos das coordenadas de cor vermelho e verde dentro do modelo de cor do nosso espaço de cor. Então, isso seria…

Cor

Vermelho

Verde

Azul

Vermelho

1,0

0,0

0,0

Verde

0,0

1,0

0,0

Em seguida, calculamos a média dessas coordenadas em três misturas:

Vermelho

Mistura1

Mistura2

Mistura3

Verde

Vermelho

1,0

0,75

0,5

0,25

0,0

Verde

0,0

0,25

0,5

0,75

1,0

Azul

0,0

0,0

0,0

0,0

0,0

Mas para descobrir como essas cores aparecem na tela, primeiro colocamos os valores individuais no TRC do espaço de cor com o qual estamos trabalhando:

../../_images/Basicreading3trcsv2.svg

Em seguida, preenchemos os valores no local correto. Compare-os com os valores da tabela de misturas acima!

../../_images/red_green_mixes_trc.svg

E é por isso que as misturas de cor são mais claras e suaves no espaço linear. O espaço linear é fisicamente mais correto, mas o sRGB é mais eficiente em termos de espaço, e é por isso que muitas imagens têm um TRC sRGB codificado nelas. Caso isso ainda não faça sentido: o sRGB fornece valores muito mais escuros do que o espaço linear para as mesmas coordenadas*.

Portanto, diferentes TRCs produzem diferentes misturas entre cores. No exemplo a seguir, cada conjunto de gradientes é, em ordem, uma mistura usando TRC linear, uma mistura usando TRC sRGB e uma mistura usando TRC Lab L*.

../../_images/3trcsresult.png

Então, você deve estar se perguntando: como faço para marcar essa opção? Ela está em algum lugar nas configurações? A resposta é que temos vários perfis ICC que podem ser usados ​​para esse tipo de trabalho:

  • scRGB (linear)

  • Todos os perfis ‘elle’ terminados em ‘g10’, como sRGB-elle-v2-g10.icc.

De fato, em todos os perfis ‘elle’, o último número indica o gama. 1,0 é linear, maior é corrigido para gama e ‘srgbtrc’ é uma correção de gama especial para o perfil sRGB original.

Se você usar o navegador de espaço de cor, poderá determinar o TRC a partir do “gama estimado” (se for 1,0, é linear) ou do widget TRC no Krita 3.0, que se parece exatamente com os gráficos de curva acima.

Mesmo que você não pinte muito, mas esteja, por exemplo, criando texturas para um videogame ou renderização, usar um espaço linear é muito benéfico e acelerará um pouco o renderizador, pois ele não precisará converter imagens sozinho.

A desvantagem do espaço linear é, obviamente, que o branco parece muito poderoso quando misturado com o preto, porque em um espaço linear, os cinzas claros ganham mais espaço. No fim das contas, embora o espaço linear seja fisicamente correto e uma vantagem para trabalhar com renderizadores fisicamente corretos para videogames e raytracing, o Krita é uma ferramenta e ninguém vai te criticar por preferir a mistura mais escura do sRGB TRC.