Comprendre le codage couleur YUV
Pierre-Alain Dorange - juin 2001

Au départ les camescopes et autres outils de capture vidéo acquièrent l'image au travers d'un capteur CCD qui convertit la lumière reçut en un triplet de 3 valeurs (3 composantes) pour chaque pixel de l'image. Le codage couleur est RVB (Rouge, Vert et Bleu) ce qui permet par combinaison de reconstituer toutes les couleurs. Chaque composante est définit généralement sur 8 bits (1 octect).

Le codage RVB et aussi parfois noté RGB (Red, Green, Blue). Le codage RVB des couleurs est aussi le codage utilisé par la télévision ou les écrans d'ordinateur pour reproduire les couleurs.

Historiquement et techniquement, les signaux vidéos analogiques couleurs sont transportés dans un autre mode de représentation, on utilise un système nommé YUV. Ou Y représente la luminance et U, V les composantes Rouge et Bleu (chrominances). Ces 3 informations permettent de restituer au final les composantes RVB et apporte l’avantage de permettre une compression facile des couleurs et de fiabiliser le transport du signal vidéo. Mais surtout la partie Y (luminance) permet une totalement compatiblilité avec les anciens équipements noir et blanc, ce qui a permis le déploiement de la diffusion couleur alors que la totalité des foyers étaient alors équipés de téléviseurs noir et blanc.

image originale (codec DV PAL)

"Monster Inc.", dessin animé des Studios Pixar
© 2001 - Disney / Pixar

rouge
vert
bleu

Y
U V

La distinction entre des vidéos personnelles et “broadcast” (qualité diffusable à la télé) vient en grande partie du type de codage YUV utilisé pour le signal vidéo.

Ainsi le codec DV (utilisé par les camescopes numérique grand-public) utilise un YUV de 4:2:0 en PAL et 4:1:1 en NTSC; alors que la qualité “broadcast” du DV (DV50) utilise un YUV de 4:2:2, beaucoup plus fidèle au niveau des couleurs.

Qu’est-ce donc qu’un YUV de 4:2:2, 4:2:0 ou de 4:1:1 ?

Les 3 chiffres représentent la proportionnalité des composantes U et V par rapport à la luminance (Y) désigné par quantization en anglais. Ainsi en 4:2:2 on a 4 valeurs Y suivi de 2 valeurs U et 2 valeurs V pour coder la couleur d’un bloc, soit YYYYUUVV. Dans le cas d’un YUV de 4:1:1 on aura YYYYUV. La différence entre les 2 images se fera au niveau de la qualité de définition des couleurs (fidélité) et de la netteté des contours.

On utilise aussi la notation YUV-9 ou YUV-12 par exemple qui indique le nombre de bits moyens pour décricre chaque pixel et le type d'entrelacement des composantes Y, U et V.

Si vous disposez de photoshop vous pouvez visualiser facilement la conversion RGB <-> YUV et l'effet de quantization en extrayant d'un film DV une image fixe (en qualité supérieure). Ensuite ouvrez cette image avec Photoshop. Dans la palette couche, vous pouvez visualisez la couche R, V et B. Ensuite passer en mode Lab et vous visualiserez les couches qui correspondent approximativement au Y, U et V en vidéo.

Il est a noter que l'effet de quantization DV rend difficile la réalisation d'incrustation sur fond bleu ou vert en post-production.

Le codage YUV en détails

Un flux vidéo est composé d’une succession d’images. Chaque image est composée de points (pixels) assemblés dans un bloc rectangulaire (taille image).

Chaque pixels images comprend à une description de la couleur du point.

Au niveau de l’acquisition par un capteur CCD (photonumérique ou camescope) et de la diffusion vidéo (tube TV) le codage des couleurs est réalisé en RVB, c’est à dire que chaque couleur est decrite avec 3 valeurs (ou composantes) : Rouge, Vert en Bleu; ce qui permet la description des couleurs possible de restitution (fig.1).

Une image télé est en effet composeé de points et chaque point-image composé d’un point Rouge, un Vert et un bleu.

Le flux vidéo RVB est constitué de la suite des pixels de la première ligne, suivi de ceux de la deuxième et ainsi de suite.

Le transfert de flux vidéo par contre est réalisé suivant un codage couleur différent, le codage YUV (fig.2) qui correspond à chaque point en 3 éléments :

  • Y, la luminance
  • U, la composante Rouge (en fait Y-Rouge)
  • V, la composante Bleu (en fait Y-Bleu)

Ce codage permet de séparer la luminescence (image en niveaux de gris) de la description couleur, ce qui permet de diminuer la quantité des composantes couleurs pour minimiser la taille du flux vidéo et d'assurer automatiquement une compatibilité avec des diffuseurs noir et blanc (TV).

En conversion idéale on ferait correspondre à RVB un triplet YUV. Dans la réalité on convertit un flux de triplets RVB en un flux YUV suivant différents schémas.

Par exemple, prenons un flux RVB ou Ri représente la composante Rouge du pixel numéro i :

  • R1V1B1R2V2B2R3V3B3R4V4B4R5V5B5R6V6B6…

on pourrait le convertir en YUV plein format en :

  • Y1U1V1Y2U2V2Y3U3V3Y4U4V4Y5U5V5Y6U6V6…

Cette méthode n’est pas ou peu utilisée.
On utilise certaines caractéristiques optique de l’oeil pour minimiser ce flux en regroupant les composantes U et V tout en conservant la luminescence Y : c'est de la compression. Ainsi on peut transmettre un flux vidéo en envoyant la luminescence de chaque pixel (Y) et en regroupant les composantes U et V avec un couple UV pour 4 pixels RVB par exemple sans que visuellement l’oeil puisse vraiment discerner la différence, ce qui permet de réduire le flux, et donc de compresser les images.

Pour ce faire il existe 2 techniques, qui donne lieu à 2 familles de codage YUV :

  • codage YUV par paquets ou blocs (packed)
  • codage YUV par plans (planar)

Le codage par plan sépare les flux Y, U et V, alors que le codage par bloc regroupe les pixels par blocs image de taille fixe (8x8 pixels le plus souvent) et les entrelacent suivant un schéma fixe (pattern).

On utilise la notation Y:U:V pour indiquer les proportions respectives de Y, de U et de V. Ainsi la qualité “broadcast” (diffusion TV) utilise la proportion 4:2:2 ce qui indique que pour 4 Y on a 2 U et 2 V, soit au total 8 valeurs pour 4 pixels RVB d’origine.

En mode par paquets (packed YUV) on aura donc en 4:2:2 le flux suivant :

  • Y1U1Y2V1Y3U2Y4V2…

Le codage par paquet est utilisé pour les normes DV (pro, pal ou ntsc) : voir fig.3, 4 et 5.

Normes YUV les plus répandus

norme
bits
famille
codec
exemple
type
pattern (packed)
YUV-9
9
4:1:1
Sorenson
planar
-
YUV-12
12
4:2:2
MPEG
planar
-
UYVY
16
4:2:2
Cinepak
packed
UYVY...
IYU
12
4:1:1
DV NTSC
packed
UYYVYY...



fig.1 - Codage RVB
(Capture CCD)

 



fig.2 - Codage YUV "brut" (4:4:4)

 


fig.3 - Codage YUV 4:2:2 packed
(DVC50 Pro)

 



fig.4 - Codage YUV 4:1:1 packed
(DV NTSC)

 



fig.5 - Codage YUV 4:2:0 packed
(DV PAL)

haut de la page - © Le garage de la vidéo - reproduction interdite