AccueilđŸ‡«đŸ‡·Chercher

Inter-trame

Une inter-trame ou inter frame ou image inter dĂ©signe dans la compression vidĂ©o une image ou une trame appartenant Ă  un flux qui a Ă©tĂ© codĂ© Ă  partir d'un algorithme de prĂ©diction inter-trame. Elle dĂ©pend des images prĂ©cĂ©demment codĂ©es afin de prĂ©dire la position des macroblocs d'origine. L'objectif de cet algorithme est de dĂ©finir un vecteur de mouvement qui traduit le dĂ©placement d'un bloc dans une image dĂ©jĂ  codĂ©e dite de rĂ©fĂ©rence et sa position dans l'image courante. Cette prĂ©diction est aussi appelĂ©e prĂ©diction temporelle. Elle a pour but de profiter des redondances temporelles entre les images ou trames voisines et ainsi obtenir un meilleur taux de compression. Elle se diffĂ©rencie de l'intra-trame qui est codĂ©e Ă  partir d'un algorithme de prĂ©diction spatiale. L'avantage de la prĂ©diction inter est que pour coder un objet en mouvement, il suffit de trouver un bloc existant dans une image dĂ©jĂ  codĂ©e qui ressemble au bloc courant et de coder la diffĂ©rence des valeurs des composantes entre ces deux blocs ainsi que son vecteur alors que pour la prĂ©diction intra, chaque macrobloc de l'image courante doit ĂȘtre codĂ©e Ă  partir de la texture de leurs voisins qui peut varier assez facilement.

Prédiction Inter-trame

