• Aucun résultat trouvé

Fonctionnalités supportés par chacun des prols de H.264/AVC

A.3.2 La prédiction Intra

Contrairement aux autres normes, cette norme apporte une prédiction Intra [Ric03b]. Si un macrobloc ou un bloc est à coder en Intra, une prédiction spatiale est eectuée. Pour un macrobloc 16×16, 4 modes sont disponibles. Et pour les blocs 4×4 (pas sur les blocs 8×8) 9 modes sont possibles.

Modes de prédiction 4×4

Cette prédiction se base sur les pixels au dessus et à gauche du bloc à coder. Cependant, ces pixels doivent avoir été encodés et décodés (mais pas ltrés) et appartenir au même "slice" pour pouvoir être utilisés.

Les 9 modes potentiels sont les 9 directions possibles pour la prédiction (cf g. A.9).

Fig. A.9  Les 9 modes de prédiction 4×4 Intra [Ric03b]

Pour les modes 3 à 8, la prédiction est une moyenne pondérée des pixels A à M.

Il est possible que tous les pixels ne soient pas disponibles dans le même slice. Pour conserver un maximum de exibilité, il est alors possible de modier ces modes.

Le mode DC (0) s'adapte suivant les pixels disponibles.

Les autres modes (1 à 8) ne peuvent être utilisés que s'il manque juste E, F, G et H auquel cas ces valeurs sont recopiées de D.

Le codeur choisit pour chacun des blocs le mode qui minimise la diérence entre la prédiction et le bloc, en s'appuyant sur les modes des blocs voisins.

Modes de prédiction 16×16

Il est aussi possible d'eectuer la prédiction Intra sur des macroblocs 16×16. 4 modes sont possibles (cf g. A.10) :

Fig. A.10  Les 4 modes de prédiction 16×16 Intra [Ric03b]

A.3.3 L'estimation-compensation en mouvement

L'estimation-compensation en mouvement [Ric03a] reste basée macroblocs, mais elle a été beaucoup améliorée grâce à la précision au 1/4 pixel (comme MPEG-4), à l'utilisation de réfé- rences multiples (comme H.263++) et à une grande variété de tailles et de formes de macroblocs. En eet, chaque macrobloc 16×16 peut être divisé de 4 façons : 16×16, 16×8, 8×16 et 8×8, ce sont des partitions de macroblocs (cf g. A.11). Si la partition choisie est 8×8, alors cette partition peut être de nouveau divisée de 4 façons : 8×8, 8×4, 4×8 et 4×4, ce sont les sous-partitions de macroblocs (cf g. A.11).

Fig. A.11  Le partitionnement et sous-partitionnement des macroblocs [SWS03]

Chacune de ces partitions ou sous-partitions de macroblocs nécessite un vecteur de mouve- ment. Les partitions seront donc utilisées pour les zones homogènes, et les sous-partitions pour les zones de détails. La sélection du partitionnement des macroblocs se fait par optimisation du rapport débit-distorsion (minimum de débit pour une qualité donnée ou vice-versa).

Ces vecteurs de mouvement sont estimés au 1/4 pixel à partir de macroblocs (ou partitions) de référence de même taille. Les images de référence utilisées ici peuvent être multiples comme dans H.263++ (Annexe U), et ce jusqu'à 5 images de référence. On a donc aussi à transmettre l'indice de la référence. Pour obtenir cette précision, les demi-pixels sont d'abord interpolés à partir des voisins entiers à l'aide d'un ltre FIR d'ordre 6. Ensuite, lorsque tous les demi-pixels

ont été calculés, les quart de pixels sont interpolés bilinéairement à partir des pixels entiers et des demi. Ces vecteurs de mouvement peuvent sortir de l'image comme dans H.263 (Annexe D), les pixels hors de l'image étant recopiés par symétrie.

De plus, les vecteurs mouvement sont souvent très corrélés avec ceux du voisinage. Ils sont donc prédits (pour chaque composante) comme étant la médiane des vecteurs mouvement des partitions au dessus, de gauche et de la diagonale droite en haut. Seule la diérence entre le vecteur réel et le vecteur prédit est transmise.

