Le gris moyen, c’est quoi ?

Ce qu’on appelle couramment le gris moyen est une teinte perçue comme étant à mi-parcours entre le noir et le blanc.

Dans la 3D, cette valeur de gris est souvent utilisé comme intensité de référence (couleur de fond/du sol), pour faire valider ses tournettes ou ses lightings.

Quelle est sa valeur ?

On parle souvent d’un gris à 18 %. Ce pourcentage n’est pas vraiment un standard, mais plutôt une convention.

Si vous faites de la peinture, vous pouvez fabriquer un gris moyen en prenant des pigments noires, des pigments blancs, et en faisant un mélange 18(noir)/72(blanc).

Pourquoi 18 % exactement ? Il semblerait que les « inventeurs » soient Ansel Adams et Fred Archer, deux photographes américains qui l’ont formalisé dans ce qui est appelé le Zone system.

Je ne vais pas rentrer dans les détails. Ce qui est intéressant dans ce système est que le gris moyen est à 18 %, ce qui est très éloigné d’une valeur qu’on pourrait naïvement définir à 50 %, mais pourquoi ?

Expérimentation

Si votre moniteur est calibré en sRGB (80 cd/m2 d’intensité lumineuse) et que vous êtes dans une pièce moyennement éclairée : Si je vous donne l’image ci-dessus et que je vous demande d’y mettre, à l’œil (sans regarder les valeurs), un rectangle dont l’intensité du gris se situerait à mi-parcours entre le noir et le blanc, il est fort probable que vous obteniez quelque chose comme ça :

Pourtant…

Vous pensez que votre gris ainsi trouvé est à mi-chemin entre le blanc et le noir, mais si vous aviez les moyens de mesurer l’intensité lumineuse de ce gris sortant de votre écran (avec un luxmètre), vous vous rendriez compte qu’il n’est pas à 50 % de l’intensité lumineuse du blanc, mais aux alentour des 20 %.

Une autre façon de le dire, c’est que la perception de l’intensité lumineuse par l’œil humain n’est pas linéaire : Pour une dynamique donnée (un range d’intensité minimum, perçu comme, noir et maximum, perçu comme blanc), l’œil semble être à l’aise avec les informations tournant autour des 18-20 % de cette dynamique. C’est la raison pour laquel le Zone system la prend comme référence.

Avec un peu de chance, vous vous êtes déjà jeté sur votre color picker favori pour déterminer la valeur de gris d’un pixel de votre rectangle. Vous trouvez 118 sur 255, ce qui équivaut à peu près à 50 %. Là, vous vous dites que votre pixel est bien à 50 % et que je vous raconte des bêtises, mais si vous être à l’aise avec l’espace colorimétrique sRGB, vous savez surement déjà pourquoi.

La fonction de transfert électro-optique (pixel vers l’écran) sRGB est approximativement une courbe gamma 2.2 :

Ce qui veut dire que quand on donne une valeur de 0.5 à notre moniteur calibré sRGB, il ne renvoie pas 50 % d’intensité lumineuse, mais à peu près 0.22 (22 %, ce qui est très proche de 18 %) :

>>> 0.5**2.2
0.217637640824031

Et on arrive à la raison qui m’a poussé à écrire ce billet :

La raison pour laquelle on ne se prenait pas la tête avec le gris moyen « avant » (en sRGB), c’est parce que qu’une valeur de pixel à 50 % était traduite en 22 % d’intensité lumineuse, ce qui était perçu comme un gris moyen. Donc nos têtes de graphistes ont fait la relation : Gris moyen = pixels à 50 %, mais ça n’est (approximativement) vrai qu’en sRGB. C’est un accident du fait qu’on utilise principalement des moniteurs sRGB.

Petit parenthèse pour chercher la petite bête : Pour avoir un gris 18 % (et non 22 %), il faut faire mettre un pixel à 45.9 %. Ça ne change pas le propos de mon billet.

Mais alors se pose la question suivante : Quelle valeur de pixel faudrait-il pour avoir une intensité lumineuse à 50 % sur notre moniteur sRGB ?

En inversant la fonction gamma 2.2 :

>>> 0.5**(1/2.2)
0.7297400528407231

Donc pour avoir une intensité lumineuse à 50 %, il faudrait des pixels à 73 %, 186/255. Vous pouvez le vérifier sur la courbe précédente.

Ça nous donne l’image suivante :

Difficile de dire que vous voudriez faire valider vos persos dans un tel gris, pas vrai ?

Vous pouvez picker le gris, vous aurez 186.

Pourquoi on a besoin de savoir ça maintenant ?

Comme vu précédemment, la particularité des moniteurs sRGB faisant qu’on ne se prenait pas vraiment la tête avec ça, mais les choses changent assez vite avec OCIO, ACES et le HDR.

Si vous utilisez OCIO dans un espace sRGB, vous avez peut-être remarqué qu’une valeur de couleur à 0.5 est parfois correctement représenté dans vos logiciels et apparait clair, comme notre seconde image. OCIO définissant un certain nombre de règle pour interpréter les valeurs, il estime qu’une couleur avec des valeurs à 0.5 doit être interprété comme une couleur (et non des données) et la convertira vers l’espace colorimétrique de scène. Vous aurez alors peut-être le réflexe de la diminuer aux alentours des 20 %, ce qui est tout à fait normal.

ACES n’y échappe pas. Sur un moniteur sRGB :

  • Une valeur de 0.31 dans ACES donne l’équivalent du 22 % sur un moniteur sRGB (le « 50 % sRGB »).
  • Une valeur de 0.262 dans ACES donne l’équivalent 18 % sur un moniteur sRGB.

Est-ce que c’est ce qu’il faut utiliser ces valeurs ? La réponse est « ça dépend de votre moniteur de référence ». Si votre moniteur de référence est un moniteur sRGB, alors ces valeurs feront l’affaire. Si c’est un moniteur HDR vous devez vous poser pas mal de questions d’espaces colorimétriques, mais il est possible que 18 % de la valeur maximum soit beaucoup trop claire, tant les moniteurs HDR peuvent monter haut. J’avoue ne pas avoir assez creusé le sujet.

En espérant que ce billet vous aura appris quelques trucs.

:marioCours: