Un module avancé qui apporte les outils de gradation des couleurs de la cinématographie dans le pipeline graphique relatif à la scène.

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

La gradation de couleurs est une partie importante de l’édition d’images. Elle peut aider à éliminer les dominantes indésirables et peut également apporter une touche de couleur créative qui ajoutera une atmosphère à vos images. À l’époque de la photographie argentique, la majeure partie de l’ambiance des couleurs était due au film et aux produits chimiques de développement, avec un étalonnage basique effectué sous l’agrandisseur avec des têtes couleur. Cela consommait des ressources coûteuses et était principalement réservé à l’industrie du cinéma, où le travail était effectué par un coloriste.

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.

Les coloristes divisent généralement la gradation des couleurs en deux étapes distinctes :

  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.
vibrance globale
Cela affecte la dimension chroma de la couleur sur l’ensemble de l’image, en donnant la priorité aux couleurs à faible chroma. Cela permet d’augmenter la chroma des couleurs neutres sans exagérer les pixels déjà colorés.
contraste
Ce réglage est appliqué sur le canal de luminance à teinte et à chroma constantes. Le paramètre pivot du gris du contraste (dans seuil de l’onglet masques), vous permet de définir le point neutre de la courbe de contraste :
  • au point pivot, la courbe de contraste laisse la luminance inchangée,
  • en dessous du point pivot, la courbe de contraste diminue la luminance pour les valeurs de contraste positives, ou l’augmente pour les valeurs négatives,
  • au dessus du point pivot, la courbe de contraste augmente la luminance pour les valeurs de contraste positives, ou la diminue pour les valeurs négatives.

