Um módulo avançado que traz ferramentas de gradação de cor da cinematografia à pipeline fotográfica relativa à cena.

This module is not suitable for beginners with no prior knowledge of color theory, who might want to stick to the global chroma and global vibrance settings until they have a good understanding of the dimensions of color.

Introduction

A gradação de cor é uma parte importante da edição de imagens. Ela pode ajudar a eliminar os matizes de cor não desejados e também pode oferecer um toque de cor criativo que agregará atmosfera a suas imagens. Nos tempo da fotografia em película, a maior parte do ambiente de cor era obtida com a emulsão da película e os produtos químicos de revelação, com parte da matização de cor sendo realizada sob a ampliadora com cabeças coloridas. Isto consumia recursos custosos e era reservado principalmente para a indústria do cinema, onde o trabalho era realizado por um colorista.

In the digital age, where raw images look flat and even, color-grading assumes the same role that film emulsions did, by re-introducing color shifts for aesthetic purposes. It can also serve to harmonize the color palette of a series of images (which may have been shot under different conditions) to achieve a consistent global look. For this task, the vectorscope is also extremely useful.

Os coloristas usualmente dividem a gradação de cor em dois passo distintos:

  1. Primary color-grading aims to fix unwanted color casts and create a neutral starting point,
  2. Secondary color-grading gives the image its final look and atmosphere.

Primary color-grading is best left to the color calibration module, which operates in a physical framework better suited to illuminant correction. color balance, on the other hand, is mostly concerned with secondary color-grading. Performing a truly neutral primary color-grading should make the secondary color-grading easy to transfer between images (via styles, presets or copy & paste) with a similar effect.

General principles

The color balance module is an improvement over the American Society of Cinematographers Color Decision List  (ASC CDL), and uses alpha masks to allow the effect to be properly split between shadows and highlights. The classic CDL acts on the entire luminance range, and each of its parameters is given more weight on some parts of the image only as a side-effect of the mathematics.

This module works, for the most part (4 ways, chroma, vibrance, contrast), in a linear RGB color space designed specifically for color-grading. This color space exhibits a uniform spacing of perceptual hues while retaining a physically-scaled luminance1. The perceptual part of the module (saturation and brilliance) works in the JzAzBz2 color space, which provides a perceptual scaling of both lightness and chromaticity suitable for HDR images. Both color spaces ensure that saturation and chroma changes take place at constant hue, which is not the case for most other saturation operators in Ansel (notably in the older color balance module).

The color balance module expects a scene-referred linear input and produces a scene-referred RGB output, which may or may not be linear, depending on the module settings (contrast and power will delinearize the output).

At its output, color balance checks that the graded colors fit inside the pipeline RGB color space (Rec 2020 by default) and applies a soft saturation clipping at constant hue, aiming to retarget out-of-gamut color to the nearest in-gamut color by scaling both chroma and lightness. This prevents the chroma and saturation settings from pushing colors outside of the valid range and allows more drastic adjustments to be safely used.

Note that this module abides by the CIE definitions of chroma and saturation, as explained in the dimensions of color section.

Module controls

Master tab

hue shift
Rotate all colors in the image by an angle over the chromaticity plane, at constant luminance and chroma. You can use this control to remove spilled colored light on a subject or to quickly change the color of some object. This setting is usually best applied locally, using masks.
vivacidade global
Isto afeta a dimensão de croma de cor em toda a imagem, dando prioridade para as cores com baixo croma. Isto permite aumentar o croma de cores neutras sem exagerar os pixels já coloridos.
contraste
Esta configuração é aplicada no canal de luminância com matiz e croma constantes. O ajuste do pivô (fulcrum) (na aba máscaras, em pivô (fulcrum) de contraste de cinza) permite estabelecer um ponto neutro da curva de contraste:
  • no pivô, a curva de contraste não modifica a luminância,
  • abaixo do pivô, a curva de contraste diminui a luminância para valores de contraste positivos ou aumenta para valores negativos,
  • acima do pivô, a curva de contraste aumenta a luminância para valores de contraste positivos ou diminui para valores negativos.

O pivô tem um valor de 18,45% por padrão, que é consistente com o fluxo de trabalho atual relativo à cena e deve adaptar-se à maioria dos casos de uso (assumindo que o brilho global tenha sido corrigido como recomendado usando o módulo exposição).

The contrast algorithm gives natural results that mimic the central part of the contrast curve of analog film. However, it will also increase the image’s dynamic range, which may void filmic settings in the pipe. For global contrast adjustments, you should normally use the tone equalizer module – the color balance contrast slider is best used with masks, e.g. for selective corrections over the foreground or background.

Linear chroma grading

