Exposés des élèves du cours de
deuxième année de l'Ecole des Mines de Nancy RESEAUX
1996/1997
La compression vidéo MPEG, par GERBER
Jacques-Alexandre et GIGNOUX Sébastien
Compression vidéo : MPEG-1
MPEG convertit les signaux vidéos analogiques en paquets de données numériques (digitales, en franglais) qui seront plus faciles à transporter sur un réseau. Les données digitales ont plusieurs avantages dont, en premier lieu, la non dégradation du signal. Le principe de la compression est de réduire autant que possible les redondances d'information sans que cela ne modifie l'aspect visuel du fichier ainsi traité.
MPEG est constitué de deux couches :
Il existe deux types de compression :
Compression avec perte
Avec ce type de compression, on atteint des taux de
compression très elevé (300:1) mais au
détriment de la qualité de l'image, qui pert de
l'information mais sans que cela ne soit nécessairement
détectable visuellement.
A ces deux techniques s'ajoutent deux autres techniques spécifiques à la compression vidéo :
La figure suivante schématise un système général de décompression MPEG :
La figure ci-dessous schématise la hiérarchie des données dans le flux vidéo :
Les données sont hierarchisées de la façon suivante :
Groupe d'images (Group of Pictures)
Il regroupe une en-tête et une série d'une ou
plusieurs images permettant d'y accéder de façon
alléatoire.
Image (Picture)
C'est l'unité élémentaire pour le codage
de la séquence vidéo. Une image est un groupe de
trois matrices rectangulaires qui représentent la luminance
(Y) et la chrominance (Cb et Cr), un élément de la
matrice représentant un pixel. Cette représentation
YCbCr est équivalente à celle RGB. Elle lui est
préférable, car l'oeil étant plus sensible
à la luminosité qu'à la chrominance, il n'est
pas nécessaire de stocker autant d'informations dans les
matrices Cb et Cr que dans la matrice Y, alors qu'en RGB, les
trois matrices sont de même taille. Les matrices Cb et
Cr sont ainsi de dimension deux fois plus petites que la matrice
Y.

Tranche (Slice)
Les tranches sont un ou plusieurs macroblocs adjacents
ordonnées de gauche à droite puis de haut en bas. Ce
sont des éléments importants pour la gestion des
erreurs. Si le flux de données contient une erreur, le
décodeur peut sauter la tranche et passer au début
de la suivante directement. Plus il y a de tranches, meilleur est
le traitement des erreurs mais fait perdre de la place.
Macroblocs (Macroblocks)
C'est une matrice rectangulaire de dimension 2 et
constituée de blocs.
Blocs (Block)
C'est un ensemble des valeurs de luminance et chrominance de 8
lignes de 8 pixels.
Le standard MPEG définit une hierarchie de structures de données qui code le signal audio. Ce flux audio est composé de paquets selon le schéma suivant :
Le standard MPEG spécifie trois types d'images :
Images prédites (Predicted Pictures or
P-Pictures)
Ces images sont codées par rapport à l'image
précédente. Elles utilisent la
compensation de mouvement pour un meilleur
taux de compression. Par ailleurs, elles ont
l'inconvénient de propager les erreurs, du fait qu'elles
réutilisent les informations de l'image
précédente.

Images bidirectionnelles (Bidirectional Pictures)
Ces images utilisent à la fois l'image
précédente et l'image suivante comme
références. Ceci a le grand avantage d'offrir
le meilleur taux de compression, sans pour autant propager les
erreurs puisqu'elles ne sont jamais utilisées comme
références.