Le pivot a une valeur de 18,45 % par défaut, ce qui est cohérent avec le flux de travail actuel relatif à la scène et devrait s’adapter à la plupart des cas d’utilisation (en supposant que la luminosité globale ait été corrigée comme recommandé à l’aide du module exposition.

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

Le réglage de chroma linéaire affecte la dimension chroma proportionnellement à sa valeur d’entrée, à teinte et luminance constantes. Il le fait globalement, avec un coefficient constant (en utilisant la chroma globale), et sur chacun des masques ombres, tons moyens et hautes lumières (définis dans l’onglet masques sous étendues de luminance).

Perceptual saturation grading

Le réglage de saturation perceptuelle affecte à la fois la luminance et la chroma, dans un espace perceptuel, proportionnellement à sa valeur d’entrée, à teinte constante. Il le fait globalement avec saturation globale, et sur chacun des masques ombres, tons moyens et hautes lumières (définis dans l’onglet masques sous étendues de luminance).

Perceptual brilliance grading

Le réglage de la brillance perceptuelle affecte à la fois les dimensions de luminance et de chroma, dans un espace perceptuel, proportionnellement à sa valeur d’entrée, à teinte constante, et dans une direction orthogonale à la saturation. Son effet est proche de celui d’une modification de l’exposition, mais à l’échelle perceptuelle. Il le fait globalement avec saturation globale, et sur chacun des masques ombres, tons moyens et reflets (définis dans l’onglet masques sous étendues de luminance).

4 ways tab

Chacun des paramètres de l’onglet 4 voies est composé des trois mêmes composants, qui définissent une couleur à l’aide de coordonnées indépendantes :

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

Une entrée de couleur comme celle-ci définit un virage de couleur appliqué à l’image globalement ou sur la plage de luminance définie.

Chaque curseur de teinte a une pipette de couleur, qui peut être utilisé pour calculer la couleur opposée de la région sélectionnée. Ceci est utile pour réduire les dominantes de couleur indésirables (par exemple, la rougeur de la peau), car le fait de déplacer la couleur vers son opposée la neutralise.

Global offset

Cela équivaut au décalage ASC CDL et revient à ajouter une valeur RVB constante à tous les pixels, tout comme la correction du niveau de noir dans le module exposition. Ce contrôle n’utilise pas de masquage.

Shadows lift

Ceci est conceptuellement équivalent au lift de lift/gamma/gain, bien qu’implémenté différemment, et revient à multiplier les pixels masqués par une valeur RVB constante. Il est appliqué à l’aide du masque ombres.

Highlights gain

Cela équivaut à la pente ASC CDL et revient à multiplier les pixels masqués par une valeur RVB constante. Il est appliqué à l’aide du masque hautes lumières.

Global power

Cela équivaut à la puissance ASC CDL et revient à appliquer un exposant constant en RVB. Il n’est pas masqué et doit être normalisé, car la fonction puissance a un comportement différent au-dessus et en dessous de 1, et nous sommes dans un pipeline illimité où le blanc est généralement supérieur à 1. Le paramètre de normalisation pivot du blanc est disponible dans seuil de l’onglet masques.

Masks tab

Cet onglet définit des contrôles auxiliaires pour les onglets précédents. Les contrôles de masquage ne nécessitent généralement aucune modification de l’utilisateur, car les valeurs par défaut sont calibrées pour répondre à la plupart des besoins et répondent aux attentes normales du pipeline de pixels relatif à la scène. Vous ne devriez avoir besoin de modifier ces paramètres que dans des scénarios spécifiques.

Luminance ranges

Les graphiques montrent l’opacité (sur l’axe y) des 3 masques de luminance par rapport à la luminance du pixel (sur l’axe x). La courbe la plus sombre représente le masque ombres, la plus claire représente le masque hautes lumières et la troisième courbe représente le masque tons moyens.

Seuls les masques ombres et hautes lumières peuvent être contrôlés directement – le masque tons moyens est calculé à partir des deux autres et agit comme une variable d’ajustement.

transition des ombres
Contrôle la douceur ou la dureté de la transition de totalement opaque (100%) à totalement transparent (0%) pour le masque d’ombres.
pivot du gris moyen du masque
Définit la valeur de luminance où les trois masques ont une opacité de 50 %. En pratique, cela est utilisé pour définir comment l’image est séparée en ombres et en hautes lumières.
transition des hautes lumières
Contrôle la douceur ou la dureté de la transition d’entièrement opaque (100%) à entièrement transparent (0%) pour le masque de hautes lumières.

Pour chacun de ces paramètres, un bouton de masque, à droite du curseur, affiche le masque correspondant (ombres, demi-tons, hautes lumières), superposé en damier. La zone encore visible de l’image (non masquée par le masque) est la zone qui sera affectée par les curseurs ombres, tons moyens et hautes lumières des autres onglets.

Tous les aperçus de masque affichent la sortie du module, y compris les modifications de couleur apportées, vous pouvez donc également les activer lors de l’édition, pour ne voir que la partie affectée de l’image.

Les masques de luminance sont calculés à l’entrée du module, ce qui signifie qu’ils sont insensibles aux changements de luminance effectués par le module.

Thresholds

pivot du point blanc
Règle la luminance du point blanc en IL. Ceci est utilisé pour normaliser le paramètre puissance dans l’onglet 4 voies. Les implémentations relatives à la scène des fonctions de puissance supposent que le blanc est à 100 %, ce qui élimine le besoin de normalisation. Dans un contexte relatif à la scène, cela doit être pris en compte.

La pipette de couleur à droite du curseur règle automatiquement le pivot du blanc sur la luminance maximale de la région sélectionnée, ce qui devrait être suffisant dans la plupart des cas.

pivot du gris du contraste
Définit le pivot pour le paramètre contraste dans l’onglet maître. Cela correspond à la valeur de luminance qui sera laissée inchangée par le réglage du contraste. Ce paramètre correspond généralement à la valeur linéaire du gris moyen. Si vous avez suivi les recommandations de flux de travail relatif à la scène et défini la luminosité globale au début du pipeline, à l’aide du module exposition, la valeur correcte doit généralement être d’environ 18 à 20 %.

La pipette de couleur à droite du curseur règle automatiquement le pivot du gris du contraste sur la luminance moyenne de la région sélectionnée. Cela repose sur l’hypothèse que la luminance moyenne est généralement proche du gris moyen, ce qui n’est pas vrai si vous avez des reflets spéculaires ou des sources lumineuses primaires dans le cadre, ou pour des images low/high-key.

Saturation formula

Notez que ce paramètre n’est pas vraiment approprié pour l’onglet masques (puisqu’il n’est pas techniquement lié aux masques) mais il est placé ici pour économiser de l’espace d’affichage et parce qu’il n’est pas destiné à être utilisé régulièrement. Deux options sont proposées :

JzAzBz (2021)
Ce mode est l’algorithme de saturation d’origine. Il utilise l’espace colorimétrique uniforme JzAzBz (UCS) pour calculer la saturation. Cet espace colorimétrique n’est pas destiné aux changements de couleur et sa clarté ne tient pas compte de l’effet Helmholtz-Kohlrausch , qui stipule que les couleurs vives paraîtront plus lumineuses que les couleurs neutres ou presque neutres (gris et pastels) de même luminance. Il souffre également d’un comportement non lisse près du noir, les couleurs étant trop assombries.
UCS Ansel (2022)
L’espace colorimétrique uniforme de Ansel a été conçu dès le départ , en utilisant des ensembles de données de mesures psychoperceptuelles, dans le seul but de la manipulation des couleurs (saturation) effectuée par ce module. Cet espace colorimétrique tient compte de l’effet Helmholtz-Kohlrausch  et possède une formule de mappage du gamut intégrée qui est plus précise et efficace que celle qui peut être réalisée en JzAzBz. Il affiche un comportement plus fluide qui rend les changements de saturation plus uniformes sur toute la plage de clarté.

Mask preview settings

Ces paramètres s’appliquent aux aperçus de masque, affichés en cliquant sur les boutons de masque dans la section étendues de luminance. Ces paramètres sont enregistrés globalement et seront donc appliqués à toutes les images suivantes, à moins qu’ils ne soient modifiés.

couleur 1 et 2 du damier
Définit les deux couleurs de la sous-couche du masque du damier d’arrière-plan. Vous pouvez les définir sur des couleurs opposées de l’image actuelle pour faciliter la lisibilité.
taille du damier
Définit la largeur des cellules du damier en pixels (ajustée en fonction du paramètre DPI de l’écran).

FAQ

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.

En pratique, vous devez utiliser le réglage de chroma si vous souhaitez conserver la linéarité de la scène de l’émission lumineuse et/ou conserver la luminance inchangée. Cependant, ces changements peuvent affecter certaines teintes plus fortement que d’autres, en raison du fait que l’espace colorimétrique n’est pas entièrement mis à l’échelle perceptuellement.

La saturation est plus proche de l’effet du mélange de peinture blanche avec une couleur de base. La réduction de la saturation du rouge le dégradera en rose, tandis que la réduction de sa chroma se dégradera en une nuance de gris à la même luminance. La saturation est peut-être un moyen plus intuitif d’interagir avec la couleur, en raison de son lien avec la peinture.

Choisir l’un ou l’autre est principalement une question de décider où sur le graphique (clarté, chroma) vous voulez pousser vos couleurs, et où elles doivent commencer. Pour atteindre des couleurs pastel, la saturation est la voie à suivre. Pour atteindre des couleurs laser (presque monochromatiques), au risque de paraître synthétiques, la chroma est la voie à suivre.

What is the connection with lift/gamma/gain?

L’algorithme lift/gamma/gain repose sur un espace colorimétrique relatif à l’affichage, car il suppose une plage dynamique limitée et symétrique, avec un point blanc à 100 % et un gris à 50 %. En tant que tel, il est tout simplement inutilisable dans un espace relatif à la scène. Cependant, la seule partie incompatible est le lift. Le gamma est exactement la puissance ASC CDL, et le gain est exactement la pente 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

Voici l’ordre interne des opérations au sein du module :

  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

Le réglage de la chroma globale à -100 % ne produira pas une véritable image monochrome, comme c’est le cas avec d’autres algorithmes. La raison en est que l’espace RVB utilisé a un point blanc D65 défini dans l’espace CIE LMS 2006, tandis que Ansel utilise un point blanc défini dans l’espace CIE XYZ 1931, et il n’y a pas de conversion exacte entre ces espaces. Le résultat sera donc une image en noir et blanc légèrement teintée. Si votre intention est d’obtenir une vraie image en noir et blanc en utilisant le canal de luminance, le module calibration des couleurs propose un préréglage N&B : basé sur la luminance qui fait exactement la même chose mais sans la différence de point blanc.

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.

Pour des raisons de performances, les conversions non linéaires depuis et vers l’espace RVB de travail sont ignorées, ce qui signifie que la colorimétrie interne sera erronée lors de l’utilisation d’espaces colorimétriques non linéaires. Notez qu’il n’y a aucune raison d’utiliser des espaces non linéaires comme espace RVB de travail car ils rendent le mélange alpha plus difficile sans aucun avantage.


  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  ↩︎