Vous êtes sur la page 1sur 31

Présentation du Standard AVC :

Advanced Video Coding

Présentation réalisée par


Brahim Gaabab
14 Avril 2004
Plan
● Contexte
● Présentation générale
● Principes de codage
– Prédiction
– Transformée
– Quantification
Contexte
● ITU-T : H.263, H.263+ du groupe VCEG
● ISO : MPEG-2 et 4 du groupe MPEG
● En 1999, VCEG produit le draft H.26L
– >> Performances intéressantes
● En 2001, création du JVT (MPEG+VCEG)
– Mission : un standard international du H.26L
– Résultat : AVC (MPEG4 Part 10 ; H.264)
Présentation générale
● Approche de codage vidéo :
– Réutilisation des fonctions existantes (codage par
bloc, prédiction hybride, transformation)
– Modifications minimes dans chaque fonction
● Définition du syntaxe du flux codé et d'une
méthode de décodage
● Trois profils (baseline, extended, main)
– >> Interopérabilité croissante des codecs
Fonctions des codecs AVC

(Fn)
Cod. Adapt. Flux
(F'n-i) Prédicteur Transf. Quantif
Entrop. Réseaux
(UF'n)

(F'n) -1 -1
Filtre Transf. Quantif
Macro blocs, Slice, Slice Group
● Slice = suite de macro blocs
– Peuvent être décodées spéramment
– Appartiennent à la même image
● >> Image = suite de slices (au max 1)
Slice #1

Slice #2

Slice #3
Macro blocs, Slice, Slice Group
● Slice Group : suite de slice définit par un
modèle d'allocation des macro blocs (FMO)
Slice group #1

Slice group #2
Codage prédictif
● Exploiter la corrélation d'un signal pour le
comprimer
● Principe :
– Trouver une fonction qui prédit au mieux les
échantillons à coder à partir d'un voisinage
particulier, et
– Coder la différence entre la valeur prédite et la
valeur réelle, les paramètres de fonction et de
voisinage utilisé.
Prédiction Intra-1
● Corrélation du signal dans un voisinage
spatial réduit
● Voisinages utilisés dans une image
– Luma : blocs de 16x16 ou blocs de 4x4
– Chroma : deux blocs de 8x8 (Cb et Cr)
● 9 fonctions de prédicition
● Références de prédiction
– 13 échantillons pour les blocs 4x4
– 32 échantillons pour les blocs 16x16 ou 8x8
Prédiction Intra : exemple [5]
● Prédiction Intra pour un bloc luma 4x4

Macro bloc luma


Prédiction Intra : exemple [5]
● Prédiction Intra pour un bloc luma 4x4

Calcul de la
fonction
de prédiction
la plus
adéquate

Macro bloc luma


Prédiction inter-1
● Les signaux des images d'une même
séquence sont corrélées
● Prédiction inter :
– Estimation de mouvement pour chaque voisinage
– Compensation de mouvement dans chaque
voisinage
➔ Voisinages utilisés dans les références :
– Luma : blocs de 16x16, 8x16, ... 8x8, 4x8, ... 4x4
– Chroma : blocs de 8x8, 4x8, ... 4x4, 2x4, ..., 2x2
Prédiction inter-2
● Une image est décodée par la donnée de :
– La partition de ses macro blocs,
– Les références de l'estimation (16x16 ... 8x8),
– Le champ de mouvement,
– Le résidu de compensation de l'estimation.
● Dans une partition, le champ de mouvement
présente une corrélation
– Prédiction intra des vecteurs de mouvement
Prédiction inter-3
● Codage des macro blocs en mode Skip
– Aucune données n'est transmis par le codeur
– Décodage par estimation de mouvement
Transformée-1
● Transformée du résidu de prédicition
● Utilisation d'une transformée DCT-like
● La transformée et son inverse sont entières
● Trois types de transformées :
– 4x4 pour les coéff. des blocs luma et chroma
– 4x4 et 2x2 pour les coéff. DC luma et chroma
Quantification
● Ramener les valeurs des coéfficients à un ensemble
de valeurs prédéfinis
– >> Permet de comprimer les données, mais avec
perte de précision
● AVC définit 52 quantificateurs
– Le pas augmente de 12,5 % (0,625 .... 224)
● Un quantificateur est choisit pour chaque bloc
Codage entropique
● Comprimer les données :
– Coéfficients et vecteurs de mouvement
– Infos de contrôle
● Trois types de codage :
– UVLC (Universal VLC) pour les paramètres de
contrôle
– CAVLC (Context-Adaptive VLC) pour les
coéfficients et vecteurs de mouvement
– CABAC (Context-Adaptive Binary Arithmetic
Coding) pour les coéfficients et vecteurs de
mouvement
Filtrage de boucle-1
● Réduire la distortion aux bords des blocs
● Filtrage adaptatif selon :
– Le gradient de l'image à l'origine (évalué par QP)
– Le gradient actuel de l'image décodée
● 4 niveaux d'adaptation
– >> agit sur l'étendue et la puissance du filtre
● Filtrage appliqué aux signaux luma et
chroma
Filtrage de boucle-2
NAL-1
● Network Abstraction Layer : prendre en
compte le type de transport (paquet, stream)
– Efficacité d'utilisation de la bande passante
● Flux vidéo = série de NAL Units
● NAL Access Unit : série de NAL Units
permettant de décoder une image
– Encapsule des :
● Données pour le décodage de l'image
● Données rédondante pour la tolérance aux pertes
NAL-2
● Parameter Set (PS) : paramètres de contrôle
servant au décodeur
– Peu variables
● Retransmis par le codeur uniquement en
cas de changement
● Référencés dans chaque NAL Unit
– Gain en compression
Perfomances-1
● Tests conduits sur H.263++, AVC et MPEG-
4

Gains relatifs en bande passante [3]


Conclusion
● Nouveau standrad de codage d'images
– Réutilisation : fonctions principales de codage
– Innovation : CABAC, quantif., trans.
● Taux de compression importants ; mais
● Complexité des codecs
Bibliographie
● [1]. F. Loras, “H.264/MPEG'4 AVC un Nouveau Standard de
Compression Vidéo,” Taima'03.
● [2]. T. Wiegand et al, “Overview of the H.264/AVC Video
Coding Standard,” IEEE Transactions, Julliet 2003.
● [3]. R. Schäfer, T.Wiegand, H.Schwarz, “The emerging
H.264/AVC Standard,” Heinrich Hertz Institue, Berlin,
Germany, Janvier 2003.
● [4]. Harmonic, “AVC + AAC, The Next Generation of
Compession,” White Paper.
● [5]. Vcodex AVC Tutorial Series (http://www.vcodex.com).
Annexes
Prédiction inter : exemple-1 [4]

Macro bloc de luma


Transformée : exemple-1

1 1 1 1
2 1 -1 -2
1 -1 -1 1
1 -2 2 -1

Transformée
des coéfficients 4x4

Bloc de luma

Macro bloc de luma


Transformée : exemple-2

X X X X

X X X X

X X X X xxxx
Transformée xxxx
des coéfficients 16x16 x x x x
X X X X xxxx
Coéff. DC du macro bloc
Macro bloc luma codé en mode 4x4
Types des slices-1
● Trames P, I, B, mais :
– Plus de corrélation entre l'odre de codage et de
référence des images et l'ordre d'affichage
– >> prédiction plus intéressante
● Trames SP² :
– Servent à coder la transition entre deux flux vidéo,
– Remplacent en ce terme les trames I, couteuses
en débit
Macro blocs, Slice, Slice Group
● Vidéo = Séquence d'images
● Image :
– La trame complète, ou
– Les deux champs pris séparamment.
● Image = suite de macro blocs
● Macro bloc :
– Un bloc 16x16 échantillons luma, et
– Deux blocs 8x8 échantillons chroma (Cb et Cr).
Codage prédicif-1

(Fn)
Cod. Adapt. Flux
(F'n-i) Prédicteur Transf. Quantif
Entrop. Réseaux
(UF'n)

(F'n) -1 -1
Filtre Transf. Quantif

Vous aimerez peut-être aussi