- Compression vidéo
-
La compression vidéo est une méthode de compression de données, qui consiste à réduire la quantité de données, en minimisant l'impact sur la qualité visuelle de la vidéo. L'intérêt de la compression vidéo est de réduire les coûts de stockage et de transmission des fichiers vidéo.
Sommaire
Principes fondamentaux des algorithmes de compression vidéo
Les séquences vidéo contiennent une très grande redondance statistique, aussi bien dans le domaine temporel que dans le domaine spatial.
La propriété statistique fondamentale sur laquelle les techniques de compression se fondent, est la corrélation entre pixels. Cette corrélation est à la fois spatiale, les pixels adjacents de l'image courante sont similaires, et temporelle, les pixels des images passées et futures sont aussi très proches du pixel courant.
Ainsi, on suppose que l'importance d'un pixel particulier de l’image peut être prévue à partir des pixels voisins de la même image (utilisant des techniques de codage intra-image) ou des pixels d'une image voisine (utilisant des techniques inter-image). Intuitivement il est clair que dans certaines circonstances, par exemple, lors d'un changement de plan d’une séquence vidéo, la corrélation temporelle entre pixels entre images voisines est petite, voir nulle. Dans ce cas, ce sont les techniques de codage dites Intra qui sont les mieux appropriées, afin d'exploiter la corrélation spatiale pour réaliser une compression efficace de données.
Les algorithmes de compression vidéo de type MPEG utilisent une transformation appelée DCT (pour Discrete Cosine Transform, soit « transformée en cosinus discrète »), sur des blocs de 8x8 pixels, pour analyser efficacement les corrélations spatiales entre pixels voisins de la même image. D'autres méthodes ont été proposées, en utilisant les fractales, les ondelettes, ou même le matching pursuit.
Cependant, si la corrélation entre pixel dans des trames voisines est grande, c'est-à-dire, dans les cas où deux trames consécutives ont un contenu semblable ou identique, il est souhaitable d’utiliser une technique de codage dite Inter, par exemple la DPCM, qui utilise la prévision temporelle (prévision compensé du mouvement entre trames).
Dans le schéma classique du codage vidéo, une combinaison adaptative entre les deux mouvements (temporel et spatial) de l’information est utilisé pour réaliser une grande compression de donnée (codage vidéo hybride DPCM/DCT).
Sous-échantillonnage et interpolation
La plupart des techniques de codage qu’on décrira dans cette partie, font un échantillonnage et une quantification avant de coder l’information. Le concept de base du sous-échantillonnage est de réduire les dimensions (horizontale et verticale) de l’image vidéo et donc de diminuer le nombre de pixels à coder.
Certaines applications vidéo sous-échantillonnent aussi le mouvement temporel pour réduire le débit des images avant de coder. Le récepteur doit donc décoder les images et les interpoler avant de les afficher.
Cette technique de compression peut être considérée comme une des plus élémentaires, qui tient en compte les caractéristiques physiologiques de l’œil et qui enlève la redondance contenue dans les données vidéo.
Les yeux humains sont plus sensibles aux variations de la luminosité que de couleurs. A cause de ce défaut de l'œil, la majorité des algorithmes de compression vidéo représentent les images dans l'espace couleur YUV, qui comprend une composante de luminosité et deux de chrominance. Ensuite les composantes chromatiques sont sous-échantillonnées en fonction de la composante de luminance avec un rapport Y : U : V spécifique à une particulière application. (exemple: avec MPEG-2 le rapport est de 4 : 1 : 1 ou 4 : 2 : 2).
Prédiction compensée de mouvement
La prédiction compensée de mouvement, ou compensation de mouvement, est un puissant moyen pour réduire les redondances temporelles entre images, et elle est utilisée dans MPEG-1 et MPEG-2 comme prédiction pour le codage DPCM. Le concept de la compensation du mouvement est basé sur l’estimation du mouvement entre images vidéo; si tous les éléments d’une scène vidéo sont proches dans l’espace, le mouvement entre trames peut être décrit avec un nombre limité de paramètres (vecteurs de mouvement des pixels).
La meilleure prédiction d'un pixel est donnée par la prédiction de mouvement de la trame précédente. Bien que, soit la prédiction de l'erreur que les vecteurs de mouvement sont transmis, le codage de l'information de mouvement pour chaque pixel de l'image n'est pas nécessaire.
Si la corrélation spatiale entre vecteurs de mouvement est assez haute, un vecteur de mouvement pourra représenter un bloc de pixels adjacents.
Ces blocs sont souvent constitués d'un groupe de 16x16 pixels, et seulement un vecteur de mouvement est estimé, codé et transmis pour chaque bloc.
Conclusion
La combinaison des techniques de prédiction compensée de mouvement et de la transformation DCT peuvent être définies comme les éléments clé de la compression vidéo de type MPEG. Un troisième élément caractéristique est que ces techniques sont utilisées pour des petits blocs d'image (souvent 16x16 pixels pour la compensation de mouvement et 8x8 pixels pour le codage DCT).
Pour ces raisons le codage MPEG est référé aux algorithmes hybrides DPCM/DCT.
Schéma de base du codage entre trames
La technique de compression de base de MPEG-1 (et de MPEG-2) est basée sur une structure de macro-blocs. L'algorithme code la première trame d'une séquence avec un codage Intra-frame (trame I). Chaque trame successive est codée en utilisant la prédiction Inter-frame (trames P); seulement les données de la trame codée juste précédemment (trames I ou P) seront utilisées pour la prédiction. Chaque couleur d'une trame est partitionné en macro-blocs.
Chaque macro-bloc contient les données sur la luminosité et de la chrominance: 4 blocs de luminosité (Y1,Y2,Y3,Y4) et deux pour la chrominance (U,V), chacun de 8x8 pixels; ce qui donne un rapport entre luminosité et chrominance de 4 : 1 : 1
Schéma blocs du codage DCT/DPCM
La première trame d'une séquence vidéo (trame I) est encodé avec le mode Intra-frames sans aucune référence sur des trames passées ou futures. À l'encodeur la DCT est appliquée sur chaque bloc 8x8 de luminosité et de chrominance, chacun des 64 coefficients DCT sont quantifiés uniformément (Q). Après quantification, le coefficient plus petit (coefficient DC) est traité différemment par rapport aux autres (coefficients AC). Le coefficient DC corresponde a l'intensité moyenne du bloc et il est encodé avec une méthode de prédiction différentielle DC. Le reste des coefficients non nuls sont ensuite codés en zigzag comme dans le codage JPEG.
Schéma blocs du décodage DCT/DPCM
Le décodeur effectue l'opération inverse. Il commence par extraire et décoder les données des différents coefficients DCT pour chaque bloc. Avec la reconstruction (Q*) des coefficients non nuls il fait la DCT inverse (DCT-1) et les valeurs de quantification des pixels des blocs sont reconstituées. Toutes les blocs de chaque image sont décodés et reconstitués.
Pour coder les trames P, les trames précédents N-1(trames I ou P) sont mémorisées temporairement dans FS (frame store). La compensation de mouvement (MC) est effectué sur la base des macro-blocs. Un buffer vidéo (VB) est nécessaire pour assurer un débit constant de flux vidéo.
Conditions de remplissement
Une caractéristique apporté par l'algorithme MPEG-1 est la possibilité de mettre à jour les informations des macro-blocs au décodeur seulement si nécessaire (si le contenu d'un bloc est changé par rapport au contenu du même bloc de l'image précédente). La clé pour un codage efficient des séquences vidéo avec un faible débit de bits par seconde est le bon choix de l'algorithme de prédiction. Le MPEG standard distingue principalement trois différents méthodes (types MB):
- MB par saut : Prédiction depuis les trames précédentes avec zéro vecteurs de mouvement. Aucune information sur les macro-blocs est ni codée ni transmise au récepteur.
- Inter MB : Prédiction depuis les trames précédentes. Le type MB, l’adresse MB si demandé, le vecteur de mouvement, coefficients DCT et le pas de quantification sont transmis.
- Intra MB : Aucune prédiction est utilisé. Seulement le type MB, l’adresse MB, le vecteur de mouvement, les DCT et le pas de quantification sont transmis.
Fonctionnalités de MPEG-1
Pour accéder à un support média, l'algorithme MPEG-1 fut pensé pour supporter différentes fonctionnalités comme l'accès aléatoire, la recherche en vitesse avant (FF-fast forward) et arrière (FR-fast reverse) dans le flux vidéo, etc.
Pour incorporer ces fonctionnalités et pour tirer plus d'avantage de la compensation de mouvement et de l'interpolation de mouvement, l'algorithme MPEG-1 introduit le concept d'images prédites et interpolées bidirectionnellement (trames B).
Trois types de trames sont considérées :
- Trames I : Ces trames sont codées sans aucune référence à autre image de la séquence vidéo, comme explique avant. Les trames I permettent de réaliser l'accès aléatoire et les fonctionnalités FF/FR, bien qu'elles ne permettent qu'un très bas taux de compression.
- Trames P : Ces trames sont codées avec une référence à l'image précédente (trame I ou trame P). Ces trames sont utilisées pour la prédiction de trames futures ou passées et elles ne peuvent pas être utilisées pour réaliser l'accès aléatoire et les fonctionnalités FF/FR.
- Trames B : Elles ont besoin des trames futures et passées comme référence pour être codées. Elles sont utilisées pour obtenir un très haut taux de compression. Elles ne sont jamais utilisées comme référence.
L'utilisateur peut arranger la séquence des différents types de trame selon le besoins de l'application. Généralement une séquence vidéo codée en utilisant seulement des trames I (I I I I I . . .) donne un haut degré d'accès aléatoire, de FF/FR et d’édition, mais un taux très bas de compression. Une séquence vidéo codée seulement avec des trames P ( I P P P P P P I P P P P . . .) permet un degré moyen d'accès aléatoire et de FF/FR.
Si on utilise les trois types de trames (I B B P B B P B B I B B P . . .) on arrive à un grand taux de compression et un raisonnable degré d'accès aléatoire et de FF/FR, mais on augmente beaucoup le temps de codage. Pour des applications comme la vidéotéléphonie ou la vidéoconférence ce temps peut devenir intolérable.
MPEG-2
L'algorithme MPEG-2 a été dessiné pour avoir une qualité pas inférieure à celle de NTSC/PAL et plus grande que celle du CCIR 60.
À la base, l'algorithme de MPEG-2 est identique à celui de MPEG-1 et il est donc compatible avec lui. Chaque décodeur MPEG-2 doit être capable de décoder un flux vidéo MPEG-1 valide. Plusieurs algorithmes ont été ajoutés pour s'adapter aux nouveaux besoins. MPEG-2 permet de traiter des images entrelacées.
MPEG-2 introduit le concept de « profils » et de « niveaux » pour être compatible avec les systèmes qui n'implémentent pas toutes ces fonctionnalités.
Chaque niveau spécifie la plage des différents paramètres utiles pour le codage.
Le niveau principal supporte au maximum une densité de 720 pixels en horizontal et 576 pixels en vertical, un débit d'images par seconde de 30 trames/sec et un débit de bit par seconde de 15 Mbit/s.
Bibliographie
- Techniques de compression des images, Jean-Paul Guillois, Éditions Hermes, 1996, ISBN : 2-86601-536-3
- Compression de données, compression des images, Jean-Paul Guillois, Techniques de l'Ingénieur. Traité d'électronique, E5340. 1998
- Compression et codage des images et des vidéos (Traité IC2, série traitement du signal et de l'image), sous la direction de Michel Barlaud et Claude Labit , Hermès-Lavoisier. 2002
Articles connexes
- Voir aussi : Codec, MPEG-1, MPEG-2, MPEG-4, Moving Picture Experts Group.
Liens externes
- AVC/H.264, un système de codage vidéo évolué pour la HD et la SD, article de la revue technique de l'UER
- Dirac – Une solution ouverte pour la compression vidéo, article de la revue technique de l'UER
Wikimedia Foundation. 2010.