sRGB

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher

sRGB, ou standard RGB (« Red Green Blue », en français « Rouge vert bleu normal »), est un espace de couleur informatique proposé par Hewlett-Packard et Microsoft en 1996[1], utilisé dans les dispositifs numériques, notamment les écrans d'ordinateurs.

L'espace de couleurs sRGB est défini par la norme CIE 61966-2-1 (1999)[2]. Il relie la recommandation ITU-R BT.709[3] sur l'image vidéo au corps de normes et méthodes colorimétriques définies depuis 1931.

Présentation[modifier | modifier le code]

Les écrans d'ordinateur reproduisent les couleurs par synthèse additive à partir de trois primaires. L'unité centrale envoie à l'écran, pour chaque point (pixel), trois valeurs numériques correspondant à la luminosité de chaque primaire à cet endroit.

Les premiers écrans d'ordinateurs fonctionnaient avec un tube cathodique, dont la caractéristique non linéaire pour l'intensité lumineuse exigeait une correction gamma. Les écrans plats, plus récents, n'ont pas besoin de la même correction ; un circuit électronique leur permet de fonctionner avec le même signal que leurs prédécesseurs. Le terminal reçoit les valeurs données dans l'espace sRGB. Les utilisateurs qui en ont besoin intercalent un logiciel qui les corrige à partir du profil ICC du périphérique.

La norme sRGB établit des valeurs compatibles avec des écrans du commerce, de sorte que les couleurs soient, avec les valeurs par défaut, suffisamment bien représentées, lorsqu'aucune information plus précise n'est disponible[4].

Caractéristiques principales[modifier | modifier le code]

Valeurs

Les valeurs des composantes dans l'espace sRGB sont comprises entre 0 et 1. Lorsque ces valeurs sont codées sur un octet, comme il arrive souvent dans les applications, la valeur sRGB est exprimée en 1/255 ; par exemple le code de couleur #FF8040 se décompose en trois valeurs codées sur un octet entre 0x00 et 0xFF, correspondant, dans l'ordre à une composante rouge codée 0xFF, donnant une valeur de 255/255 = 1, et, similairement, une composante verte codée 0x80 donnant une valeur de 128/255 (≈ 0,5) et une composante bleue codée 0x40 donnant une valeur de 64/255 (≈ 0,25).

Gamut du système sRGB dans le diagramme xy
Chromaticité 

Le point blanc, obtenu avec les trois composantes égales, correspond à l'illuminant D65. Les coordonnées des composantes de base de l'espace de couleurs sRGB dans l'espace CIE xyY sont :

  x y λ pureté d'excitation
Blanc (D65) 0,3127 0,3290 0
Rouge 0,64 0,33 612 nm 92%
Vert 0,30 0,60 547 nm 74%
Bleu 0,15 0,06 464,5 nm 93%
Luminosité

Le calcul de la luminance relative d'un pixel implique de passer d'abord dans un espace de couleurs linéaire. Si C représente la valeur d'un canal r, g (vert) ou b et Clin représente la valeur linéaire utilisable pour le calcul de la luminance :

C_\mathrm{lin}=
\begin{cases}\frac{C}{12.92}, & C\le0.04045\\
\left(\frac{C+a}{1+a}\right)^{2.4}, & C>0.04045
\end{cases}

La luminance relative s'obtient ensuite à partir de ses valeurs rlin, glin, blin par la formule

Y = 0.2126 \cdot r_{lin} + 0.7152 \cdot g_{lin} + 0.0722 \cdot b_{lin}

Pour obtenir une valeur de luminosité perçue, non linéaire, on peut appliquer la formule CIE ; ou, si l'on veut, appliquer la correction gamma inverse. En effet, si les trois canaux rouge, vert et bleu ont la même valeur, celle-ci est une assez bonne estimation de la luminosité, sans aucun calcul. On peut donc rechercher une valeur compatible dans les autres cas.

Conversion sRGB et CIE[modifier | modifier le code]

Les conversions de l'espace sRGB vers les espaces colorimétriques CIE se ramenant, finalement, à un changement de coordonnées dans un espace, il existe des matrices de conversion entre tous les espaces linéaires.

Avant d'appliquer ces matrices, il faut appliquer la transformation non-linéaire.

Transformation directe (CIE xyY ou XYZ vers sRGB)[modifier | modifier le code]

Conversion CIE xyY en CIE XYZ

