sRGB

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

sRGB, ou standard RGB (Red Green Blue), est un espace de couleur rouge vert bleu (RVB) proposé par Hewlett-Packard et Microsoft en 1996[1]. Il est utilisé dans les dispositifs numériques, notamment les écrans d'ordinateurs et le stockage des images.

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 cette correction ; mais un circuit électronique leur permet de fonctionner avec le même signal que leurs prédécesseurs. Les valeurs données dans l'espace sRGB sont converties par le système graphique, soit selon les valeurs par défaut, soit, pour les utilisateurs qui en ont besoin, par les valeurs obtenues par l'étalonnage du périphérique donnant son profil ICC.

La norme sRGB établit des valeurs compatibles avec la plupart 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é

La luminosité d'un pixel s'obtient à partir de ses valeurs r, g, b par la formule

Y = 0.2126 \cdot r + 0.7152 \cdot g + 0.0722 \cdot b

Conversions et transformations sRVB et CIEs[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.

La conversion de et vers les espaces non linéaires se fait en plusieurs temps.

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 sRVB 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 sRVB IEC 61966-2-1:1999.

Il est important de noter que ces valeurs linéaires RVB ne sont pas le résultat final.


\begin{bmatrix}
R_\mathrm{linear}\\V_\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}, V_\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 RVB linéaires sont généralement clippé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 sRVB 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 sRVB. Si C_\mathrm{linear} représente R_\mathrm{linear}, V_\mathrm{linear}, ou B_\mathrm{linear}, et C_\mathrm{srvb} représente R_\mathrm{srvb}, V_\mathrm{srvb} ou B_\mathrm{srvb}:

C_\mathrm{srvb}=\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 gamma-corrigées 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{srvb}, V_\mathrm{srvb}, B_\mathrm{srvb} se trouvent dans la plage allant de 0 à 1. (Une plage allant de 0 à 255 peut simplement être divisée par 255).

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

(avec 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}\\ 
V_\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]