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
© Copyright 2024 ExpyDoc