A gradação linear de croma afeta a dimensão de croma proporcionalmente a sua entrada, com matiz e luminância constantes. Faz isto globalmente, com um coeficiente plano (usando o croma global), bem como em cada uma das máscaras de sombras, meios-tons e realces (definidas na aba máscaras abaixo de faixas de luminância).

Perceptual saturation grading

A gradação de saturação perceptual afeta tanto a luminância como as dimensões de croma em um espaço perceptual, proporcionalmente ao seu valor de entrada, com um matiz constante. Isto é feito globalmente, com um coeficiente plano (usando a _saturação global), bem como em cada uma das máscaras de sombras, meios-tons e realces (definidas na aba máscaras abaixo de faixas de luminância).

Perceptual brilliance grading

A gradação de brilhância perceptual afeta tanto a luminância com as dimensões de croma, em um espaço perceptual, proporcionalmente a seu valor de entrada, com matiz constante e em direção ortogonal à saturação. Seu efeito é próximo a alterar a exposição, mas escalonado perceptualmente. Isto é feito globalmente, com um coeficiente plano (usando a brilhância global), bem como em cada uma das máscaras de sombras, meios-tons e realces (definidas na aba máscaras abaixo de faixas de luminância).

aba 4 vias

Cada uma das configurações da aba 4 vias é composta pelos mesmos três componentes, que definem uma cor usando coordenadas independentes:

  1. luminance,
  2. hue,
  3. chroma.

A entrada de cor como está define uma mudança de cor aplicada à imagem globalmente ou sobre o intervalo de luminância especificado.

Cada controle deslizante de matiz tem um seletor de cor, que pode ser usado para calcular a cor do oposta da região selecionada. Isto é útil para reverter as tonalidades de cor não desejadas (por exemplo, avermelhamento da pele), já que alterar a cor para sua tonalidade oposta a neutraliza.

Global offset

Isto é equivalente ao deslocamento da ASC CDL e se reduz a adicionar um valor RGB constante a todos os pixels, muito parecido com a correção do nível de preto no módulo exposição. Este controle não usa mascaramento.

Shadows lift

Isto é conceitualmente equivalente à elevação de elevação/gama/ganho, ainda que implementado de maneira diferente, e recorre à multiplicação dos pixels mascarados por um valor RGB constante. É aplicado usando a máscara sombras.

Highlights gain

Isto é equivalente à inclinação da ASC CDL, e volta a multiplicar os pixels mascarados por um valor RGB constante. É aplicado usando a máscara realces.

Global power

Isto é equivalente à potência da ASC CDL, e recorre à aplicação de um expoente RGB constante. Não é mascarado e deve ser normalizado, uma vez que a função potência tem um comportamento diferente acima e abaixo de 1, e estamos em um pipeline limitado onde o branco é tipicamente maior que 1. O parâmetro de normalização está disponível na aba máscaras abaixo de pivô (fulcrum) de branco.

Masks tab

Esta aba define os controles auxiliares para as abas anteriores. Os controles de mascaramento tipicamente não requerem nenhuma modificação pelo usuário uma vez que os padrões são calibrados para atender a maioria das necessidade e cumprir as expectativas normais do pipeline relativo à cena. Você somente deveria alterar estas configurações em cenários específicos.

Luminance ranges

O gráfico mostra a opacidade (no eixo y) das 3 máscaras de luminância em relação com a luminância dos pixels (no eixo x). A curva mais escura representa a máscara das sombras, a mais brilhante a máscara dos realces e a terceira curva representa a máscara dos meios-tons.

Somente a s máscaras das sombras e dos realces pode ser controladas diretamente – a máscara dos meios-tons é calculada indiretamente a partir das outras e atua como uma variável de ajuste.

decaimento de sombras
Controla a suavidade ou dureza da transição de completamente opaco (100%) à completamente transparente (0%) para a máscara de sombras.
pivô (fulcrum) de cinza médio de máscara
Define o valor de luminância onde todas as três máscaras possuem 50% de opacidade. Na prática, isto é usado para definir como a imagem é separada em sombras e realces.
decaimento de realces
Controla a suavidade ou dureza da transição de completamente opaco (100%) à completamente transparente (0%) para a máscara de realces.

Para cada uma destas configurações, um botão de máscara, localizado à direita do controle deslizante, mostra a máscara apropriada (sombras, meios-tons, realces), sobreposta como um tabuleiro de xadrez. A área ainda visível da imagem (não oculta pela máscara) é a área que será afetada pelos controles deslizantes de sombras, meios-tons e realces nas outras abas.

