Nous savons tous ce qu’est le “blanc”. On peut se représenter une feuille de papier. Nous savons qu’elle est blanche parce que nous l’avons appris. Mais si vous placez la feuille de papier sous un soleil d’été, ou sous un ciel nuageux, ou à la maison équipée d’ampoules domestiques chaudes, ce blanc va changer de couleur. Cela pourrait vous déranger pendant les premières secondes, puis vous oublieriez rapidement : votre cerveau va adapter. Mais (s’)adapter (à) quoi ?
Introduction
Terminologie
Commençons par définir certains termes et acronymes qui seront usés et abusés ici. Vous pouvez passer cette section pour l’instant et y revenir plus tard quand vous croiserez ces termes dans le texte.
- CIE
- Commission Internationale de l’Éclairage (Commission internationale de l’éclairage). Autorité internationale pour la normalisation des appareils techniques, méthodes et flux de travail concernant l’éclairage et la reproduction des couleurs.
- ICC
- International Color Consortium . Association professionnelle de vendeurs d’appareils d’imagerie visant à définir les flux de travail de reproduction des couleurs tout au long de la chaîne graphique numérique, afin d’assurer la cohérence des couleurs entre divers médias de sortie (écran, papier, etc.). Les profils de couleur respectant les spécifications ICC sont généralement appelés “profils ICC”, ce qui peut masquer le fait que des profils non-ICC existent également.
- Profil de couleur
- Fichier informatique décrivant la conversion des couleurs entre un espace RGB arbitraire et un espace colorimétrique de référence (généralement, CIE XYZ 1931 pour l’observateur de 2°). Il est souvent mal compris qu’un profil de couleur n’est pas un programme ou une application en soi, mais seulement une “recette de cuisine” à lire et appliquer discrétionnairement par un système de gestion des couleurs (SGC — qui est un programme informatique), qui peut être implémenté dans diverses applications d’imagerie (visualiseurs, éditeurs, explorateurs de fichiers)… ou non.
- EB
- Balance des blancs. Opération générique visant à ajuster les émissions lumineuses de telle sorte que la zone la plus blanche de la scène soit mappée à $RGB = (1, 1, 1)$ dans tout espace RGB standard (sRGB, Adobe RGB, DCI P3, etc.). Cela repose sur la propriété des espaces RGB de décrire des schémas de mélange additif de lumières , et sur l’hypothèse que $RGB = (1, 1, 1)$ encode toujours un point blanc moyen (blanc de papier ou rétroéclairage LED), par conception.
- CAT
- Transformée d’adaptation chromatique. Méthode numérique permettant de convertir les couleurs pour tenir compte d’un changement de point blanc, d’une manière qui préserve la perception des couleurs.
- Les CAT sont utilisées automatiquement avant d’appliquer un profil de couleur, si l’espace colorimétrique destination a un point blanc différent de l’espace cible. Par exemple, le pipeline Ansel (et ICC) utilise le point blanc D50 mais tous les moniteurs de bureau utilisent le point blanc D65, donc le CAT est utilisé pour mapper D50 à D65 avant d’appliquer un profil de couleur de sortie.
- Les CAT peuvent être utilisées manuellement pour effectuer une balance des blancs, de manière plus précise que le redimensionnement de RGB basique, sous certaines conditions. Dans ce cas, ils deviennent un cas spécial de WB.
- Illuminant
- Source lumineuse directe émettant les photons (alias, la lumière) rebondissant sur les surfaces réfléchissantes de la scène. Il est intéressant de noter que les pipelines graphiques supposent toujours un seul illuminant par scène, ce qui n’est pas la réalité à laquelle sont confrontés les photographes. Parfois, la scène a plus d’une source de lumière. Presque toujours, les objets 3D recevront un mélange de lumière des illuminants et des réflexions d’autres surfaces autour. Les surfaces non blanches renvoyant de la lumière sur un objet peuvent être considérées comme des illuminants virtuels qui teinteront généralement les ombres et déclencheront le besoin de balances des blancs sélectives.
Le problème du “blanc”
Les scientifiques de la couleur et les programmeurs de logiciels aiment penser la couleur comme un objet 3D (R/G/B, teinte/saturation/luminosité, etc.), exprimé comme 3 coordonnées intensives et positives. Bien que cela ait quelques mérites en termes d’additivité de la lumière (un écran LED est très certainement un schéma d’éclairage additif RGB, par construction technologique), cela ne tient pas compte de toutes les corrections contextuelles qui se produisent dans la perception humaine : la vision humaine est mieux décrite en termes de contraste, c’est-à-dire par différence entre les objets (ou les surfaces) et leur voisinage.
Par exemple, voyez ce vérificateur de couleur :
Maintenant, voici la reproduction de ce vérificateur de couleur, prise sur film, où quelque chose a mal tourné au moment du développement. Regardez-le pendant un certain temps :
Vous jureriez que la tache rouge est toujours rouge, même si toute l’image est décalée vers le vert, n’est-ce pas ? Pire encore, la tache “blanche” semble blanche. Eh bien, voyons le vecteurscope de cette image :
À part un bruit légèrement bleuté, toute l’image est entièrement contenue dans ~6° de teinte centrée sur le vert. En tout cas, il n’y a pas de pixel rouge ici. Si nous voyons du rouge, c’est seulement parce que notre cerveau ne se soucie pas vraiment du rouge en tant que chromaticité absolue, mais extrait plutôt des taches de couleur, “calcule” leurs différences avec le voisinage, puis essaie de donner un sens à ces différences d’un point de vue cognitif.
C’est ici que nous devons définir le blanc pour un illuminant et pour une surface. Lorsque vous enduisez un objet avec quelques couches de peinture blanche, vous le rendez blanc. Cela signifie que, si vous l’éclairez avec n’importe quel type de lumière, la surface blanche reflétera et renverra le spectre lumineux “tel quel”, sans favoriser une bande spécifique du spectre. Bien sûr, elle absorbera un peu de lumière, seul un miroir parfait refléterait près de 100 % de la lumière entrante, mais cette absorption sera uniformément répartie sur toutes les longueurs d’onde du spectre, donc la lumière reflétée sera exactement la lumière de l’illuminant, seulement moins intense. L’opposé serait une surface colorée : cela atténuerait sélectivement certaines bandes du spectre, par synthèse soustractive des couleurs .
L’illuminant est la source lumineuse primaire projetant des photons sur une scène (flash, ampoule, soleil, nuages, etc.), y compris sur les surfaces blanches. Donc, étant donné qu’une surface blanche reflète tout ce qu’elle reçoit, l’illuminant projette sa propre couleur sur une surface blanche. Par conséquent, c’est aussi blanc que notre scène (et image ultérieure) le sera jamais, ce qui signifie que la couleur de notre surface blanche changera si nous l’éclairons avec la lumière du jour ou avec une ampoule orange.
Ainsi, nous avons tendance à nous attendre à la couleur de la surface la plus lumineuse d’une scène ou d’une image comme étant le “blanc” contextuel (contexte de notre champ de vision), et notre système de perception l’utilise comme référence pour donner un sens à toutes les autres couleurs autour, en les comparant à cette référence de “blanc”.
Maintenant, que se passe-t-il si je rends les taches achromatiques manuellement (et en rapport avec votre affichage actuel) ?
La tache rouge semble maintenant un peu moins saturée et plus orange, car nous la comparons à du blanc réel et non à du vert. Mais le contexte est toujours tellement vert, que même avec du blanc véritable (en rapport avec votre support d’affichage) à l’intérieur et tout autour de l’image, nous percevons toujours cette couleur “moins verte” de la tache rouge comme quelque peu rouge.
De plus, les patchs achromatiques commencent à sembler de plus en plus magenta à mesure qu’ils deviennent plus sombres, encore une fois à cause de l’entourage excessivement vert. Ainsi, il y a plus à dire sur le “blanc” que simplement être la “plus forte émission lumineuse dans le champ visuel” : le contexte immédiat. Tandis que la normalisation des images pour l’émission lumineuse la plus forte (alias illuminant) est prise en charge dans tous les modèles d’apparence de couleur (MAC), par les transformations d’adaptation chromatique (CAT), la prise en compte des écarts locaux (contraste local) est complètement négligée par les mathématiques des couleurs, puisque tous les MAC jusqu’à présent traitent la chromaticité comme 3 coordonnées positives. Cela nécessitera des ajustements manuels pour combler l’écart vers une reproduction des couleurs perceptuellement précise (voir ci-dessous).
Que devons-nous tirer de cela ?
- le blanc est fortement contextualisé à l’illuminant,
- le blanc est cognitivement lié à l’illuminant, via l’émission/réflexion lumineuse la plus forte dans le champ visuel, ce qui peut être trompeur lorsque aucune surface véritablement blanche n’est présente dans le champ,
- mais le blanc est également quelque peu contextualisé à l’environnement visuel, soit dépendant du contraste local des couleurs,
- mais les pipelines d’imagerie numérique prétendent que la couleur ne concerne que les intensités positives, et gèrent les différences de couleur. Autrement dit, l’outil de balance des blancs ne traite pas exactement de ce qui se passe véritablement, mais traite d’une approximation grossière. Les cas complexes devront être gérés manuellement avec soin.
Ni droits ni torts, vraiment ?
Avant d’aller plus loin dans les comment et pourquoi de la balance des blancs, nous devrions aborder l’éléphant dans la pièce :
Mais j’aime mes images légèrement chaudes, pourquoi devrais-je neutraliser la balance des blancs et rendre les blancs achromatiques ? C’est un choix artistique, après tout.
Non, ce n’est pas. Je veux dire, pas de la manière dont vous le pensez. Les choix artistiques sont toujours limités par des contraintes techniques, car l’art consiste à façonner un médium matériel, de sorte que les lois de la physique s’appliquent à chaque étape sur ce médium, que vous le vouliez ou non. Maintenant, ne pas connaître les contraintes techniques en jeu vous donnera un faux sentiment de liberté qui se transformera en frustration profonde lorsque les choses cesseront d’aller dans votre sens, notamment lorsque les images contiennent plus d’un illuminant. Les mauvais flux de travail peuvent fonctionner dans des situations agréables et faciles. Les bons flux de travail vous prévoient des solutions pour gérer les situations difficiles.
Le monde de l’imagerie numérique bénéficierait largement de la perception du processus de création d’image comme un processus de remappage, plutôt que d’essayer de trouver une description absolue d’images qui n’auront jamais d’existence matérielle. Plus spécifiquement, nous pouvons représenter le diagramme de flux de remappage comme suit :
--- title : Fonctionnement réel du montage d'images numériques --- %%{init: {"flowchart": {"htmlLabels": false, "htmlEdgeLabels": false}} }%% flowchart TD; Scène(("`__Scène__ _Illuminant_ : N.C. _Gamme Dynamique_ : N.C _Espace colorimétrique_ : spectral`")) --> Capteur["`__Capteur__ _Point blanc_ : N.C _Gamme Dynamique_ : 8-14 IL _Espace colorimétrique_ : capteur RGB`"] Capteur -- "`WB, profil d'entrée, CAT`" --> Pipeline["`__Pipeline de Montage__ _Point blanc_ : D50 (ICC) _Gamme Dynamique_ : virtuellement infinie _Espace colorimétrique_ : ITU BT.Rec 2020, CIE Lab 1976`"] Pipeline --"`cartographie de tons, cartographie de gamut, profil de sortie`" --> Écran["`__Écran du retoucheur__ alias __Vue de Surveillance__ _Point blanc_ : D65 _Gamme Dynamique_ : 10-12 IL _Espace colorimétrique_ : sRGB, DCI P3, Adobe RGB`"] Pipeline -- "`cartographie de ton, cartographie de gamut, profil de sortie`" --> ÉcranC["`__Écran de l'utilisateur__ _Point blanc_ : D65 _Gamme Dynamique_ : 10-12 IL _Espace colorimétrique_ : sRGB, DCI P3`"] Pipeline -- "`cartographie de ton, cartographie de gamut, profil de sortie`" --> Papier["`__Impression Papier__ _Point blanc_ : D50-D55 _Gamme Dynamique_ : 5-6 IL _Espace colorimétrique_ : N.C.`"] Pipeline --"`cartographie de ton, cartographie de gamut, profil de sortie`" --> T["`T-Shirts Mugs Autocollants ...`"]
Mais, la plupart des gens (à tort) pensent que c’est :
--- title : Comment les gens mal informés pensent que le montage d'images numériques fonctionne --- %%{init: {"flowchart": {"htmlLabels": false}} }%% flowchart TD; Scène(("`__Scène__ _Illuminant_ : N.C. _Gamme Dynamique_ : N.C _Espace colorimétrique_ : spectral`")) --> Capteur["`__Capteur__ _Point blanc_ : N.C _Gamme Dynamique_ : 8-14 IL _Espace colorimétrique_ : capteur RGB`"] Capteur --"`WB, profil d'entrée, CAT`" --> Pipeline["`__Pipeline de Montage__ _Point blanc_ : D50 (ICC) _Gamme Dynamique_ : virtuellement infinie _Espace colorimétrique_ : ITU BT.Rec 2020, CIE Lab 1976`"] Pipeline --"`cartographie de ton, cartographie de gamut, profil de sortie`" --> Écran["`__Écran du retoucheur__ alias __Vérité visible__ _Point blanc_ : D65 _Gamme Dynamique_ : 10-12 IL _Espace colorimétrique_ : sRGB, DCI P3, Adobe RGB`"] Écran -- direct --> ÉcranC["`__Écran de l'utilisateur__ _Point blanc_ : D65 _Gamme Dynamique_ : 10-12 IL _Espace colorimétrique_ : sRGB, DCI P3`"] Écran -- magie --> Papier["`__Impression Papier__ _Point blanc_ : D50-D55 _Gamme Dynamique_ : 5-6 IL _Espace colorimétrique_ : N.C.`"] Écran -- magie --> T["`T-Shirts Mugs Autocollants ...`"]
Et ce dernier diagramme est complètement erroné car l’écran du retoucheur n’est pas un médium plus important qu’un autre : ce n’est pas une référence, pas une norme, il ne porte aucune vérité. Les médias de sortie existent en parallèle, pas en séquence, et la conversion entre le pipeline et les médias de sortie est complètement fluide car chacun a ses propres propriétés optiques.
Dans tous les cas, chaque flèche dans les deux diagrammes de flux représente une étape de remappage, tandis que chaque rectangle non arrondi représente un médium, essayant de reproduire la scène. Un remappage est une conversion générale, qui peut être entièrement ou partiellement automatisée, mais nécessite habituellement qu’un utilisateur conduise les compromis, ce qui visera à adapter le contenu de l’image pour un support d’affichage ou une étape de travail intermédiaire. En particulier, nous devons remapper la gamme dynamique (ou rapport de contraste), le gamut de l’espace colorimétrique et le point blanc, car nous voulons conserver une apparence cohérente à travers des médias ayant des capacités d’affichage et des propriétés très variables.
Pour tout médium d’affichage (papier, écran, diapositives, mug, etc.), la luminance maximale n’est atteinte que pour une couleur très spéciale achromatique : le blanc. Pensez au papier… Le blanc est une propriété intrinsèque du papier (un mélange de fibres de base et d’optique de revêtement de surface), en termes de teinte. En ce qui concerne votre imprimante à jet d’encre, “blanc” signifie “ne pas vaporiser d’encre là-bas”. Dites que vous voulez que votre image ait l’air légèrement plus chaude et vous optez pour un blanc ambré… Vous devrez alors recouvrir toute la surface visible du papier avec au moins un peu d’encres jaune et rouge. En faisant cela, vous assombrissez la luminance maximale, c’est-à-dire que votre “blanc ambré” sera plus sombre que le blanc natif du médium, à cause du schéma de lumière soustractive des colorants et pigments, vous réduirez donc la gamme dynamique déjà limitée que le papier peut offrir (5IL pour les impressions à jet d’encre typiques). Mais comment instruisez-vous votre imprimante de faire cela ? Le RGB d’entrée sera limité à 1 ou 100% (ou 255, si encodé en entiers non signés de 8 bits), et $RGB = ( 1, 1, 1 )$ signifie le blanc du médium par définition de l’espace colorimétrique (c’est-à-dire par conception). Si vous essayez d’atteindre un “blanc ambré” en poussant le blanc à $RGB = ( 1.2, 1.2, 1 )$, le RGB sera coupé à 1 de toute façon, alors vous pourriez obtenir des dégradés d’ambre qui se transforment en blanc du médium à un certain point. Ou, si vous savez ce que vous faites, vous pousserez le blanc à $RGB = ( 1, 1, 0.83 )$, et donc… réduirez sa luminance. C’est ainsi que la gamme dynamique se connecte, d’une manière généralement négligée, au point blanc du médium car la luminance maximale est toujours achromatique vis-à-vis d’un médium.


