Les experts qui expliquent la balance des blancs se placent souvent d'emblée dans le cadre de l'utilisation du réglage "balance des blancs" d'un appareil photographique. C'est en effet un réglage fort utile. L'appareil de photo ne voit que la portion du réel cadrée dans le viseur et n'en "sait" pas plus. Le photographe, quant à lui, sait dans quelles conditions il prend sa photo : en plein soleil, sous les nuages ou sous un éclairage artificiel... Par le réglage, il donne à l'appareil une information à laquelle ce dernier n'a pas un accès direct : la dominante de couleur de l'éclairage ambiant. De cette façon, il lui permet d'effectuer facilement une correction chromatique pour éliminer cette dominante et obtenir un rendu similaire à celui perçu par l'œil. Ainsi, les objets réellement blancs apparaissent bien blancs dans la photo.
Évidemment, ce réglage permet aussi des effets créatifs puisque donner une fausse indication à l'appareil lui fait introduire une dominante de couleur artificielle.
La table suivante montre une suite de 7 photos prises dans un temps très court, dans des conditions de lumière constantes, en changeant à chaque fois le réglage de la balance des blancs de l'appareil, et les compare à une balance des blancs automatique effectuée a posteriori.
Influence du réglage "balance des blancs" à la prise de vue sur le jpg produit par l'appareil (SONY A450) et comparaison avec l'extraction automatique du fichier brut par l'utilitaire dcraw avec ses options par défaut (photo prise début septembre, en fin d'après midi, après un orage, alors que la lumière commence à baisser) | |||
---|---|---|---|
Réglage sur... flash (mais flash éteint), |
... fluorescent, |
... incandescent, |
... nuageux, |
... ombre, |
... lumière du jour, |
... automatique. |
"Dérawtisation" automatique |
Les algorithmes qui tentent de régler automatiquement la balance des blancs (comme dans le cas de la "dérawtisation" automatique ci-dessus ou du réglage de l'appareil sur "automatique") ne bénéficient pas de l'information donnée par le photographe et ne peuvent s'appuyer que sur les données à leur disposition, c'est-à-dire sur l'image, tous les pixels de l'image mais seulement les pixels de l'image...
Dans cette approche, l'algorithme doit traiter le tableau de pixels selon des principes définis en faisant des hypothèses adéquates.
Par exemple, l'hypothèse du témoin blanc consiste à admettre qu'il existe une zone blanche dans la portion de réalité cadrée dans l'image. L'algorithme considère alors que la zone la plus claire de l'image représente cette zone réellement blanche et fournit donc la dominante à corriger.
L'algorithme de balance des blancs automatique du GIMP suppose aussi que la zone la plus sombre de l'image représente un objet réel noir et étire les couleurs pour le rendre noir dans l'image. Un exemple schématique est montré ci-après.
Image originale |
=> |
Image traitée en balance des blancs auto par le GIMP |
Quoique simplifié à l'extrême, cet exemple montre que l'hypothèse du témoin blanc entraîne une correction assez violente qui peut parfois être perçue comme une dénaturation des couleurs de l'image...
Evidemment, il est possible de faire d'autres hypothèses et donc de développer d'autres méthodes de balance des blancs.
Une recherche de l'expression "balance des blancs" sur internet met en évidence de nombreuses pages sur le sujet. Si toutes s'accordent à reconnaître l'importance de l'affaire, peu en donnent une définition claire. De plus, cette notion est allègrement mélangée à celle de "température de couleur", les deux étant même parfois carrément confondues. L'idée fausse qu'il est impossible d'appliquer une balance des blancs à une image au format JPEG se rencontre aussi parfois.
Comme expliqué dans la référence [CHROMINANCE], à chaque température de couleur correspond un point dans le plan des couleurs et l'ensemble de ces points (lieu de Planck) est une courbe. Les points proches de cette courbe peuvent peut-être par approximation être identifiés comme ayant une température de couleur mais ce n'est pas le cas général. C'est donc déjà une première confusion de penser que toute dominante de couleur possède une température de couleur. Qui plus est, le détour par la notion de "température de couleur" n'est pas utile pour comprendre la balance des blancs. Quant à l'application au JPEG, il est vrai qu'une image compressée ayant perdu des informations peut conduire à une balance des blancs moins intéressante que la même image brute mais, techniquement, l'opération est possible. Il n'est donc pas inutile de revoir cette notion un peu plus en détail...
D'abord, que peut bien signifier cette expression "balance des blancs" ? Il est loisible de noter que l'anglais white balance impose le singulier et laisse comprendre "l'équilibre du blanc". En effet, par définition, le blanc est un signal "isoénergétique", c'est-à-dire qui contient autant d'énergie (de puissance, en fait) à toutes les fréquences. Dans un système de primaires rouge (R), vert (V), bleu (B) bien choisi, ce blanc est rendu par la somme des trois composantes avec des valeurs égales et maximales. Alors, en numérique à raison d'un octet par primaire, le blanc correspond à R = 255, V = 255 et B = 255. Il n'y a donc bien qu'un seul blanc.
Avec ceci en tête, il est facile de comprendre que, si une scène est photographiée sous un éclairage artificiel ou filtré imposant une dominante colorée (qui n'a pas nécessairement, répétons le, une température de couleur définie), alors l'image numérique résultante peut très bien ne comporter aucun pixel blanc. Dans ce cas, réaliser l'équilibre du blanc, c'est modifier les composantes R, V et B des pixels de l'image pour que le pixel le plus proche du blanc (ie ayant la plus grande composante de la population de pixels) devienne un blanc "équilibré", c'est-à-dire avec ses trois composantes R, V et B égales.
Cela semble facile, malheureusement, l'opération n'est pas si simple...
En effet, d'abord, lorsque l'on "tire" le pixel le plus proche du blanc jusqu'au blanc, il y a une infinité de façons de modifier les autres pixels.
Par exemple, le GIMP dispose d'une commande de balance des blancs automatique qui étire linéairement chaque canal R, V et B de 0 à 255, en laissant des trous dans l'histogramme pour ne pas trop modifier la luminosité globale de l'image. La table suivante illustre l'effet de cette commande sur une image possédant une dominante de couleur prune.
Image | Distribution des pixels | Rouge | Vert | Bleu | Valeur |
Avant balance |
|||||
Après balance |
Par ailleurs, la rigueur mathématique conduisant à dire qu'il existe un seul blanc est quelque peu rigide. Elle ne tient pas compte de l'extraordinaire faculté du cerveau à compenser les dominantes de couleurs et, en particulier, à considérer comme blanches des sources qui ne le sont pas tout-à-fait. C'est en cela que la version française de l'expression est intéressante car son emploi du pluriel, dans "balance des blancs", rend compte de cette capacité du cerveau à englober des teintes claires sous la notion de blanc. Du coup, ceci peut conduire à des méthodes d'équilibrage "des blancs" relachant la règle du pixel "blanc de blanc", c'est-à-dire préférant à l'hypothèse du témoin blanc des critères plus globaux pour corriger les dominantes colorées.
Avant de continuer, il faut quand même souligner que le retrait d'une dominante de couleur n'est pas forcément une action désirable car, si la dominante vient de la nature de l'objet photographié (comme dans le cas de la prune ci-dessus), enlever la dominante trahit la photo. Tout dépend donc de l'objectif visé...
Dans un article très intéressant (réf. [LAM] au bas de cette page), E. Y. LAM évoque trois approches existantes (les méthodes par corrélation, la méthode reposant sur l'hypothèse "du monde gris", la méthode "Retinex") et en propose une nouvelle.
Les méthodes par corrélation effectuent une analyse de l'image pour essayer de reconnaître la source de lumière qui éclairait la scène. Si cela est possible, alors il est facile de corriger la dominante de couleur correspondant à cette source. Malheureusement, ces méthodes sont lourdes, demandent beaucoup de temps de calcul et sont donc peu utilisables dans la pratique quotidienne.
Dans un monde gris (et de réflectance constante), si une scène est photographiée sous une lumière blanche, alors les moyennes sur l'ensemble des pixels des trois composantes R, V et B sont égales (il est à noter que la réciproque n'est pas vraie : l'égalité des moyennes n'assure pas que la lumière soit blanche). Cependant, si ces moyennes ne sont pas égales, c'est qu'il y a une dominante colorée. La méthode du monde gris cherche donc un moyen simple de corriger la dominante en effectuant une transformation des pixels qui rend égales les trois moyennes. Un moyen de le faire est de multiplier deux des trois composantes par un simple coefficient.
La théorie dite "Retinex" soutient que le blanc perçu correspond aux signaux maximaux reçus par les cônes de la rétine. L'équilibrage des blancs implique alors de rendre égaux les maxima des trois canaux. Là encore, un moyen possible est d'opérer une multiplication par un coefficient. Au passage, LAM souligne un inconvénient de cette méthode : elle peut être perturbée par quelques pixels chauds... Pour contourner cet écueil, il est possible d'appliquer un filtre passe-bas à l'image ou traiter les pixels par grappes.
Partant du constat qu'une transformation linéaire ne permet pas de satisfaire à la fois les conditions du monde gris et Retinex, l'apport de LAM est de proposer une transformation quadratique définie par deux coefficients inconnus qui sont aisément déterminés en imposant les deux conditions du monde gris et Retinex. Les résultats qu'ils montrent sont intéressants. Quelques exemples obtenus par sa méthode sont donnés dans la table suivante.
Image brute d'origine | Image transformée... | ... par... |
---|---|---|
C'est jour de pluie à Paris. L'ambiance ressentie est grise et terne. |
... balance automatique standard du GIMP | |
... balance quadratique avec coefficient d'éclaircissement nul | ||
... balance quadratique avec coefficient d'éclaircissement à 50% | ||
... balance automatique standard du GIMP suivie d'une balance quadratique avec éclaircissement à 50% |
Malheureusement, cette méthode ne s'applique pas à toutes les images et, lorsqu'elle s'applique, les résultats qu'elle produit sont inégaux, quelquefois intéressants et quelquefois insuffisants, voire parfois très décevants pour certaines images.
Le constat précédent a conduit l'auteur de cette page à explorer des approches différentes, plus générales, et offrant une possibilité de réglage simple. Le principe en est expliqué dans le document : balance des blancs non linéaire. En résumé, canal par canal, l'opération combine un étirement de l'histogramme de chaque canal et une transformation non linéaire réglée pour assurer l'égalité des intensités des canaux (hypothèse du monde gris). Il est en outre possible de régler cette valeur moyenne pour influer sur la luminosité globale de l'image produite. Deux variantes de non linéarité ont été utilisées : la première, "cubique", met en œuvre un polynôme du troisième degré, donne des résultats intéressants illustrés ci-dessous, mais rencontre encore quelques limitations ; la seconde emploie une transformation monôme (élévation à la puissance n) qui implique une résolution numérique mais s'avère "universelle" (au moins informatiquement), plus souple et plus performante.
Deux modules additionnels correspondants ont été développés pour le GIMP en python selon ces principes. Ils sont disponibles ici au téléchargement sous licence CeCILL-C : balance-des-blancs-cubique.py et balance-des-blancs-puissance-n.py (versions adaptées à GIMP 2.10 : balance-des-blancs-cubique-GIMP210.py et balance-des-blancs-puissance-n-GIMP210.py).
Ces algorithmes ne donnent des résultats visuellement satisfaisants que pour les images où les 3 canaux R, V et B sont bien présents. Par exemple, l'image suivante, qui ne comporte pratiquement pas de bleu, ne supporte pas bien l'application de la méthode.
Avant | Après |
---|---|
Une image dont un canal est inexistant ne se prête pas bien à la balance des blancs. |
Depuis sa version 1.6, le module "cubique" est optimisé pour réduire le temps de calcul : sur un portable Sony VAIO VGN-SR39XN, déjà un peu ancien (Core 2 Duo T6570 / 2.1 GHz - Centrino - RAM 4 GB), une image 1000x1000 (1 Mpix environ) prend 9 secondes et une image de 4592 x 3056 (14 Mpix) prend 1 minute 49 secondes (voir l'historique des versions dans le module téléchargeable).
Pour les images dont les trois canaux RVB sont significatifs, les résultats sont satisfaisants et réguliers. Quelques exemples en sont donnés par la table suivante.
Avant | Après |
---|---|
Quelques applications de balance-des-blancs-cubique.py (version adaptée à GIMP 2.10 : balance-des-blancs-cubique-GIMP210.py) |
Mettant en œuvre une résolution numérique, le module "puissance n" prend un peu plus de temps. Sur la même machine, une image 1000x1000 prend 13 secondes et une photo de 14 Mpix demande 3 minutes. Sur une machine plus récente (Clevo Bellone i7-16 Go sous Ubuntu-Mate 18.04), ces durées tombent respectivement à 2 et 22 secondes.
Quelques applications sont montrées par la table suivante. Cet algorithme donne des résultats marginalement meilleurs que la méthode précédente, offre une plus grande latitude de réglage de la luminosité et peut traiter certains cas extrêmes rejetés par la méthode cubique (comme le poisson dans la vase, ci-dessous).
Avant | Après |
---|---|
Quelques applications de balance-des-blancs-puissance-n.py (version adaptée à GIMP 2.10 : balance-des-blancs-puissance-n-GIMP210.py) |
L'application de balance-des-blancs-puissance-n.py pouvant s'avérer un peu longue pour de grosses images, un module de mise en œuvre sous le GIMP avec prévisualisation a été développé. Il est présenté et disponible dans la page : "BB**n avec prévisu".
Il apparaît que la retouche de la balance des blancs n'est pas une opération définie de manière unique. Elle cherche à corriger une dominante colorée pour obtenir un rendu plus "réaliste" mais les interprétations de cet objectif sont multiples, les méthodes variées et les résultats divers. Evidemment, personne n'est obligé de préférer la version avec balance des blancs.
Les algorithmes correspondants peuvent être utilisés comme aides à l'amélioration de photos ou comme procédés créatifs, seuls ou en combinaison avec d'autres mais, en définitive, ce sont l'œil et l'intention du photographe qui restent les critères décisifs...
Poisson dans la vase |
Blé vert |
[CHROMINANCE] Lieu de Planck et température de couleur
[LAM] Edmund Y. Lam, “Combining gray world and retinex theory for automatic white balance in digital photography,” in International Symposium on Consumer Electronics, pp. 134–139, June 2005.
© Sellig Zed, 22.VI.2013.