Pour les chrominances, le même travail est eectué. Puisque le format utilisé par la norme H.264/AVC est le 4 :2 :0, les chrominances sont deux fois plus petites que la luminance. Le même partitionnement que pour les luminances est conservé, mais divisé par deux (un partitionnement 8×16 de la luminance correspondra à un 4×8 pour les chrominances, un 8×4 à un 4×2,. . .). Les vecteurs mouvement des luminances sont divisés par deux et appliqués directement aux chrominances impliquant une précision au 1/8 pixel.

A.3.4 La transformation

Comme on a pu le voir précédemment, de nouvelles tailles de macroblocs ont été introduites dans la norme H.264/AVC. Ceci implique que la transformation a aussi due être modiée [Ric03d] [Wie03] [MHKK03] pour pouvoir s'adapter à ces nouvelles tailles de macroblocs.

En eet, la transformation est appliquée sur des blocs 4×4 (unité de codage) et non plus sur des blocs 8×8 comme les normes précédentes. De plus, ces normes antérieures utilisaient la DCT ottante, c'est-à-dire la DCT calculée en réel avec un arrondi à l'entier le plus proche. La norme H.264/AVC utilise quant à elle une DCT entière, c'est-à-dire une approximation de la DCT mais calculée en entier. Cette norme utilise trois types de transformation dépendant des données à traiter.

La première transformation permet de traiter les coecients résiduels des blocs 4×4, qu'ils soient Intra ou Inter. Cette transformation 4×4 est entière et sans multiplication, elle n'est réalisée qu'avec des additions et des décalages. Ceci implique qu'elle est peu complexe. Cette transformation est matricielle et s'écrit de la forme :

Y = H . X . HT avec H =     1 1 1 1 2 1 −1 −2 1 −1 −1 1 1 −2 2 −1     (A.1) La transformation inverse est obtenue simplement par :

X = Hinv. Y . HinvT avec Hinv =

    1 1 1 1/2 1 1/2 −1 −1 1 −1/2 −1 1 1 −1 1 −1/2     (A.2)

La seconde transformation s'applique aux coecients DC de macroblocs non partitionnés et codés en Intra. Tous les sous-blocs 4×4 sont d'abord codés en utilisant la DCT décrite précé- demment (cf A.1), puis les coecients DC de tous ces blocs (WDC bloc 4×4 contenant tous ces

DC) sont codés en utilisant une transformation de Hadamard dénie comme suit : YDC = HDC. WDC. HDCT avec HDC =     1 1 1 1 1 1 −1 −1 1 −1 −1 1 1 −1 1 −1     (A.3) La transformation inverse est, dans ce cas, identique à la transformation directe.

La troisième transformation correspond aux coecients DC des chrominances. Chaque bloc 4×4 de chrominance (Cr et Cb) associé à un bloc 16×16 de luminance est transformé en utilisant la première transformation (cf (A.1)). Et, de même que pour les coecients DC des macroblocs non-partitionnés Intra, les coecients DC des chrominances sont regroupés en blocs 2×2 puis transformés en utilisant : YchDC = HchDC. WchDC. HchDCT avec HchDC=  1 1 1 −1  (A.4) La transformation inverse est, dans ce cas aussi, identique à la transformation directe.

Et, de même que pour les normes précédentes, ces blocs transformés sont ensuite quantiés pour réduire la quantité d'information qu'ils contiennent.

A.3.5 La quantication

H.264/AVC utilise une quantication scalaire [Ric03d] [MHKK03] comme les normes précé- dentes, mais elle dière des précédentes par le fait qu'elle ne soit pas linéaire. En eet, le pas de quantication Qstep est incrémenté de 12.5% à chaque pas. Il en existe 52 valeurs indexées par QP (cf Tab.A.5). Cet incrément de 12.5% se traduit aussi par Qstep double chaque fois que QP est incrémenté de 6.

QP 0 1 2 3 4 5 . . . 10 . . . 18 . . . 24 . . . 51

Qstep 0.625 0.6875 0.8125 0.875 1 1.125 2 5 10 224