Après : balance des blancs gardée chaude pour “raisons artistiques” (illuminant : lumière du jour 4341 K).
Le point blanc est gardé le même entre les deux images. Notez comment le dégradé à l’intérieur du disque solaire se brise brutalement en blanc pur à un certain point, près du centre, dans l’interprétation chaude, à cause du découpage RGB. Je proposerai 2 corrections possibles pour cela ci-dessous.
Photo sous licence Creative Commons par Andreas Schneider.


Avant : réduction de la saturation des hautes lumières de 50 %
Après : réduction de la luminance du point blanc de 0.5 IL
Notez que la stratégie de désaturation revient partiellement à neutraliser les blancs pour les rendre achromatiques, mais sans adapter les couleurs dans les ombres et les tons moyens de manière perceptuelle.
Photo sous licence Creative Commons par Andreas Schneider.


Avant : balance des blancs normalisée pour des blancs presque achromatiques (illuminant : lumière du jour 3832 K) avec point blanc assombri.
Après : balance des blancs gardée chaude pour “raisons artistiques” (illuminant : lumière du jour 4341 K) avec point blanc assombri.
L’interprétation chaude a l’illuminant de l’image (disque solaire) qui entre en conflit avec le blanc du médium, ressemblant à une photo ancienne. Les références contradictoires de blancs entre le “papier” et le contenu de l’image la rendent semblable à une image maladroite d’un amateur.
Que devons-nous tirer de cela ?
- vous n’avez aucun contrôle sur le point blanc du médium, qu’il s’agisse d’un rétroéclairage de l’écran ou de la teinte du papier : il est défini techniquement et vous devez vous y adapter.
- lors de l’impression avec des bordures blanches, vous devez faire attention au conflit des points blancs entre le contenu de l’image et les bordures du papier. Ceci s’applique également aux images numériques qui seront affichées sur des fonds blancs sur le web,
- vous n’avez pas beaucoup de latitude pour dé-neutraliser la balance des blancs de votre image pour des raisons artistiques avant que cela ne commence à entrer en conflit visuel avec le blanc du papier,
- vous devrez assombrir le point blanc de l’image, réduisant donc la gamme dynamique imprimable, si vous souhaitez le rendre non neutre (non achromatique). Ne pas le faire créera des artefacts de découpage sur les dégradés lisses,
- la luminance maximale est censée être achromatique pour tous les médias typiques : c’est ce qui lie la gamme dynamique (ou, du moins, sa limite supérieure) à un point blanc de médium (balance des blancs).
Les mathématiques de la balance des blancs
Appliquer une balance des blancs est étonnamment simple lorsque vous regardez les équations : une division par canal, une multiplication par canal. Mais c’est tellement profondément enfoui sous des concepts mal compris et une interface GUI obfusquée (plus sur cela ci-dessous ), que les gens ont été complètement détournés par les distractions techniques. C’est donc un excellent exemple de comment 3 équations peuvent défaire les ravages que les logiciels et les GUIs ont fait dans l’esprit des utilisateurs depuis des décennies, en essayant d’être “intuitifs”.
Disons que vous êtes dans un certain espace RGB, par exemple le capteur RGB de la caméra. Vous devez trouver les coordonnées chromatiques de votre illuminant de scène dans cet espace RGB. Appelons-les $R_w, G_w, B_w$. Convenablement, si vous ne savez rien sur l’illuminant de la scène, simplement obtenir la moyenne arithmétique des valeurs $R, G, B$ de tous les pixels de l’image vous rapprochera assez. 1 En d’autres termes, vous devez connaître la couleur de l’illuminant, et convertir sa chromaticité en coordonnées RGB dans votre espace RGB de travail.
Ensuite, vous devez faire de même pour le point blanc attendu (de référence) de votre espace RGB. Appelons ces coordonnées $R_{wr}, G_{wr}, B_{wr}$.
Enfin, l’équilibrage blanc de l’image est aussi simple que de normaliser chaque pixel RGB avec le RGB de l’illuminant de scène et de le redimensionner avec le RGB de l’illuminant cible (ou point blanc) :
$$ \begin{cases} R_{out} &= R_{in} * \dfrac{R_{wr}}{R_w}\\ G_{out} &= G_{in} * \dfrac{G_{wr}}{G_w}\\ B_{out} &= B_{in} * \dfrac{B_{wr}}{B_w}\\ \end{cases} $$
Voyez, pas besoin de températures kelvin ! Ceux-ci ne servent qu’à vous embrouiller dans l’interface GUI. C’est juste redimensionner le RGB des pixels avec des facteurs soigneusement choisis.
If we apply these operations on sensor RGB, we have input color profiles that expect a D65 illuminant to be encoded with certain RGB values: $R_{wr}G_{wr}B_{rw} = (1, 1, 1)$, by design. The $R_{w}G_{w}B_{r}$ values are then derived from the input color profile. This makes the computation even simpler:
$$ \begin{cases} R_{out} &= \dfrac{R_{in}}{R_w}\\ G_{out} &= \dfrac{G_{in}}{G_w}\\ B_{out} &= \dfrac{B_{in}}{B_w}\\ \end{cases} $$
That’s what we do in Ansel’s old white balance module.
Maintenant, le RGB du capteur de la caméra est très différent du RGB de nos cellules coniques. En pratique, essayer d’équilibrer les blancs en RGB du capteur donne de mauvais résultats, surtout pour les illuminants éloignés de D65, et des espaces “RGB” spéciaux ont été développés pour améliorer la cohérence perceptuelle de l’opération sur toute la plage de couleurs. Les transformations d’adaptation chromatique (CAT16, CAT02, Bradford, etc.) appliquent les mêmes opérations mais dans des espaces spéciaux. Vous pouvez en apprendre plus sur elles , leurs différences et spécificités dépassent le cadre de cet article.
White-balancing through CAT happens in Ansel’s color calibration module.
Balance des blancs dans Ansel
Si nous faisons un schéma de flux de pipeline partiel de l’ordre de montage par défaut d’Ansel, nous obtenons les modules suivants :
flowchart TD; brut(RAW) --> wb[balance des blancs] wb --> mosaïquage mosaïquage --> pe[profil de couleur d'entrée] pe --> cc[calibrage des couleurs] cc --> filmique filmique --> ps[profil de couleur de sortie]
For Fuji XTrans sensors, the Markesteijn demosacing algorithm relies on a luma/chroma separation, which requires at least a rough white balancing step to happen earlier. This is the old white balance module. But we know the result is not accurate, especially for illuminants far away from D65 (especially for low-quality artifical lighting).
La qualité du profil de couleur d’entrée repose également sur le fait d’avoir des RGB déjà normalisés sur D65. Mais nous savons déjà que cela ne peut pas être précis non plus. Certains produits Adobe utilisent désormais des profils DNG à double illuminant, qui disposent d’un profil d’entrée pour l’illuminant D65 et un autre pour l’illuminant A (ampoule incandescente), et le profil final utilisé est calculé comme un mélange des deux selon la température de couleur de l’illuminant de la scène. Ceux-ci corrigent le problème pour les illuminants diurnes, mais ne traitent toujours pas le problème des lumières de scène colorées et d’autres ampoules économes en énergie avec un indice de rendu des couleurs (IRC) terrible.
Another, more accurate, step of white balancing was later added in color calibration, using chromatic adaptation transforms (CAT16, Bradford). It can be configured automatically by extracting a profile from a color checker chart. Empirical studies have shown that the lowest color deviation, after profiling from a color checker, was achieved with color calibration after a preliminary step of white balance, in the old module, so we have retained both:
- le module balance des blancs normalisera le RGB du capteur de sorte que le blanc D65 qui aurait été capturé sur scène apparaîtra à $RGB = (1, 1, 1)$. Si l’illuminant de scène réel est autre, il sera traité par la suite.
- le module profil de couleur d’entrée convertira le RGB du capteur en l’espace colorimétrique CIE XYZ 1931,3. le calibrage des couleurs convertira CIE XYZ 1931 en CAT16 ou Bradford “RGB” et normalisera tout illuminant de scène arbitraire (autrement dit, si ce n’est pas D65) au point blanc du pipeline (D50, selon le flux de travail ICC). 2
- le calibrage des couleurs peut appliquer facultativement une étape de raffinement du profil de couleur d’entrée, en utilisant un mélangeur de canaux (c’est-à-dire un profil de couleur matriciel) dont les paramètres peuvent être directement calculés à partir d’une charte de vérification des couleurs dans le module.
Cette double étape de balance des blancs est quelque peu déroutante pour les utilisateurs, mais s’est avérée donner les couleurs les plus précises. Le calibrage des couleurs a un mode de diagnostic permettant de calculer la déviation de couleur après profilage, sous forme de delta E , à partir d’une charte de vérification des couleurs, vous pouvez vérifier vous-même.
GUI : Obfuscation du blanc avec la température
Dans n’importe quel logiciel, vous verrez un réglage de balance des blancs utilisant un curseur de température (en fait, température de couleur corrélée ), puis une teinte. Mais vous avez vu dans l’équation réelle que la balance des blancs ne traite en interne rien d’autre que les coordonnées RGB de l’illuminant, bien qu’elles soient projetées dans l’espace RGB spécial dans lequel nous effectuons le redimensionnement. Alors, pourquoi s’embêter avec cette température en kelvin (K) déroutante ? Eh bien, il n’y a plus de raison maintenant, sauf héritage.
Les physiciens ont un radiateur spécial, appelé un corps noir . C’est un objet idéalisé qui, une fois chauffé à une certaine température, émettra un spectre lumineux connu. Plus intéressant encore, la forme du spectre lumineux peut être entièrement prédite par la température du corps noir. Vous souvenez-vous comment RGB est une réduction 3D d’un spectre lumineux ? Ici, c’est une réduction 1D, encore meilleure ! Ce qui signifie qu’un seul nombre suffit pour décrire sans ambiguïté un spectre complet.

La propriété intéressante ici est que, jusqu’aux années 1990, les ampoules (domestiques) étaient toutes à filament de tungstène incandescent, qui est un corps noir à 2855 K, standardisé comme Illuminant A par le CIE. Ensuite, la lumière du jour tombe très près des spectres des corps noirs entre 3000 K (coucher du soleil) et 8000 K (jour nuageux). Nous pouvions donc réduire la couleur de l’illuminant à une seule valeur de température, ce qui simplifie l’interface GUI, bien que bonne chance pour expliquer au profane pourquoi la couleur est subitement réduite à une température… Très peu de photographes comprennent ce qui se passe là-dedans, tant pis pour une interface GUI “intuitive”…

Des problèmes sont survenus, d’abord avec des lumières teintées (lumières de scène et gels), ensuite avec des ampoules haute puissance bon marché (vapeur de sodium, halogènes), puis avec des ampoules plus récentes (fluorescentes, LED), dont le spectre lumineux présente des pics et des vallées, loin de la douceur attendue d’un spectre de corps noir. Ceux-ci ne peuvent pas être décrits avec précision par une seule valeur de température.

Pour tenir compte des écarts par rapport au spectre de corps noir pur, un autre réglage de “teinte” a été ajouté, rendant la description de notre illuminant 2D au lieu de 1D. Tandis que la température parcourt la trajectoire planckienne de manière courbée, la teinte permet de s’en éloigner orthogonalement.

Cela pourrait être bien, mais ça ne l’est vraiment pas. En effet, une fois que nous avons les coordonnées RGB de l’illuminant (par exemple, comme la caméra le détecte en interne), trouver la température de couleur corrélée (CCT) est fait par diverses approximations (chaque logiciel peut utiliser la sienne). Inversement, en connaissant la température de couleur corrélée, nous pouvons obtenir les coordonnées RGB de l’illuminant grâce à d’autres approximations . Cela signifie que le trajet aller-retour RGB → température → RGB (ou, de manière similaire, température → RGB → température) ne donnera pas la valeur d’origine. Ainsi, dans le cas où l’illuminant de la scène n’est autre qu’un spectre de corps noir pur, nous empilons une approximation grossière de l’illuminant arbitraire par une température sans signification (et erronée) sur l’approximation des coordonnées RGB à partir de la température, tout cela juste comme une étape intermédiaire conçue pour montrer un curseur 1D dans l’interface graphique (sur 2D si nous incluons la teinte pour les cas difficiles), alors que tout le code de pixel se soucie uniquement des coordonnées RGB de l’illuminant de toute façon, qui peuvent parfaitement être calculées directement en RGB sans passer par la température.
For this reason, Ansel has different illuminant settings in color calibration CAT. If we find that the camera detected something close enough to daylight or blackbody, we automatically offer the temperature setting. Else, we default to “custom”, which provides users with a 2D hue/chroma setting in CIE Luv 1976 that will directly allow to define illuminant color without intermediate computation. From hue/chroma to RGB, the illuminant computation uses no approximation, so the roundtrip RGB → hue/chroma → RGB accurately yields the original values.
Mais le désordre créé par les températures ne s’arrête pas là. Le modèle de corps noir lie les températures aux couleurs de la manière suivante :

Pourtant, tous les curseurs de température de balance des blancs montrent ceci :
Oui, c’est inversé. Pourquoi ? Parce qu’il ne montre pas la couleur de l’illuminant, mais plutôt une tentative de montrer l’effet (un changement de couleur) sur l’image. Mais… L’effet d’un réglage de balance des blancs est de transformer une couleur non-blanche en blanc (en ce qui concerne le point blanc de notre espace de travail actuel). Donc, l’effet devrait être blanc tout du long… Ce que ce curseur coloré montre vraiment est à quoi ressemblerait un blanc D65 capturé sur la scène après avoir appliqué notre balance des blancs. Mais pourquoi devrions-nous nous soucier de l’apparence d’un blanc D65 virtuel de la scène qui n’existe même pas, si notre illuminant de scène n’est pas D65 (sinon nous n’aurions pas besoin de balance des blancs du tout) ? Cela n’a pas de sens.
Dans le module calibration des couleurs, les températures sont affichées selon la couleur qu’elles représentent, ce qui correspond au patch de couleur de l’illuminant qui peut être trouvé en échantillonnant des surfaces achromatiques sur l’image, en utilisant le sélecteur de couleur :


En honorant notre façon de penser la remapping, cela montre clairement quelle couleur d’origine de l’image sera remappée au blanc D50 grâce à la transformation, au lieu d’essayer de représenter un déplacement de couleur avec une couleur absolue. Le problème est que de nombreux utilisateurs pensent maintenant que quelque chose est cassé dans cette approche, étant imprégnés de celle insensée.
Réalité : les images ont plus d’un illuminant
Il est un peu tard pour aborder un autre éléphant dans la pièce : l’hypothèse fondamentale de toute adaptation chromatique, notre pipeline de couleur s’attend à un seul et unique illuminant. Cela a du sens, lorsque vous imprimez sur du papier ou affichez sur écran : le blanc est défini par la teinte du papier ou par le rétroéclairage LED. Mais, sur la scène, à moins de photographier en studio avec seulement des murs, des sols et des plafonds noirs/blancs, vous avez plusieurs “illuminants”.
Expliquons cela avec un exemple. L’image ci-dessous a été prise à la mi-octobre, alors que les feuilles des arbres viraient à l’orange. Nous avons un surplomb de feuillage, des arbres à gauche et à droite, et de l’herbe au sol:
- L’herbe verte au sol a agi comme un réflecteur vert, renvoyant principalement de la lumière sous le menton : c’est un illuminant virtuel.
- Les feuilles jaunâtres au-dessus ont agi comme un réflecteur jaune, renvoyant principalement de la lumière sur les joues et le décolleté : c’est un autre illuminant virtuel.
- Ensuite, la lumière directe du soleil a percé à travers les feuilles, sur les taches lumineuses de la peau, ce qui est l’illuminant réel (alias la source de tous les photons sur la scène).
- Pendant ce temps, tout l’arrière-plan vert était probablement source de confusion pour la détection automatique de la balance des blancs de l’appareil photo, et nous ne pouvons échantillonner aucun objet achromatique de référence une fois dans notre éditeur photo.


Après: calibration des couleurs à partir de la charte de couleurs, rééquilibrage des couleurs fait manuellement (détails ci-dessous)
© Aurélien Pierre
Ainsi, c’est dans l’ensemble l’un des scénarios les plus difficiles : chaque caractéristique et surface du visage (3D) reçoit sa lumière principalement d’un illuminant différent (réel ou virtuel), en fonction de l’orientation de la surface dans l’espace, et nous ne pouvons généralement pas compter sur la détection automatique de la balance des blancs car tout le cadre est biaisé par le feuillage, bien qu’ici cela donne un résultat assez correct. De nombreux photographes pensent encore qu’il est impossible de retrouver les tons de la peau dans ce scénario, l’image ci-dessus prouve le contraire, bien qu’elle nécessite un peu de virtuosité.
Le truc ici est avant tout de prendre un cadre de charte de couleurs, pour corriger la déviation verte autant que possible, en utilisant le module calibration des couleurs. La charte de couleurs sera tenue devant le sujet, pointant vers la caméra de manière à obtenir un mélange moyen de tous les illuminants disponibles (et espérons sans éblouissement). Par conséquent, la calibration des couleurs sera utilisée pour “y arriver principalement”, en essayant de tenir compte d’un mélange moyen de toutes les sources lumineuses. La charte de couleurs nous épargnera beaucoup de manipulations manuelles, frustrantes et chronophages.


Avant: Illuminant détecté par l’appareil photo : teinte 53°, chroma 17.1 % (jaune) - delta E : moyenne 3.47, max 7.94
Après: Illuminant calculé à partir de la charte de couleurs : teinte 67.5°, chroma 13.0 % (vert) - delta E : moyenne 2.54, max 5.36
© Aurélien Pierre
Si nous avions des objets artificiels, avec des contours nets, nous pourrions alors multi-instancier la calibration des couleurs et masquer/retirer les zones que nous voulons équilibrer sélectivement en blanc. Mais ici, avec un visage humain, nous avons des surfaces arrondies se fusionnant en douceur les unes avec les autres, et ce n’est pas possible.
Il est utile de rappeler ici que la balance des couleurs des ombres et des hautes lumières sont également de simples multiplications RGB, exactement comme notre balance des blancs. Bien que ce soit mathématiquement la même chose, elles se produisent dans un espace RGB spécial conçu pour l’uniformité perceptuelle des teintes (afin d’améliorer l’étalonnage des couleurs), au lieu de se produire dans un espace CAT, conçu spécifiquement pour l’adaptation du point blanc. Néanmoins, l’élévation des ombres et le gain peuvent être vus comme une adaptation chromatique locale pour les ombres et les hautes lumières, et peuvent être utilisés à cette fin.
Ainsi, la façon de corriger cette image est la suivante:
- les ombres sont censées avoir un ratio plus élevé de lumière de rebond verte, donc tournez le réglage élévation des ombres vers le magenta (compensez toujours en déplaçant vers la couleur opposée),
- les hautes lumières sont censées avoir un ratio plus élevé de lumière jaune (provenant du feuillage d’automne), donc tournez le réglage gain des hautes lumières vers le bleu,
- la teinte finale de la peau peut être ajustée en utilisant la puissance des tons moyens, dans calibration des couleurs, pour adoucir le décalage magenta-rouge qui résultera très probablement des deux étapes suivantes. Cela se produira en réintroduisant du jaune.
- les taches de lumière directe du soleil sur la peau peuvent être paresseusement désaturées pour se fondre, puisqu’elles sont beaucoup plus lumineuses que tout le reste, en utilisant la saturation filmic (onglet look) et/ou la saturation des hautes lumières balance des couleurs (onglet master).
Dans tous les cas, corriger ce type d’image commence sur la scène, en démêlant comment les différents illuminants se jouent sur les surfaces de votre sujet. Ce sera beaucoup plus facile de dérouler une méthode de post-traitement une fois que vous aurez toutes les notes mentales de ce qui se passait.
Retour aux choix artistiques
Alors, vous voulez votre brume ambrée d’heure dorée ? D’accord, mais tordre la balance des blancs n’est probablement pas la bonne façon de faire, car cela affecte toutes les couleurs sur toute la plage dynamique.
Il existe un moyen plus simple, meilleur et plus adapté, en utilisant une balance des blancs neutre, puis en teintant l’image en utilisant la puissance de balance des couleurs:


Après: balance des blancs normalisée pour des blancs presque-achromatiques (illuminant : lumière du jour 3832 K), puis coloration ambrée-rouge à l’aide de la puissance de balance des couleurs.
Cela nous permet d’obtenir un changement de couleur plus profond et plus de cette brume ambrée dans les tons moyens, sans altérer le pic d’émission ni le bleu de l’eau. L’apparence est dans l’ensemble plus naturelle.
Translated from English by : Aurélien Pierre, ChatGPT. In case of conflict, inconsistency or error, the English version shall prevail.
This is called the “grey world assumption”. It is actually how cameras detect white balance, though nowadays they might choose to do so in some well-chosen areas of interest instead of doing it blindly on the whole image. ↩︎
It is worth noting than we can’t directly convert sensor RGB to CAT16 or Bradford without going through CIE XYZ 1931, so we need the input color profiles to be applied first. But we know the input color profile, and therefore the conversion from sensor RGB to CIE XYZ 1931, will be wrong in general because it relies on having whatever scene “white” balanced to $(1, 1, 1)$ already. In an ideal world, we would have one input profile for each scene illuminant, but that’s technically impossible. So this is why the channel mixing in color calibration comes as a nice refinement step. ↩︎
Comment équilibrer les blancs ?