Todas as vistas prévias das máscaras mostram a saída do módulo, incluindo as mudanças de cor realizadas, assim você pode também ativá-las enquanto edita para ver somente a parte afetada da imagem.

As máscaras de luminância são calculadas à entrada do módulo, o que significa que significa que são insensíveis às mudanças de luminância realizadas dentro do módulo.

Thresholds

pivô (fulcrum) de branco
Estabelece a luminância de ponto branco em EV. Isto é usado para normalizar a configuração de potência na aba 4 vias. Implementações de funções de potência relativas à cena assumem que o branco está à 100%, o que elimina a necessidade de normalização. Para fins relativos à cena, isto deve ser levado em conta.

O seletor de cor à direita do controle automaticamente define o pivô de branco para a máxima luminância da região selecionada, que deve ser suficiente na maioria dos casos.

pivô (fulcrum) de contraste de cinza
Define o pivô para a configuração de contraste da aba mestre. Isto corresponde ao valor de luminância que não se modificará com o ajuste de contraste. Esta configuração normalmente coincide com o valor linear do cinza médio. Se você seguiu as recomendações do fluxo de trabalho relativo à cena e definiu o brilho global mais cedo no pipeline, usando o módulo exposição, o valor correto deve normalmente ser algo em torno de 18-20%.

O seletor de cor à direita do controle automaticamente define o pivô de contraste de cinza para a luminância média da região selecionada. Isto se baseia na suposição de que a luminância média está normalmente próxima do cinza médio, o que não é verdadeiro se você tiver reflexos especulares ou fontes de luz primária no quadro, ou imagens de chave alta/baixa.

Saturation formula

Note que essa configuração não é realmente apropriada para a aba máscaras (já que não está tecnicamente relacionada às máscaras), mas é colocada aqui porque não deve ser usada regularmente e com o espírito de economizar algum espaço de exibição. Duas opções são fornecidas:

JzAzBz (2021)
Este modo é o algoritmo de saturação original. Ele usa o espaço de cores uniforme JzAzBz (UCS) para calcular a saturação. Este espaço de cores não se destina a mudanças de cores e sua luminosidade não leva em conta o efeito Helmholtz-Kohlrausch , que afirma que as cores coloridas parecerão mais brilhantes do que cores neutras ou quase neutras (cinzas e pastéis) com a mesma luminância. Também sofre de comportamento não suave perto do preto, com cores muito escurecidas.
UCS do Ansel (2022)
O Ansel Uniform Color Space foi projetado desde o início , usando conjuntos de dados de medição psicoperceptiva , com o único propósito de manipulação de cores (saturação) realizada por este módulo. Esse espaço de cores é responsável pelo efeito Helmholtz-Kohlrausch  e possui uma fórmula de mapeamento de gama integrada que é mais precisa e eficiente do que pode ser alcançado com o JzAzBz. Ele exibe um comportamento mais suave que torna as mudanças de saturação mais uniformes em toda a faixa de luminosidade.

Mask preview settings

Esta configuração se aplica às pré-visualizações da máscara, exibidas ao clicar no botão de máscaras na seção faixas de luminância. Estes configurações são salvas globalmente, assim serão aplicadas a todas as imagens subsequentes, a menos que sejam alteradas.

cor 1 e 2 do tabuleiro
Define as duas cores para o tabuleiro usado para camada da máscara. Você pode defini-las com cores opostas da imagem atual para melhorar a legibilidade.
tamanho do tabuleiro
Define a largura das células do tabuleiro de xadrez em pixels (ajustado de acordo com a configuração de DPI da tela).

Perguntas frequentes

Saturation or chroma?

As described in the dimensions of color section, saturation and chroma roam the (lightness, chroma) plane in different directions. In addition, the chroma of color balance uses a scene-referred linear space, while the saturation uses a perceptual space, which rescales color for even spacing.

Na prática, você deve utilizar a configuração de croma se deseja preservar a linearidade da emissão de luz da cena e/ou manter a luminância inalterada. No entanto, estas mudanças podem afetar a alguns matizes mais que a outros, devido ao fato de que o espaço de cor não possui uma escala perceptual completa.

A saturação está mais próxima do efeito de mesclar a pintura branca com alguma cor base. Reduzir a saturação do vermelho o degradará para o rosa, enquanto reduzir seu croma o degradará para um tom de cinza com a mesma luminância. A saturação é talvez a maneira mais intuitiva de interagir com a cor, devido a sua conexão com a pintura.

Escolher um ou outro é principalmente uma questão de decidir onde no gráfico (luminosidade, croma) deseja colocar suas cores e onde elas deverão começar. Para alcançar as cores pastéis, a saturação é o caminho a seguir. Para alcançar cores similares ao laser (quase monocromático), com o risco de parecer sintético, o croma é o caminho a seguir.