Si on part de valeurs de l'espace de couleurs CIE xyY (avec x, y les coordonnées chromatiques et Y la luminance), elles doivent d'abord être transformées en valeurs du tristimulus CIE XYZ avec les formules :

X = Y  x / y,\,
Z = Y  (1- x - y)/y\,
Conversion CIE XYZ vers sRGB (linéaire)

Le premier pas dans le calcul des valeurs du tristimulus sRGB depuis les valeurs du tristimulus CIE XYZ est une transformation linéaire, qui peut-être effectuée par une multiplication matricielle. Les valeurs numériques données ici sont celles de la spécification sRGB IEC 61966-2-1:1999.

Ces valeurs RGB linéaire ne sont pas le résultat final.

\begin{bmatrix}
R_\mathrm{linear}\\G_\mathrm{linear}\\B_\mathrm{linear}\end{bmatrix}=
\begin{bmatrix}
3.2406&-1.5372&-0.4986\\
-0.9689&1.8758&0.0415\\
0.0557&-0.2040&1.0570
\end{bmatrix}
\begin{bmatrix}
X \\ 
Y \\ 
Z \end{bmatrix}

Les paramètres intermédiaires R_\mathrm{linear}, G_\mathrm{linear} et B_\mathrm{linear} pour les couleurs à l'intérieur du gamut sont définies dans la plage [0,1], ce qui signifie que les valeurs initiales X, Y, et Z doivent être dans cette plage (si vous commencez avec des valeurs XYZ allant jusqu'à 100 ou ainsi, diviser les par 100 d'abord, ou appliquer une matrice et alors appliquer le facteur d'échelle constant pour revenir à la plage [0,1]). Les valeurs RGB linéaires sont généralement tronquées à cette plage, avec un affichage blanc représenté par le triplet (1,1,1) ; les valeurs XYZ originelles sont telles que le blanc D65 avec une luminance unitaire est (X,Y,Z = 0.9505, 1.0000, 1.0890). Les calculs supposent un observateur de référence CIE 2°.

Correction de gamma

Le système sRGB a été conçu pour refléter un moniteur typique du monde réel avec une valeur gamma de 2,2, et la formule suivante transforme les valeurs linéaires en sRGB. Si C_\mathrm{linear} représente R_\mathrm{linear}, G_\mathrm{linear}, ou B_\mathrm{linear}, et C_\mathrm{srgb} représente R_\mathrm{srgb}, G_\mathrm{srgb} ou B_\mathrm{srgb} :

C_\mathrm{srgb}=\begin{cases}
12.92C_\mathrm{linear}, & C_\mathrm{linear} \le 0.0031308\\
(1+a)C_\mathrm{linear}^{1/2.4}-a, & C_\mathrm{linear} > 0.0031308
\end{cases}
  • a = 0.055

Ces valeurs converties sont dans la plage allant de 0 à 1. Si les valeurs dans la plage 0 à 255 sont nécessaires, e.g. par exemple pour un affichage sur un périphérique vidéo de 8 bits, la technique usuelle consiste à multiplier par 255 et d'arrondir à l'entier.

Transformation inverse[modifier | modifier le code]

De nouveau, les valeurs du système sRGB R_\mathrm{srgb}, V_\mathrm{srgb}, B_\mathrm{srgb} se trouvent dans la plage allant de 0 à 1.

C_\mathrm{linear}=
\begin{cases}\frac{C_\mathrm{srgb}}{12.92}, & C_\mathrm{srgb}\le0.04045\\
\left(\frac{C_\mathrm{srgb}+a}{1+a}\right)^{2.4}, & C_\mathrm{srgb}>0.04045
\end{cases}

C est R, V, ou B). suivi par une multiplication matricielle des valeurs linéaires pour obtenir XYZ:


\begin{bmatrix}
X\\Y\\Z\end{bmatrix}=
\begin{bmatrix}
0.4124&0.3576&0.1805\\
0.2126&0.7152&0.0722\\
0.0193&0.1192&0.9505
\end{bmatrix}
\begin{bmatrix}
R_\mathrm{linear}\\ 
G_\mathrm{linear}\\ 
B_\mathrm{linear}\end{bmatrix}

Voir aussi[modifier | modifier le code]

Articles connexes[modifier | modifier le code]

Bibliographie[modifier | modifier le code]

Liens externes[modifier | modifier le code]

Références[modifier | modifier le code]