Pour ĂȘtre codĂ©e, une image est divisĂ©e en macroblocs (blocs de taille 16x16 pixels). Afin d'Ă©viter de coder directement la valeur des pixels en brut, chaque macrobloc est prĂ©dit Ă  partir soit de leur voisinage comme c'est le cas des prĂ©dictions intra-trames, soit Ă  partir des images de rĂ©fĂ©rences (cas de l'inter-trame). Le codage en inter consiste Ă  trouver un bloc similaire au bloc courant sur une image de rĂ©fĂ©rence. Ce processus est rĂ©alisĂ© par un algorithme de Block-matching. Si l'encodeur rĂ©ussit Ă  trouver un tel bloc, le vecteur reliant les deux blocs que l'on appelle vecteur de mouvement ((en)motion vector) sera enregistrĂ© et la diffĂ©rence entre ce vecteur et le vecteur prĂ©dit sera codĂ©e. Ce vecteur prĂ©dit est dĂ©fini par la norme et est fonction des vecteurs des macroblocs voisins dĂ©jĂ  codĂ©s. Le processus calcule ensuite l'erreur de prĂ©diction c'est-Ă -dire la diffĂ©rence de valeur des composantes de luminance et de chrominance entre le bloc prĂ©dit dans l'image de rĂ©fĂ©rence et le bloc d'origine, aussi appelĂ©e bloc rĂ©siduel. Ce dernier sera codĂ© dans le flux binaire aprĂšs des Ă©tapes de transformĂ©e et de quantification. En codage vidĂ©o, cette Ă©tape de recherche de vecteur est appelĂ©e estimation de mouvement et celle du calcul des diffĂ©rences est la compensation de mouvement.

D'une façon schématique :

Vecteur de mouvement - Vecteur prĂ©dit ⇒ Vecteur diffĂ©rentiel qui sera codĂ©.
Bloc ciblĂ© - Bloc courant            ⇒ Bloc rĂ©siduel qui sera transformĂ©, quantifiĂ© et codĂ©.

L'image suivante permet d'illustrer le processus de prédiction inter :

Processus de prédiction Inter-trame. Dans ce cas, il y a un changement de luminance entre le bloc de référence et le bloc à coder : il s'agit de l'erreur de prédiction de ce bloc.

Du point de vue du décodeur, le processus n'a besoin que du bloc résiduel et du vecteur afin de rétablir les valeurs du macrobloc. En effet, les images de référence sont également décodées antérieurement et le vecteur prédit est connu puisque sa définition est connue par la norme. Le bloc décodé obtenu est différent du bloc d'origine étant donné qu'il s'agit d'une compression avec perte due à la quantification.

D'une façon schématique :

Vecteur prĂ©dit + Vecteur diffĂ©rentiel ⇒ Vecteur de mouvement Ă  appliquer dans l'image de rĂ©fĂ©rence.
Bloc ciblĂ© + Bloc rĂ©siduel     ⇒ Bloc dĂ©codĂ©.

Ce type de prĂ©diction a des avantages et des inconvĂ©nients. Si l'algorithme est capable de trouver un bloc avec des valeurs de composantes trĂšs proches du bloc courant, l'erreur de prĂ©diction sera petite et donc une fois transformĂ© et compressĂ©, la taille de l'ensemble "vecteur de mouvement et bloc rĂ©siduel" sera plus faible que celle du bloc courant non compressĂ©. À l'inverse, si l'estimation de mouvement ne trouve pas de bloc convenable, l'erreur de prĂ©diction sera importante et le flux codĂ© prendra une taille plus significative que celle du bloc courant non compressĂ©. Dans ce dernier cas, l'encodeur choisit un codage brut de ce bloc. Pour rĂ©sumer, plus la prĂ©diction est bonne, plus la diffĂ©rence est minimale et donc meilleure sera la compression.

Cette technique de prĂ©diction est limitĂ©e car elle ne peut pas servir Ă  compresser toute une vidĂ©o Ă  elle seule. Si le bloc pointĂ© par le vecteur de mouvement dans une trame de rĂ©fĂ©rence a Ă©tĂ© aussi codĂ© Ă  partir d'un mode de prĂ©diction inter-trame, les erreurs faites concernant son codage seront Ă©galement propagĂ©es sur le prochain bloc. En d'autres termes, si toutes les images Ă©taient codĂ©es avec seulement cette technique, il n'y aurait aucun moyen pour le dĂ©codeur de synchroniser le flux vidĂ©o car il serait impossible d'obtenir les images de rĂ©fĂ©rence. C'est pourquoi, il est nĂ©cessaire de coder certaines images indĂ©pendamment du temps comme c'est le cas des images I appelĂ©es aussi intra frames ou I-trames qui ne sont codĂ©es qu'Ă  partir de leur contenu avec un algorithme de prĂ©diction spatiale et qui n'ont pas besoin de donnĂ©es complĂ©mentaires pour ĂȘtre dĂ©codĂ©es. À partir de ces images fiables, il sera alors possible de dĂ©coder les images de rĂ©fĂ©rence.

Structure d'un Group Of Pictures (GOP)

Dans plusieurs codecs, il est défini deux types de trame inter : images P (P-frames) et images B (B-frames). Avec les I-frames, ces trois types d'images composent un groupe d'image, alias GOP ((en) Group Of Pictures), qui est répété périodiquement lors d'un codage. Un GOP est composé d'une image I et contient généralement plusieurs images P et B, ce qui signifie qu'une seule image I permet de décoder tout un GOP. La synchronisation du décodage est réalisée grùce à la périodicité des images I dans le flux.

Une des structures typiques d'un GOP est IBBPBBP... L'image I est utilisée pour prédire la premiÚre image P puis à partir de ces deux images, le processus prédit les deux premiÚres images B. La seconde image P est prédite à partir de la premiÚre image P et les deux images B comprises entre ces deux images seront les suivantes. L'image suivante illustre ce type de GOP :

Exemple d'une structure de Group of Pictures

Afin de pouvoir prĂ©dire les images, il est nĂ©cessaire de changer l'ordre des images Ă  coder. C'est pourquoi durant un codage, un sĂ©quenceur Ă©tablit Ă  l'avance le type des images en connaissant la structure du GOP et change l'ordre des images Ă  coder afin d'obtenir toutes les images de rĂ©fĂ©rence. Dans cet exemple, l'ordre de visualisation est I B1 B2 p. 1 B3 B4 p. 2 mais l'ordre de codage est I p. 1 B1 B2 p. 2 B3 B4. Étant donnĂ© que le GOP a besoin d'ĂȘtre totalement dĂ©codĂ© pour ĂȘtre visible, il est nĂ©cessaire de prĂ©voir un temps de retard entre le dĂ©codage et la sortie d'une image Ă  l'Ă©cran.

Types de trames inter

Les trames inter sont des types d'images ou de trame qui sont dĂ©pendantes d'images dites de rĂ©fĂ©rence pour ĂȘtre dĂ©codĂ©es. La diffĂ©rence entre les P-frames et les B-frames peuvent se rĂ©sumer aux images de rĂ©fĂ©rence utilisĂ©es par l'algorithme de prĂ©diction composĂ© de l'estimation de mouvement et de la compensation de mouvement.

Une séquence en image, constitués de deux images clés, une image P prédite à partir d'une image passée et une image prédite de façon bidirectionnelle (image B).

P-frame (image P)

Les P-frames sont des images prédites en avant (forward), à partir d'une image passée. La prédiction est réalisée à partir d'une image située plus tÎt dans le temps, principalement une image I, et qui nécessite moins d'informations de codage (environ 50 % de gain comparé à la taille d'une image I). Les informations à coder concernent les vecteurs de mouvement et la correction de prédiction traduite par les coefficients transformés du bloc résiduel.

B-frame (image B)

