La compression d’une séquence vidéo consiste à réduire la quantité de données nécessaire pour la représenter, tout en cherchant à minimiser les phénomènes de perte de qualité. Les variations à l’intérieur d’une séquence, causées par exemple par des mouvements d’objets par rapport à la caméra ou des changements d’illumination, sont continues dans la majorité des cas. Les données contenues sont par conséquent imprégnées de fortes redondances, qu’il est possible de retirer pour représenter la scène en utilisant une quantité réduite d’informations. De plus, l’oeil humain ne perçoit qu’une partie des informations présentes dans les images, et il est ainsi possible de ne pas retirer les zones les moins pertinentes en limitant l’impact sur la qualité ressentie. L’utilisation conjointe de la suppression des redondances et des informations les moins visibles permet alors de condenser de manière significative les données à représenter.
Grâce à l’évolution des techniques de codage vidéo, accompagnée par les progrès technologiques dans le domaine des télécommunications, l’accès aux contenus vidéo est en plein essor depuis plus d’une dizaine d’années. La multiplication des moyens de transmission (ADSL, réseaux Wi-Fi, réseaux cellulaires, UMTS, etc) et la diversification des appareils capables de lire ces contenus (télévisions haute-définition, ordinateurs personnels, téléphones mobiles, etc) contraignent les diffuseurs à investir beaucoup de temps et de moyens pour être en mesure de fournir une qualité de vidéo optimale quel que soit le contexte. En effet, la compression vidéo conventionnelle (aussi appelée codage monocouche) est incapable d’adapter la résolution et le débit du flux après encodage en fonction des capacités du réseau et du dispositif de lecture. Chaque source vidéo est alors encodée en autant de versions qu’il existe de cibles à adresser. D’importantes pertes s’ensuivent, tant du point de vue de l’espace de stockage nécessaire pour entreposer tous ces flux, que du point de vue de la surcharge des réseaux occasionnée par la diffusion de ce volume important d’informations. Le codage vidéo scalable a été développé en réponse à ce besoin d’adaptation des contenus aux différents contextes de diffusion. Un flux vidéo unique est encodé, contentant plusieurs couches de résolutions et de qualités différentes. Les couches sont codées les unes par rapport aux autres, de manière à exploiter les redondances présentes entre ces différentes versions du flux. Le codage scalable permet alors d’adapter les caractéristiques de la vidéo au moment même de la transmission de la vidéo, en choisissant quelles sont les parties du flux à envoyer en fonction des capacités de la cible.
Indépendamment des problèmes d’adaptation des flux encodés aux capacités des cibles de lecture, les variations du débit de données en sortie de l’encodage peuvent compliquer la transmission sur des canaux de communication. Le dépassement des capacités de transfert d’un canal cause en effet des interruptions dans la lecture de la vidéo, car l’intégralité des données ne peut être transmise à temps. À l’opposé, un débit trop faible ne permet pas de conserver une quantité d’informations suffisante et pénalise la qualité du flux décodé.
MPEG-4 AVC/H.264
Le standard MPEG-4/H.264 est un projet développé conjointement par deux organismes de normalisation : le ITU-T Video Coding Expert Group (VCEG) et le ISO/IEC Motion Picture Expert Group (MPEG). L’objectif de ce standard est de fournir une compression vidéo efficace et une structure adaptée à son transport sur des réseaux de communications. Il introduit des outils de codage outrepassant amplement les performances des standards précédents comme MPEG-2 [34] ou MPEG-4 Partie 2 [27], ainsi qu’un module d’adaptation au réseau rendant plus robuste sa transmission sur des canaux bruités.
Il existe un ensemble de documents officiels ainsi que plusieurs ouvrages et publications décrivant le standard de manière exhaustive [68, 81]. nous présentons les principes du codage MPEG-4 AVC/H.264 tout en nous attardant sur les aspects qui présentent un intérêt pour la régulation de débit, qui fait l’objet de cette thèse.
Structure de l’encodeur MPEG-4 AVC/H.264
L’encodeur MPEG64 AVC/H.264 utilise un schéma de codage hybride . Les modules de prédiction, de transformée, de quantification et de codage entropique sont décrits dans la suite du chapitre. À la fin du processus de codage, le flux compressé est segmenté et converti en unités NAL (Network Abstraction Layer ) pour faciliter sa transmission sous forme de paquets de données [68]. Chaque unité NAL est composée d’une séquence de bits correspondant aux données vidéo, encapsulées avec des renseignements relatifs au contenu de l’unité NAL et les paramètres nécessaires pour le décodage. Ces informations peuvent être utilisées pour la synchronisation du flux avec des pistes audio ou des informations complémentaires telles que le sous-titrage. Dans le cadre de la vidéo scalable, elles sont notamment utilisées pour faciliter le changement entre les différentes couches.
Macroblocs et codage prédictif
La prédiction spatio-temporelle est un mécanisme largement utilisé, tant dans le codage des images fixes (comme le standard JPEG [29]) que dans le codage des vidéos (MPEG-2 à MPEG-4 etc). Elle permet d’enlever une grande partie de la redondance dans les données en ne codant que les différences entre des zones proches. Comme ses prédécesseurs, la norme MPEG-4 AVC/H.264 utilise le macrobloc comme unité de base. Les images sont divisées en blocs de taille variable, en fonction de la complexité du mouvement à représenter. Ces blocs sont ensuite prédits les uns par rapport aux autres, grâce à deux types de prédiction. La prédiction spatiale ou intra image permet de prédire un macrobloc par rapport aux macroblocs voisins déjà codés dans la même image. La prédiction temporelle ou inter image permet quant à elle de prédire le mouvement d’un macrobloc par rapport à une ou plusieurs images de référence. La prédiction est obtenue en soustrayant le bloc prédicteur au bloc prédit. Le signal résidu produit est ensuite analysé pour trouver la prédiction la plus efficace parmi plusieurs modes disponibles. La prédiction est effectuée sur des macroblocs de 16 × 16 pixels, et peut être affinée sur des blocs 8 × 8 ou même 4 × 4 si aucun autre mode satisfaisant n’est trouvé. Des blocs rectangulaires de 16 × 8, 8 × 8, 8 × 4 et 4 × 4 pixels peuvent également être utilisés dans la prédiction temporelle pour s’adapter à certaines zones de l’image (notamment les zones de forts contours ou de forte texture).
Le signal résidu de la prédiction subit ensuite un ensemble de traitements visant à en retirer autant de redondances que possible. L’étape de prédiction retire en effet une partie de la redondance statistique présente dans les données, mais pas la totalité. Pour enlever davantage de redondance, les résidus de prédiction sont passés dans le domaine fréquentiel par l’étape de transformée.
Transformée
MPEG-4 AVC/H.264 utilise plusieurs types de transformée en fonction du type de macrobloc à coder [68]. Ils sont tous basés sur une transformée entière en cosinus discret (Integer Discrete Cosine Transform : IDCT), qui permet d’obtenir une représentation décorrélée et compacte des données. Elle décompose en effet le signal en composantes fréquentielles indépendantes les unes des autres et dont les principales valeurs sont concentrées sur un petit nombre de coefficients. L’étape de transformée est suivie de l’étape de quantification, qui introduit une perte d’informations dans les données d’origine dans le but d’atteindre des taux de compression plus élevés. Ces deux étapes du codage sont relativement coûteuses en termes de calculs. Elles peuvent être couplées l’une à l’autre de manière à limiter le nombre d’opérations binaires nécessaires .
Quantification
La quantification constitue une étape très importante du processus d’encodage vis à vis de notre problématique, car elle permet de faire varier le débit nécessaire pour coder le signal en ajustant la quantité de données perdues. Nous décrivons donc cette étape de manière plus détaillée, afin de mettre en évidence le point d’ancrage de la régulation de débit dans le processus d’encodage. Lors de l’étape de quantification, l’ensemble des valeurs possibles du signal d’entrée est découpé en intervalles d’une longueur qui dépend de la précision désirée. Une table représentant un index de ces intervalles est ensuite construite, et chaque valeur du signal est codée par l’indice de l’intervalle auquel elle appartient. En modulant la taille des intervalles, il est possible de contrôler la quantité d’informations perdues lors de la quantification.
Le standard MPEG-4 AVC/H.264 utilise un mécanisme de quantification scalaire [68]. Dans l’encodeur de référence, la quantification est directement couplée avec la transformée pour minimiser le nombre de multiplications à effectuer. Ainsi, la quasi totalité de l’opération de transformation et de quantification peut être réalisée en n’utilisant que des additions et des décalages binaires, ce qui diminue considérablement la complexité des calculs.
L’opération de quantification conduit à l’annulation des coefficients dont les valeurs ne sont pas significatives dans le signal transformé. Dans MPEG-4 AVC/H.264, un coefficient transformé Yij est codé comme un zéro si sa valeur se trouve en dessous d’un seuil qui caractérise la zone morte du mécanisme de quantification. Pour prendre en compte des aspects psycho-visuels liés à la fois à la prédiction et à la transformée, ce seuil dépend de la valeur du QP, de la position du coefficient dans le macrobloc et du mode de prédiction (intra ou inter) utilisés :
– plus la valeur du QP est grande, plus le seuil en dessous duquel un coefficient est annulé est élevé ;
– les coefficients situés près du coin supérieur gauche du bloc transformé représentent les basses fréquences, qui contiennent les structures principales du signal d’origine ; ils sont moins quantifiés que les coefficients proches du coin inférieur droit du bloc qui représentent les hautes fréquences, qui contiennent quant à elles des détails moins visibles ;
– les prédictions intra et inter n’ont pas la même efficacité, donc les coefficients des blocs intra sont quantifiés moins fortement que ceux des blocs inter.
L’étape de quantification revêt une importance supplémentaire car elle est impliquée dans le processus de prédiction spatio-temporelle décrit plus tôt. En effet, la prédiction se base sur la version reconstruite du macrobloc de référence, obtenue en effectuant les opérations inverses de quantification, de transformée et de prédiction. La présence de cette boucle dans le processus d’encodage, souvent appelée le dilemme de la poule et de l’œuf, aura une influence primordiale sur l’efficacité de la régulation de débit et sera abordée dans la suite de notre étude bibliographique.
Codage entropique
Après la quantification, l’ensemble des données du flux est encodé à l’aide de codes binaires à longueur variable. Ces codes prennent en compte la probabilité d’apparition d’un motif dans le flux pour adapter le nombre de bits nécessaire pour le coder. MPEG4 AVC/H.264 fournit deux types de codage binaire : les codes à longueur variable avec adaptation de contexte (CAVLC) et le codage binaire arithmétique avec adaptation de contexte (CABAC) [53]. Ces deux techniques permettent de coder plus efficacement les signaux restant à la fin du processus d’encodage. Le CAVLC est basé sur des outils assez simples et jouit d’une relative rapidité de calculs. Le CABAC repose quant à lui sur des outils plus avancés qui permettent d’obtenir des performances 10 à 20% supérieures au CAVLC. Sa complexité algorithmique est cependant plus élevée et peut ralentir le processus d’encodage. Le flux binaire ainsi produit peut enfin être transmis sur un canal de communication pour un décodage immédiat ou entreposé sur un média de stockage pour une lecture différée.
Types d’images et groupes d’images hiérarchiques
Dans MPEG-4 AVC/H.264, trois types d’images sont différenciés en fonction des outils qu’ils utilisent. Les images Intra (ou images I) n’utilisent que la prédiction spatiale. Elles permettent notamment d’initialiser le codage d’une séquence car elles sont codées indépendamment des autres images. Les images Inter (ou images P) utilisent la prédiction intra et inter image, et exploitent les redondances temporelles dans les séquences d’images. Elles jouissent d’une meilleure efficacité de codage que les images I, mais le calcul de la prédiction inter-images est plus coûteux. Enfin, les images Bi-directionnelles (ou image B) utilisent un mécanisme de prédiction des macroblocs par rapport à deux images de référence. La prédiction est effectuée à l’aide d’une interpolation entre les deux images de référence, ce qui produit un signal résidu généralement très faible. Les images B ont une efficacité de codage encore supérieure à celle des images P, mais leur construction requiert une quantité supérieure de calculs. Les flux MPEG-4 AVC/H.264 sont découpés en Groupes d’Images (Groups Of Pictures, GOP). La structure des groupes d’images peut varier au long du flux pour s’adapter aux changements d’activité [9], ou rester constante pour limiter la quantité de calculs nécessaires. Une structure particulièrement intéressante est celle des GOP hiérarchiques . Des images B sont encodées en niveaux temporels successifs selon une structure pyramidale basée sur deux images P. Cette structure permet notamment d’adapter la fréquence temporelle de la séquence d’images, en ne décodant qu’une partie de la pyramide. Elle permet également d’obtenir un codage plus efficace des images B de haut niveau temporel, car les images de référence utilisées sont très proches, ce qui rend la prédiction temporelle plus précise.
À intervalles réguliers, l’image P au début du GOP est remplacée par une image I. Ce changement de structure permet de fournir des points d’accès dans le flux, étant donné que les images I peuvent être décodées indépendamment des autres images. Cet intervalle, appelé l’Intra Period, doit être un multiple de la taille du GOP .
|
Table des matières
Introduction
0.1 Contexte et problématique
0.2 Objectifs et motivations
0.2.1 Compromis entre performances et complexité algorithmique
0.2.2 Qualité d’image constante
0.2.3 Régulation de débit inter-couches
0.2.4 Travail envisagé
0.3 Organisation du document
I Étude Bibliographique
1 MPEG-4 AVC/H.264
1.1 Structure de l’encodeur MPEG-4 AVC/H.264
1.2 Macroblocs et codage prédictif
1.3 Transformée
1.4 Quantification
1.5 Codage entropique
1.6 Types d’images et groupes d’images hiérarchiques
1.7 Différents profils
1.8 Conclusion
2 MPEG-4 SVC
2.1 Scalabilité spatiale
2.2 Scalabilité en qualité
2.3 Scalabilité temporelle
2.4 Prédiction inter-couches
2.5 Scalabilité combinée
2.6 Conclusion
3 Régulation de débit
3.1 Problématique
3.2 Optimisation débit-distorsion
3.2.1 Optimisation Lagrangienne
3.2.2 Le dilemme de la poule et de l’œuf
3.3 Éléments d’un mécanisme de régulation de débit
3.3.1 Formulation des contraintes en fonction du contexte
3.3.2 Calcul de budget et stratégies de répartition
3.3.3 Différentes échelles de la régulation
3.3.4 Respect du budget
3.3.4.1 Recherche exhaustive
3.3.4.2 Relation entre le débit et le QP
3.3.5 Paramètres clés de la relation entre débit et QP
3.3.5.1 Entropie des résidus de prédiction
3.3.5.2 Macroblocs non codés
3.3.5.3 Données d’en-tête dans un macrobloc
3.3.6 Régulation de débit et qualité
3.3.6.1 Mesures objectives de qualité
3.3.6.2 Mesures perceptuelles de qualité
3.3.6.3 Minimisation des variations de la qualité
3.3.7 Gestion du buffer de transmission
3.4 Contextes applicatifs et contraintes supplémentaires
3.4.1 Optimisation complexité-performances
3.4.2 Scénarios à bas débit et temps réel
3.5 Le ρ-domaine, une approche intéressante
3.5.1 Relation entre ρ et le QP
3.5.2 Modèle de débit
3.5.3 Calcul du QP optimal
3.5.4 Au niveau image
3.5.5 Conclusion
3.6 Régulation de débit pour MPEG-4 SVC
3.7 Synthèse de l’étude bibliographique
3.7.1 Choix des contraintes appliquées
3.7.2 Régulation de débit niveau image
3.7.3 Validation d’un modèle de débit
3.7.4 Régulation de débit et qualité constante
3.7.5 Régulation à faible complexité algorithmique
3.7.6 Exploitation des informations inter-couches
II Régulation de débit pour MPEG-4 SVC
4 Validation du ρ-domaine pour MPEG-4 SVC
4.1 Relation entre ρ et le QP pour MPEG-4 SVC
4.2 Linéarité de la relation entre ρ et le débit pour MPEG-4 SVC
4.3 Conclusion
5 Mécanisme de contrôle de débit en deux passes pour MPEG-4 SVC
5.1 Problématique
5.2 Contraintes appliquées
5.3 Allocation de budget
5.3.1 Allocation de budget niveau GOP
5.3.2 Allocation de budget niveau image
5.4 Respect du budget
5.4.1 Passe d’initialisation
5.4.2 Calcul du QP optimal
5.4.3 Calcul de la valeur initiale du QP
5.4.4 Seconde passe d’encodage
5.5 Résultats expérimentaux
5.5.1 Précision de la régulation de débit
5.5.2 Interprétation des erreurs de contrôle
5.5.3 Influence de la taille des GOP
5.5.4 Qualité des flux reconstruits
5.5.5 Temps d’encodage
5.6 Conclusion
6 Régulation de débit et qualité constante
6.1 Qualité constante par GOP
6.2 Efficacité de codage des différents types et niveaux d’images
6.3 Mesure de l’efficacité de codage d’une image
6.4 Répartition du budget du GOP d’après l’efficacité de codage
6.5 Résultats expérimentaux
6.5.1 Comportement du débit au niveau des images
6.5.2 Atténuation des variations de la qualité
6.5.3 Évaluation visuelle du gain apporté sur la qualité
6.5.4 Influence de la prédiction inter-couches
6.5.5 Conclusion
7 Contrôle de débit en une passe pour MPEG-4 SVC 115
7.1 Initialisation du modèle de débit
7.2 Choix de l’image de référence pour le modèle de débit
7.3 Calcul du budget au niveau image
7.4 Résultats
7.4.1 En termes d’erreur de débit
7.4.2 En termes de qualité
7.4.3 En termes de temps d’encodage
7.5 Conclusion
8 Schémas avancés : travaux préliminaires
8.1 Poids d’images adaptatifs
8.1.1 Limites de la mesure d’efficacité de codage
8.1.2 Évolution du poids des types d’images
8.1.2.1 Choix de la fonction d’évolution des poids d’images
8.1.2.2 Adaptation de la vitesse d’évolution en fonction du niveau temporel
8.1.3 Conclusion
8.2 Exploitation des dépendances inter-couches
8.2.1 Comportements débit-distorsion similaires entre les couches
8.2.2 Problème d’échelle entre les couches
8.2.3 Choix du QP
8.2.4 Conclusion
Conclusion