darktable page lede image
darktable page lede image

Gerenciamento de cor

3.2.6. Gerenciamento de cor

O darktable aplica um fluxo de trabalho com cores gerenciadas:

  • Especificações de cores de entrada são tomadas de perfis ICC embutidos, supridos pelo usuário, ou - em caso de arquivos RAW - de uma biblioteca de matrizes de cor de câmeras específicas.

  • O darktable automaticamente lê o perfil de cores de seu monitor (se configurado corretamente) para uma renderização precisa na tela. Configurações com múltiplas telas são suportadas desde que um serviço do sistema, como colord esteja funcionando e adequadamente configurado para informar ao darktable sobre o perfil correto de cada monitor.

  • Os arquivos de saída podem ser codificados em um dos perfis do próprio darktable, incluindo sRGB, Adobe, ProPhoto, Rec. 2020, Rec. 709 e outros espaços de cor padrão RGB, ou em algum outro espaço de cores de saída que o usuário dê ao darktable como um perfil ICC.

3.2.6.1. Perfil de exibição

Para que o darktable possa renderizar cores de maneira precisa na tela, ele precisa encontrar o perfil de exibição correto do seu monitor. Em geral, isto requer que seu monitor esteja apropriadamente calibrado, seu perfil de cores determinado e este perfil precisa estar corretamente instalado em seu sistema. O darktable pede ao xatom do servidor X, assim como ao serviço de sistema colord (se disponível) o perfil correto. Se necessário você pode forçar um perfil específico na aba miscelânea do diálogo de preferências (veja Seção 8.10, “Miscelânea”).

Para investigar seu perfil de exibição você pode chamar o binário darktable-cmstest (Linux apenas), que mostra informação útil, como o nome do perfil por monitor e diz se seu sistema está corretamente configurado (veja Seção 1.1.6, “O binário darktable-cmstest).

Em raros casos, você pode precisar selecionar manualmente o perfil de exibição. Isto é possível a partir dos diálogos de prova de cores e da verificação de gama, na vista da sala escura (veja Seção 3.3.11.5, “Prova de cores” e Seção 3.3.11.6, “Checagem de gama”), e do diálogo de perfil de exibição na vista da mesa de luz (veja Seção 2.1, “Visão geral”).

3.2.6.2. Método de renderização

O darktable pode renderizar cores com seus algoritmos internos ou usando a biblioteca externa LittleCMS2. O método interno do darktable é uma ordem de magnitude mais rápido que o externo. O método externo oferece uma opção de intenção de renderização e pode melhorar ligeiramente a precisão em alguns casos.

Um parâmetro de configuração usar sempre LittleCMS 2 ao aplicar perfil de cor de saída na aba processamento nos diálogos de preferência (veja Seção 8.6, “Processamento”) define como as cores serão renderizadas. Note, no entanto, que se o perfil ICC dado é baseado em LUT ou contém uma matriz LUT, o darktable usará o Little CMS 2 para renderizar as cores independentemente do valor daquela configuração.

3.2.6.3. Intenção de renderização

Se a renderização com LittleCMS2 estiver ativada (veja Seção 3.2.6.2, “Método de renderização”) você pode definir como cores fora da gama são tratadas quando acontece a conversão entre espaços de cores. Uma caixa de seleção no painel de exportação (veja Seção 2.3.14, “Exportar selecionadas”), o módulo de perfil de cores para exportação (veja Seção 3.4.1.2, “Perfil de cor de saída”) e a opção de prova de cores (see Seção 3.3.11.5, “Prova de cores”) permitem escolher uma das intenções de renderização:

perceptual Adequado para figuras, porque mantém a posição relativa das cores. É usualmente a melhor opção.
relativo colorimétrico Cores fora de gama são convertidas em cores tendo a mesma luminosidade, mas saturação diferente. Outras cores permanecem inalteradas.
saturação A saturação é mantida, mas a luminosidade é ligeiramente modificada.
colorimétrico Mantém o ponto branco.

3.2.6.4. Espaços de cor do darktable