Les B-frames sont dĂ©finies comme des images prĂ©dites de façon bidirectionnelles, c'est-Ă -dire qu'elles sont prĂ©dites Ă  partir d'une image future et d'une image passĂ©e. Ce type de prĂ©diction nĂ©cessite Ă©galement moins d'informations de codage que les P-frames car elles peuvent ĂȘtre prĂ©dites et interpolĂ©es Ă  partir de deux images de rĂ©fĂ©rence qui l'encadrent temporellement. Tout comme les P-frames, les B-frames ont besoin des informations du vecteur de mouvement et du bloc rĂ©siduel ainsi que des images de rĂ©fĂ©rence pour ĂȘtre dĂ©codĂ©es. Afin d'Ă©viter une trop grande propagation d'erreur, les images B ne sont gĂ©nĂ©ralement pas utilisĂ©es en tant qu'image de rĂ©fĂ©rence.

Améliorations de prédiction dans la norme H.264

L'une des améliorations majeures de la norme H.264 concerne la prédiction inter-trame. Elle permet :

  • Un partitionnement de bloc plus flexible pour l'estimation de mouvement.
  • Une compensation de mouvement avec une rĂ©solution jusqu'au quart de pixel
  • Un plus grand nombre d'image de rĂ©fĂ©rence (Multiple references)
  • L'amĂ©lioration du mode de codage Direct/Skip pour macrobloc.

Partitionnement de bloc de H.264

Pour rĂ©aliser une compensation de mouvement prĂ©cise et efficace, chaque macrobloc de luminance peut ĂȘtre divisĂ© en sous-blocs (voir figure ci-dessous). Dans la norme MPEG-2, les partitionnements sont au nombre de 4 : 1 bloc de 16x16 pixels, 2 blocs de 16x8 pixels, 2 blocs de 8x16 pixels ou 4 blocs de 8x8 pixels. Chaque partitionnement est associĂ© Ă  un mode de codage inter. Pour chaque mode, l'estimation de mouvement trouve le meilleur vecteur de mouvement pour le sous-bloc qui pointe sur un bloc de mĂȘme taille dans l'image de rĂ©fĂ©rence et la compensation calcule une approximation du coĂ»t de codage du macrobloc pour le mode donnĂ©. Une fois tous les modes rĂ©alisĂ©s, l'algorithme choisit le mode de partitionnement qui a donnĂ© le coĂ»t le plus faible et effectue le codage dĂ©finitif du macrobloc.

Dans la norme H.264, le nombre de modes de partitionnement augmente avec la possibilité de diviser un bloc 8x8 en sous-blocs de dimension 4x8 pixels, 8x4 pixels ou 4x4 pixels.

Précision au quart de pixel

Afin d'ĂȘtre plus prĂ©cis dans la recherche du vecteur de mouvement, l'image de rĂ©fĂ©rence est agrandie pour avoir une rĂ©solution plus importante. Au lieu de travailler avec une rĂ©solution au pixel prĂšs, les coordonnĂ©es du vecteur peuvent ĂȘtre dĂ©finies Ă  un nombre dĂ©cimal de pixel. La probabilitĂ© d'obtenir un bloc similaire au bloc courant est plus grande et donc la recherche est beaucoup plus efficace. Dans la norme MPEG-2, la prĂ©cision du vecteur peut atteindre le demi-pixel. En H.264, la prĂ©cision au quart de pixel peut ĂȘtre choisie pour chaque mode de prĂ©diction inter. Pour utiliser des valeurs de sous-pixels qui n'existent pas, des techniques d'interpolation sont utilisĂ©es. L'interpolation pour obtenir des demi-pixels consiste Ă  appliquer un filtre de longueur 6 sur le voisinage du pixel courant. Cette premiĂšre opĂ©ration permet le calcul des valeurs au quart de pixel qui est rĂ©alisĂ© par interpolation bilinĂ©aire dans la norme H.264. La figure ci-dessous montre les diffĂ©rents pixels qui doivent calculĂ©s afin d'avoir une prĂ©cision au quart de pixel.

Les références multiples