What is the connection with lift/gamma/gain?

O algoritmo elevação/gama/ganho se baseia em um espaço de cor relativo à exibição, já que assume um alcance dinâmico simétrico e limitado, com um ponto de branco à 100% e cinza à 50%. Como tal, é simplesmente inutilizável no espaço relativo à cena. No entanto, a única parte da incompatibilidade é a elevação. O gama é exatamente a potência da ASC CDL, e o ganho é exatamente a inclinação da ASC CDL.

The color balance module simply has two slopes instead of one: the gain, applied on the highlights extracted from the whole image by a mask, and the lift, applied similarly but on the shadows.

Changing contrast

While color balance is mostly about color (other modules handle the global contrast in chromaticity-preserving ways) luminance is as much a part of color as hue or chroma, and it needs to be dealt with here too, because the perception of saturation relies on it. If you wish to turn red into pink, for example, reducing its chroma will turn it gray, so you need to increase its luminance as well.

There are several ways to change the contrast in color balance, either locally (with masks) or globally (without):

  • In the master tab, use the contrast setting (possibly alongside the contrast gray fulcrum in the masks tab). Be aware that this will raise the white point and therefore increase the dynamic range of the image, which may void filmic settings later in the pipeline.
  • In perceptual saturation grading, desaturate highlights and resaturate shadows to produce a luminance contrast boost,
  • In perceptual brilliance grading, add brilliance in the highlights and remove brilliance in the shadows to produce to a luminance contrast boost,
  • In the 4 ways tab, set the shadows lift luminance to negative values and the highlights gain luminance to positive values, which also produces a luminance contrast boost.

The difference between these methods is how the effect will be weighted relative to the input of the module. You are advised to do the majority of luminance contrast adjustments in the filmic and tone equalizer modules, and then undertake final changes in color balance while examining the colors.

Internal processing

É a seguinte a ordem interna de operações dentro do módulo:

  1. Transform from pipeline RGB to Kirk/Filmlight Ych space,
  2. Apply hue shift at constant chroma and constant luminance,
  3. Compute luminance masks with Y,
  4. Apply the linear chroma and vibrance settings at constant hue and luminance,
  5. Transform to Kirk/Filmlight RGB space,
  6. Apply the 4 ways settings (except luminance power),
  7. Transform to Kirk/Filmlight Yrg space,
  8. Apply luminance power and contrast on Y,
  9. Transform to JzAzBz space,
  10. Apply the perceptual saturation and perceptual brilliance settings,
  11. Soft-clip the chroma using pipeline RGB gamut at constant hue and lightness,
  12. Transform back to pipeline RGB.

Caveats

Configurar o croma global em -100% não produzirá uma imagem monocromática real, como é comum em outros algoritmos. A razão para isto é que o espaço RGB usado tem um ponto branco D65 definido no espaço CIE LMS 2006, enquanto o Ansel usa um ponto branco definido no espaço CIE XYZ 1931, e não existe uma conversão exata entre estes espaços. O resultado será, portanto, uma imagem em branco e preto ligeiramente tingida. Se sua intenção é obter uma imagem real em branco e preto, use o canal de luminância, o módulo calibração de cor oferece uma predefinição P&B: baseado em luminância que faz exatamente o mesmo mas sem a discrepância do ponto branco.

This module has its gamut-mapping (against pipeline RGB) permanently enabled. This means that if your original image contains some largely out-of-gamut colors to start with, simply enabling color balance with no particular setting will slightly alter its colors. This is probably for the best.

The maximum saturation allowed in the pipeline working RGB space is recorded for each hue when initializing the module, and is later cached in a LUT (look-up table) to save performance. If the working profile is later changed, color balance is not notified, meaning that it will not update its cached hue/saturation LUT. To force a LUT update, you can simply change any setting in the color balance module, then change it back again. It is not recommended that you change the working RGB space half-way through an editing session, as this could result in unexpected chroma and hue changes.

Por razões de desempenho, as conversões não lineares de e para o espaço de trabalho RGB são ignoradas, o que significa que a colorimetria interna estará errada quando são usados espaços de cor não lineares. Note que não há razão para usar espaços de cor não lineares como o RGB, uma vez que tornam a mesclagem de alfa mais trabalhosa sem obter nenhum benefício.


  1. Richard A. Kirk, Chromaticity coordinates for graphic arts based on CIE 2006 LMS with even spacing of Munsell colours, 2019. ↩︎

  2. Safdar et al., Perceptually uniform color space for image signals including high dynamic range and wide gamut, 2017. https://doi.org/10.1364/OE.25.015131  ↩︎