As imagens de entrada do darktable podem ser arquivos RGB (como JPEG ou TIFF) ou arquivos RAW de câmeras - ambos representam cores por uma combinação de vermelho, verde e azul. A maior parte dos módulos trabalha em um grande espaço RGB perfil de trabalho, com alguns módulos (mais antigos) internamente trabalhando no espaço de cores CIELAB (usualmente chamado de Lab). O resultado final do processamento da imagem é novamente RGB, preparado para o monitor ou para um arquivo de saída.

Este processo implica que a pixelpipe tem dois passos de conversão de cor: perfil de cor de entrada e perfil de cor de saída. Além disso há o passo de interpolação cromática para imagens RAW, em que as cores de cada pixel são reconstruídas por interpolação.

Cada módulo tem uma posição no pipeline que diz em que espaço de cor o módulo vive:

até interpolação cromática   A imagem está em formato RAW, com cores apenas latentes. Cada pixel carrega informação de luminosidade e cor apenas para uma cor base. Note que alguns dos módulos nesta parte podem agir em imagens não-RAW em formato RGB, com informação completa nos três canais de cor.
entre interpolação cromática e perfil de cor de entrada   A imagem está no formato RGB no espaço de cores da câmera ou arquivo de entrada específicos.
entre perfil de cor de entrada e perfil de cor de saída   A imagem está no espaço definido pelo perfil de trabalho escolhido (Rec2020 linear RGB é o default). Como o darktable processa imagens em buffers de ponto flutuante de 4x32 bits, podemos lidar com o espaço de cores Lab sem risco de efeitos de banda ou quebra de tons.
depois de perfil de cor de saída   A imagem está em formato RGB como definido pelo display selecionado ou pelo perfil ICC

3.2.6.5. Cores ilimitadas

Teoricamente, componentes individuais de dados de cor ficam confinados a certos níveis mínimos e máximos. Por exemplo, a intensidade de um canal vermelho, verde ou azul em RGB pode ser algo entre 0% e 100% (ou entre 0.0 e 1.0). Da mesma forma, o canal L em Lab pode ter valor entre 0 (preto puro) ou 100 (branco puro).

Na prática, acontece às vezes dos passos de processamento de imagem dos módulos do darktable levarem a valores que ficam fora dessas faixas. De fato, mesmo as matrizes de cor estabelecidas, que convertem RGB de câmeras para Lab podem às vezes produzir pixels com valor L negativo.

Dizemos que pixels com estes tipos de valor tem cores ilimitadas. É possível limitar (ou seja, confinar) os valores à faixa permitida em cada passo de processamento. No entanto, sabemos que é preferível e menos sujeito a artefatos não limitar as cores ilimitadas entre os passos, mas tratá-las como as outras cores.

No darktable não existe necessidade técnica de limitar cores; por usarmos aritmética de ponto flutuante em todos os passos, valores ilimitados podem ser passados adiante como qualquer outro, até que o módulo de conversão final de cores garanta que todas são transferidas para a cor mais razoável dentro do espaço de cor selecionado. Assim, o darktable evita limitar tanto quando os algoritmos permitem.

3.2.6.6. Possíveis artefatos de cor

Dito isso tudo, há algumas situações pouco frequentes que podem levar a resultados problemáticos, a não ser que o usuário tome certos cuidados. Alguns módulos no espaço de cor Lab, como níveis e monocromático, dependem do fato de que os canais L trazem informação de luminosidade, e os canais a e b representam croma e matiz, puramente. Cores ilimitadas com valores L negativos são especialmente problemáticos para estes módulos e podem levar a artefatos de pixels pretos.

Sabe-se que as fontes muito saturadas de azul na imagem são fortes candidatas a pixels com valores L negativos. Se você estiver envolvido em fotografia de palco, deve dar cuidadosa atenção a luzes desse tipo na imagem.

Para mitigar o problema, o módulo perfil de cor de entrada (veja Seção 3.4.1.11, “Perfil de cor de entrada”)tem uma opção de corte de gama. Ela fica desligada por default, mas pode ser ativada se você observar artefatos. Dependendo das configurações, as cores podem ficar confinadas a uma das gamas RGB oferecidas. Artefatos de ponto preto são prevenidos ao custo de um pouco da dinâmica de cores. Veja, por exemplo, Seção 3.4.1.11, “Perfil de cor de entrada”.