L'algorithme MPEG autorise à l'encodage le choix de la fréquence et de la position des images clés. ceci permet à l'application un accès aléatoire aux plages enregistrées. Pour les applications où l'accès aléatoire est important, les images clés sont positionnées typiquement toutes les demies secondes. à l'encodage on peut choisir le nombre d'images prédites entre n'importe quelle paire d'images de référence. Ce choix est basée sur des facteurs liés au décodeur (comme par exemple la quantité de mémoire) ainsi qu'aux caractéristiques de la séquence vidéo.
Les codeurs MPEG réordonnent les images dans le flux vidéo pour optimiser le travail du décodeur. Ainsi, les images de référence nécessaires à la reconstruction d'images prédites sont envoyés avant les images prédites.
La compensation de mouvement est une technique pour optimiser le compression des images intermédiaires et des images clés en éliminant la redondance temporelle. Typiquement, la méthode de compensation de mouvement optimise la compression par un facteur d'ordre trois comparé au codage interne à l'image. Les algorithmes de compensation de mouvement travaillent au niveau des macroblocs. Quand un macrobloc est compressé par la technique de compensation de mouvement, le fichier compressé contient les informations suivantes :
Toutes les informations d'une image ne peuvent pas être prédites de l'image précédente. Considérons une scène dans laquelle une porte s'ouvre : les détails visuels de la chambre derrière la porte ne peuvent pas être prédits de l'image précédente quand la porte était fermée. Quand un cas comme celui-ci arrive, c'est-à-dire lorsqu'un macrobloc ne peut pas être codé de manière efficace dans une image prédite par la technique de la compensation de mouvement, il est codé de la même façon qu'un macrobloc dans son image clé. La différence, au niveau de la compensation de mouvement, entre une image prédite et une image bidirectionnelle est la suivante : les macroblocs d'une image prédite n'utilisent que des références à l'image antérieure, alors que les images bidirectionnelles utilisent toute combinaison d'images futures et/ou passées.
Il y a ainsi quatre types d'encodage d'un macrobloc d'une image prédite :
La compression MPEG compressé s'est d'images avec un algorithme prend trois étapes
Les blocs d'erreur ainsi que les blocs image possède une grande redondance spatiale. Pour réduire cette redondance, l'algorithme MPEG transforme les blocs de huit pixels par huit pixels du domaine spatial vers le domaine fréquentiel en utilisant une transformation en cosinus discrète. Ensuite, l'algorithme quantise les coefficients fréquentiels. La quantisation consiste à approximer chaque coefficient fréquentiel par un nombre dans une nombre limité de valeurs. Le codeur choisit une matrice de quantisation qui détermine comment chaque coefficient de la matrice 8 x 8 est quantisé. La perception humaine de l'erreur de quantisation est plus faible pour les hautes fréquences spatiales, ces fréquences seront alors quantisées plus sévèrement (c'est-à-dire avec moins de valeurs) que les basses fréquences. la combinaison de la transformée en cosinus discrète et de la quantisation permet de transformer beaucoup de coefficients fréquentiels à zéro, notamment les coefficients correspondant à une grande fréquence spatiale. Les coefficients non nuls étant regroupés en haut et à gauche de la matrice, la matrice n'est pas lue par ligne et colonne mais en zigzag pour optimiser la compression. Ceci permet de mettre tous les zéros de la matrice les uns à la suite des autres.
Certains blocs, par exempte les blocs qui ont un léger gradiant intensité, ont besoin d'être codés de manière plus précise pour éviter que l'on voit les frontières entre les blocs. Pour gérer ces différences entre les blocs, l'algorithme MPEG autorise la modification du niveau de quantisation pour chaque macrobloc. Ce mécanisme peut être utilisé pour permettre une adaptation souple à débit particulier.
Le standard MPEG définit un mécanisme qui assure la synchronisation entre audio et vidéo. Le système inclus deux paramètres : l'horloge de référence du système (SCR) et le marquage temporel (PTS). Le MPEG spécifie une horloge système qui tourne à 90 KHz. L'horloge système de référence et le marquage temporel sont codés dans le flux MPEG en utilisant 33 bits, qui peuvent représenter n'importe quel cycle d'horloge dans une période de 24 heures.