La compression vidéo

La compression vidéo
Synthèse réalisée par Leslie HUIN – Master 2 IPM – 2013-2015
Cette synthèse a pour objectif de présenter les grands principes de la compression vidéo. Pas de panique, nous
ne rentrerons pas dans le détail des algorithmes mathématiques complexes. Nous allons simplement comprendre
les enjeux et les techniques de base de la compression vidéo.
Introduction
La compression n'est pas un domaine exclusif à la vidéo. On l'utilise lorsque
l'on souhaite réduire la taille d'un fichier numérique afin que celui-ci prenne
moins d'espace de stockage et soit aussi plus facile à transmettre notamment
sur Internet. En ce qui concerne les fichiers multimédias de type image, audio,
ou vidéo, la compression consiste à réduire la quantité de données tout en
minimisant les pertes sur la qualité. On entend par qualité une bonne
résolution d’image et une bonne fluidité. Dans cette synthèse, nous nous
orienterons sur les besoins de compression pour le stockage ou la diffusion de
vidéo.
Les usages actuels ont fortement motivé les initiatives autour de l’optimisation de la compression vidéo. En effet,
les accès en ligne ou sur mobile nécessitent des tailles de fichiers optimales, tout en gardant un niveau de qualité
correct voire de haute définition.
Compresser une vidéo, c’est jouer sur ce qui la compose. Aussi, avant d’exposer les techniques majeures de
compression, nous devons comprendre ce qui constitue le format d’une vidéo. En avant pour une petite
explication des concepts de formats, conteneurs et codecs.
Les formats vidéo & les notions de conteneur et de codec
Un flux vidéo est composé d'une succession d'images qui défilent à un rythme fixe pour donner l'illusion du
mouvement (par exemple 25 par seconde dans la norme Française PAL ou 30 par seconde dans d'autres normes).
On retrouve généralement un flux audio et aussi d’autres informations comme des sous-titres, des menus, des
chapitrages, des interactions et des métadonnées, des informations de propriétés sur la vidéo comme la date de
création, le nom de la vidéo, son auteur, etc…
Il existe une multitude de formats vidéo. Vous avez certainement entendu
parler du format AVI (Audio Video Interleave) de Microsoft, du format MPEG
(Moving Picture Experts Group) de l’organisme du même nom, du format
Quicktime d’Apple ou encore du format FLV (FLash Video) d’Adobe. Ce que
peu de gens savent, c'est qu'un format résulte en fait de deux concepts
techniques distincts : les conteneurs et les codecs.
1
Le conteneur
Le conteneur décrit la structure du fichier. Il est utilisé pour stocker la vidéo (son flux d'images, flux audio et
métadonnées) selon un schéma bien défini. Il précise notamment quel codec vidéo et potentiellement audio sont
utilisés. Il peut également intégrer des sous-titres ou du chapitrage. Le principal objectif du conteneur est donc
d’organiser la coexistence entre l'image, le son, éventuellement du texte et d'autres données liées. Dans le
langage du monde vidéo, on parle de multiplexage. Il s'agit globalement de prendre les flux ou objets séparés et
de les grouper dans un seul fichier.
On peut imager un conteneur comme une
boite avec plusieurs objets à l’intérieur mais
rangés d’une façon bien définie. Le
conteneur utilisé est généralement identifié
grâce à l'extension du fichier de la vidéo.
C'est d'ailleurs pour cela que cette notion est
souvent confondue avec la notion de format
car il arrive que le nom du format soit
identique au nom de son conteneur. Par
exemple, chez Microsoft le format AVI utilise
le conteneur de même nom. Mais on
distingue également chez Microsoft le format
WMV qui utilise un conteneur appelé ASF.
Autre exemple dans le monde réputé du
MPEG, on distingue le format MPEG-4 qui
utilise le conteneur éponyme ainsi que le
format MPEG qui utilise le conteneur PS
(Program Stream).
Flux vidéo
Flux Audio
Métadonnées
Conteneur
Structure du fichier
Le codec
On retrouve donc dans chaque conteneur les données audio et vidéo. Mais en amont, ces données doivent être
encodées pour correspondre au format attendu en optimisant la compression avec une perte de qualité
minimum. C'est le rôle du codec, abréviation de « codeur/décodeur ». Il propose une méthode pour encoder les
signaux vidéo et audio selon un format attendu par le conteneur. Si l’on reprend l’image de notre conteneur en
tant que boite, le codec décrit « simplement » la méthode pour ranger ou déballer correctement les différents
objets composants la vidéo. L'efficacité d'un codec se mesure d'une part dans ses capacités de compression, mais
aussi de décompression, c'est-à-dire à rétablir la vidéo lors de sa diffusion au plus près de sa qualité d'origine et
dans un débit performant.
COdec
2
Conteneur
coDEC
Ce qu'il faut comprendre c'est que la plupart des conteneurs les plus utilisés supportent différents codecs et un
codec ne peut pas être utilisé avec n’importe quel conteneur. Il y a une question de compatibilité. Par exemple,
le conteneur MP4 peut utiliser les codecs MPEG-4, H.264 ou encore XVID. Le format AVI lui, est compatible avec
les codecs MJPEG, MPEG-4, DIVX ou encore XVID. Quelle différence me direz-vous ? Et comment choisir le bon
codec ? La différence principale se joue sur les algorithmes de compression. Le choix se portera donc en fonction
ce que l’on souhaite privilégier : plutôt une faible taille de fichier, une bonne qualité ou encore en fonction de
l’objectif de diffusion en ligne ou de stockage sur support numérique. Nous ne rentrerons pas ici dans les détails
techniques de choix et de paramétrage d’un codec.
Dans tous les cas, la vidéo a comme finalité d'être lue sur un
lecteur qui doit donc être compatible avec le format, c'est-àdire avec le conteneur et avec le codec utilisé.
Un des lecteurs les plus universels est le lecteur
VLC qui sait ouvrir de nombreux conteneurs et
décoder de nombreux codecs vidéo.
MediaInfo fournit des
informations techniques et
les métadonnées de
fichiers vidéo et audio,
notamment les types de
format, conteneur et
codec.
La compression vidéo : généralités
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. Cela permet de réduire l’espace de stockage nécessaire
et facilite aussi sa diffusion. C’est la lourde tâche du codec qui définira la technique et les paramètres de
compression puis de décompression pour la lecture.
On distingue les compressions sans perte (au cours de laquelle aucune donnée n’est supprimée de l’image) et les
compressions avec perte (qui élimine des données de manière sélective).
Pour réduire la taille d’une vidéo, il est possible de combiner différentes techniques que l’on définira comme des
algorithmes de compression vidéo.
Certains principes peuvent s’appliquer à l’ensemble de la vidéo sans distinction des images individuelles. Par
exemple, il est possible de diminuer la fréquence d’image, déterminée par le nombre d’images par seconde
(généralement entre 25 et 30 suivant les formats). Moins d’images, c’est moins d’information à stocker mais on
perd généralement en qualité au niveau de la fluidité du mouvement. Il est également envisageable de diminuer
la résolution : le nombre de pixels constituant l’image est diminué grâce à des techniques de ré-échantillonnage.
Moins de pixels sur une image, c’est également moins d’information à enregistrer.
Les algorithmes de compression vidéo se basent aussi sur une notion simple : il existe généralement au sein d'une
vidéo de nombreuses redondances d'information, c'est-à-dire une similitude au sein même d'une image ou entre
les images constituant le flux vidéo. Aussi, le principe de la compression vidéo a pour objectif de réduire voire
d'éliminer cette redondance.
A l’échelle d’un pixel, on peut noter des corrélations sur deux axes :
- L’axe spatial : il existe une similitude entre les pixels adjacents d'une même image. On parle alors de
codage intra-image, intra-frame ou intra-trame.
- L’axe temporel : il existe une similitude entre les pixels d'une séquence d'images analogues, séquence
appelée groupe d’images ou GOP (Group Of Pictures). On parle alors de codage inter-image, inter-frame
ou inter-trame.
Dans le schéma classique de la compression vidéo, une combinaison adaptative entre les deux mouvements
(temporel et spatial) de l’information est utilisée pour réaliser une importante compression de données.
3
Le pixel est l’élément atomique d’une image. Mais pour optimiser la compression, le travail s’effectue sur d’autres
décompositions de l’image : on retrouve par découpage successif les tranches, macroblocs et blocs.
La compression vidéo : technique intra-image (compression spatiale)
Les algorithmes de compression vidéo intra-image s’appuient sur les principes classiques de compression d’image
où chaque image est travaillée individuellement. Les données sont réduites en supprimant les informations
redondantes ou inutiles car non remarquables par l’œil humain. Il existe plusieurs techniques. En voici quelques
exemples, sans rentrer dans les détails mathématiques.
Transformation des couleurs : le système de stockage colorimétrique
est modifié par un système moins gourmand en taille mémoire. Par
exemple, le codec MPEG (1,2 ou 4) transforme le classique système
RVB (image de gauche) qui enregistre pour chaque pixel la valeur du
rouge, du vert et du bleu, en un système plus proche de la
représentation de l’œil humain et sollicitant moins d’espace de
stockage, le système YUV intégrant une composante de luminosité et
deux valeurs de chrominance (image de droite).
4
Elimination les redondances : Dans une image, des blocs
peuvent se reproduire à l’identique ou, éventuellement, avec
de très légères variantes. Le premier bloc d’une série étant
codé, il devient redondant de coder les autres blocs qui lui sont
identiques, ou qui disposent d’un composant colorimétrique
identique. Il suffit d’indiquer qu’il y a répétition du premier
bloc. La compression spatiale identifie les zones redondantes
au sein d'une même image et ne stocke que les différences.
Plusieurs techniques existent et peuvent être combinées pour un meilleur résultat. C’est le cas du format de
compression d’image JPEG utilisé par le codec vidéo MJPEG.
La compression vidéo : technique inter-image (compression temporelle)
En examinant une vidéo, il est facile de remarquer qu’il existe dans certaines séquences des éléments redondants
fixes ou mobiles mais suivant un mouvement logique. A l’échelle du pixel, on parle donc de corrélation temporelle
entre des images successives. Dès lors, une image est décrite en fonction de sa différence par rapport à la
précédente. Les zones redondantes sont reprises des images précédentes. Cela implique différents mécanismes
d’identification des redondances.
Le premier mécanisme est le codage différentiel, où une image est comparée à une image de référence et seuls
les pixels qui ont changé par rapport à cette image de référence sont codés. Cela permet de réduire le nombre de
valeurs codées et stockées pour chaque pixel. Le codage différentiel compare des éléments statiques d’une image
à l’autre.
Image de référence
Elément statique
redondant
Le deuxième mécanisme, plus complexe, est la compensation de mouvement utilisée afin de réduire encore
davantage la quantité de données. Cette technique tient compte du fait qu’une bonne partie de ce qui compose
une nouvelle image dans une séquence vidéo se retrouve dans une image adjacente, mais pas forcément au
même endroit. Il est donc possible de composer ou de « prédire » une nouvelle image bloc par bloc en recherchant
un bloc identique dans une image de référence. Si un bloc référent est trouvé, l’encodeur code l’emplacement
dans l’image de référence où se situe le bloc identique ainsi que le vecteur de mouvement qui utilise moins
d’espace que le codage du contenu réel d’un bloc.
5
Image de référence
Bloc dynamique
redondant de référence
Bloc dynamique
redondant cible
Vecteur de
mouvement
Avec la prédiction inter-images, chaque image d’une séquence est classifiée comme un certain type d’image
(image I, image P ou image B).
Une image I est une image de référence également appelée Intra-frame. C’est une image autonome c’est-à-dire
qui peut être décodée sans référence à d’autres images. La première image d’une séquence vidéo est toujours
une image I. Elle fait généralement l’objet d’une compression spatiale intra-image. L’intégration régulière d’image
I garantit la qualité résultant de la décompression.
Une image P est une image Prédictive qui fait référence aux parties des images I et/ou P antérieures pour le
codage de l’image. Une image P nécessite généralement moins de bits qu’une image I, mais elle peut être sensible
aux erreurs en raison de la dépendance complexe vis-à-vis des images P et/ou I antérieures.
Une image B est une inter-image Bi-prédictive qui fait référence à la fois à une image antérieure et à une image
future. Une image devant être compressée avec la méthode B est comparée à toutes les images de type I ou P
précédentes ou suivantes, à la recherche de la plus ressemblante et on définit les changements et vecteurs de
mouvement.
Cette succession d’images (GOP) constitue des paquets IBBPBBP. La première image d'un GOP est nécessairement
une image I, c'est la référence des autres et c'est la seule à être fiable et d'assez bonne qualité. Les autres images
ne sont que des dégradations de celle-ci. Ensuite on encode les images suivantes de manière B ou P en fonction
du niveau de qualité souhaité. De la même façon, lorsqu’un décodeur vidéo rétablit une vidéo en décodant le flux
image par image, le décodage doit donc toujours commencer par une image I. Les images P et B, si elles sont
utilisées, doivent être décodées avec les images de référence. D’ailleurs, lorsque vous faites avance rapide sur
certains lecteurs vidéos et sur certains formats de vidéo utilisant la compression temporelle, vous pouvez
apercevoir les images clés défiler.
6
Zoom sur le format MPEG
Aujourd'hui, l'un des formats les plus utilisés est le format MPEG facilitant la création et la diffusion de contenus
numériques notamment sur des supports en ligne. Le format MPEG-4 est une norme, c’est-à-dire qu’il définit de
façon précise et stricte les règles qui le régissent. La norme MPEG-4 spécifie d'abord des techniques pour gérer le
contenu comprenant un ou plusieurs objets audio-vidéo. Contrairement à MPEG-2 qui visait uniquement des
usages liés à la télévision numérique, les usages de MPEG-4 englobent toutes les nouvelles applications
multimédias comme le téléchargement et le streaming sur Internet, le multimédia sur téléphone mobile, la radio
numérique, les jeux vidéo, la télévision et les supports haute définition. MPEG-4 est issu d’une lignée de normes
développées conjointement par le groupe de travail MPEG (Moving Picture Experts Group) soutenu par l’ISO un
organisme de normalisation international et l’Union Internationale des Télécommunications (UIT-T).
H.264 autrement appelé MPEG-4 AVC est un codec vidéo développé par le MPEG, actuellement l’un des plus
utilisés. Il met en œuvre une approche hybride basée sur les redondances spatiales et les redondances
temporelles.
Il est très performant et se distingue de plus en plus des autres standards de compression pour certains usages.
Certains affirment qu’il propose actuellement la meilleure compression vidéo sans perte de qualité. Ce codec
continue d’affiner les algorithmes de compression temporelle et de détection de mouvement avec notamment
plus de possibilités de comparaison entre les images, la gestion de différentes tailles de blocs, une précision
supérieure pour la modélisation des mouvements… tout en limitant la perte de qualité et les erreurs.
La compression vidéo est certes un domaine complexe qui implique des algorithmes
et formules mathématiques de niveau avancé. Mais les principes de base sont
relativement abordables. Vous pouvez maintenant si vous le souhaitez approfondir
certaines notions grâce aux multiples ressources disponibles sur internet.
La compression vidéo est également un domaine qui évolue et qui demande une veille
régulière sur les nouveaux formats, conteneurs et codecs performants.
Merci d’avoir consulté cette synthèse, en espérant qu’elle vous sera utile pour vos
potentielles prochaines productions numériques !
Sources bibliographiques :
http://fr.wikipedia.org/wiki/Compression_vid%C3%A9o
http://www.axis.com/fr/products/video/about_networkvideo/compression.htm
http://www.commentcamarche.net/
http://help.adobe.com/fr_FR/mediaencoder/cs/using/WSb8e30982e628fbecc0e59e6131255b4dd2-8000.html
http://perso.univ-rennes1.fr/pierre.nerzic/IN/Cours/S3P3%20-%20Codages%20et%20compression.pdf
http://www.spherevideo.com/Cyberbulletin/pdf/cyberbull_05_08.pdf
http://www.sen-av.net/article.php3?id_article=44
http://www.sen-av.net/article.php3?id_article=28
7