Ces rĂ©fĂ©rences multiples concernent l'Ă©tape d'estimation de mouvement. Elle permet de trouver quelle est la meilleure image de rĂ©fĂ©rence parmi les images prĂ©cĂ©demment codĂ©es pour chaque partition ou sous-partition. Il peut donc y avoir plusieurs images de rĂ©fĂ©rence utilisĂ©es pour coder un macrobloc. S'il s'agit d'une image P, le nombre d'images de rĂ©fĂ©rence passĂ©es peut aller jusqu'Ă  4, c'est-Ă -dire que l'algorithme de recherche enregistre un vecteur pour chaque image de rĂ©fĂ©rence pour un bloc courant et calcule le coĂ»t de codage. AprĂšs avoir bouclĂ© sur toutes les rĂ©fĂ©rences, il compare et choisit le coĂ»t le plus faible. L'information concernant l'image de rĂ©fĂ©rence est alors codĂ©e. En ce qui concerne les images B, le nombre de rĂ©fĂ©rences peut aussi augmenter mais seulement dans les images passĂ©es, donc si on choisit deux images de rĂ©fĂ©rence, le processus utilisera l'image passĂ©e et l'image future les plus proches. Si on choisit quatre images, l'image future sera utilisĂ©e ainsi que les trois images 'passĂ©es les plus proches de l'image courante. Dans la norme, les images de rĂ©fĂ©rence sont gardĂ©es dans des buffers appelĂ©s List0 pour les images passĂ©es et List1 pour les images futures. MĂȘme s'il existe un coĂ»t de codage du aux images de rĂ©fĂ©rences, cette technique permet d'augmenter la qualitĂ© de l'image et une meilleure compression, l'erreur de prĂ©diction Ă©tant gĂ©nĂ©ralement moins importante.

Amélioration du mode Direct/Skip

Les modes Skip et Direct sont fréquemment utilisés spécialement avec les images B. Ils réduisent significativement le nombre de bits à coder. Si ce mode est choisi par l'algorithme, aucune information complémentaire ne sera codée, aucun vecteur de mouvement et aucun bloc de résidus. Dans ce cas, le décodeur déduit le vecteur de prédiction défini à partir des macroblocs voisins déjà codés. L'encodeur enregistre seulement l'information du mode de prédiction correspondant au macrobloc skip.

Dans la norme H.264, il existe deux maniÚres de déduire le mouvement :

  • Mode direct temporel :

Il utilise le vecteur de mouvement du bloc Ă  partir de l'image de la List1, situĂ© Ă  la mĂȘme position pour dĂ©duire le vecteur de mouvement du bloc courant. Le bloc du buffer List1 utilise le bloc de List0 comme rĂ©fĂ©rence.

  • Mode direct spatial :

Il prĂ©dit le mouvement Ă  partir des macroblocs voisins dans l'image courante. Le critĂšre possible pourrait ĂȘtre de copier le vecteur de mouvement Ă  partir du bloc voisin. Ces modes sont utilisĂ©s dans des zones uniformes de l'image oĂč il n'y a pas beaucoup de mouvement.

Dans la figure ci-dessus, les blocs roses sont des blocs skippés, utilisant le mode Direct/Skip. Dans cet exemple, la plupart des macroblocs de l'image B ont été codés avec ce mode.

Informations supplémentaires

Bien que l'utilisation du terme frame (trame) soit commun dans l'usage informel, un concept plus gĂ©nĂ©ral est employĂ© avec le mot picture (image) plutĂŽt que trame car l'image peut aussi bien ĂȘtre une trame complĂšte ou un simple field (champ) entrelacĂ©.

Les codecs vidĂ©o tels que MPEG-2, H.264 ou Ogg Theora rĂ©duisent la quantitĂ© de donnĂ©es dans un flux en faisant suivre les images clĂ©s avec une ou plusieurs inter-trames. Typiquement, ces trames utilisent un plus faible dĂ©bit binaire que ce qu'elles nĂ©cessiteraient dans l'absolu, car une grande partie de chaque image est - habituellement - similaire Ă  la prĂ©cĂ©dente. Seules les parties en mouvement ont donc besoin d'ĂȘtre recodĂ©es.

Références

    1. Logiciel H.264 : http://iphome.hhi.de/suehring/tml/download/
    2. T. Wiegand, G.J. Sullivan, G. BjĂžntegaard, A. Luthra: Overview of the H.264/AVC Video Coding Standard. IEEE Transactions on Circuits and Systems for Video Technology, Vol. 13, No. 7, July 2003
    3. Thomas Wiegand, Gary J. Sullivan, « “Overview of the H.264/AVC Video Coding Standard », sur http://ip.hhi.de, IEEE, (consultĂ© le )
    4. Serkan Oktem et Ilker Hamzaoglu, « An Efficient Hardware Architecture for Quarter-Pixel Accurate H.264 Motion Estimation », sur http://people.sabanciuniv.edu (consulté le )
    5. Jeremiah Golston et Dr. Ajit Rao, « Video codecs tutorial: Trade-offs with H.264, VC-1 and other advanced codecs », sur http://www.eetimes.com, (consulté le )

    Voir aussi

    Articles connexes

    Liens externes

    Cet article est issu de wikipedia. Text licence: CC BY-SA 4.0, Des conditions supplĂ©mentaires peuvent s’appliquer aux fichiers multimĂ©dias.