Partage de technologie

Apprentissage systématique du processus de compression de données du codage vidéo H264 (03) et des concepts associés

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Remarque : Nous nous référons à la méthode d'apprentissage du Cercle d'Or (Qu'est-ce que la règle du Cercle d'Or ? -> Modèle de règle du Cercle d'Or, cet article utilise : pourquoi-quoi) pour apprendre l'encodage vidéo audio H264. Cette série d'articles se concentre sur la compréhension du système de connaissances et des méthodes pratiques d'encodage vidéo. L'aspect théorique expliquera davantage l'origine des concepts audio et vidéo et la connexion entre les différents concepts. Sachez comment c'est, sachez pourquoi il en est ainsi. Dans le même temps, l’accent est mis davantage sur la mise en place de systèmes de connaissances.

Pour cet article, nous parlons principalement du processus de compression des données H.264 et des concepts associés. La compression de données H.264 n'a qu'un seul objectif, compresser, compresser et recompresser pour réduire la taille des données vidéo tout en garantissant autant que possible la qualité de l'image. Ainsi, avant d'apprendre la compression de données H.264, nous devons d'abord comprendre : Bien qu'il existe de nombreux concepts et méthodes impliqués dans ce processus, toutes les méthodes et processus sont destinés à cet objectif : la compression.

1 Interprétation du processus de compression des données H.264

Le processus de compression de données de H.264 est principalement résumé comme les étapes clés suivantes : division de macroblocs et division de sous-blocs -> regroupement de trames -> prédiction de trames -> transformation en cosinus discret entier (DCT) -> compression CABAC. Les instructions d'extension spécifiques sont les suivantes.

1.1 Diviser les macroblocs && diviser en sous-blocs

Bloc macro : on peut comprendre que lorsque la trame vidéo est envoyée au tampon de l'encodeur H264, l'encodeur divise les blocs macro en chaque image. Par défaut, l'encodage H264 utilise une zone de 16X16 pixels comme macrobloc (H265 utilise une zone de 64X64 pixels. L'effet de la division d'une image de la vidéo en macroblocs est le suivant :

L'effet global après division du macrobloc

Dans le même temps, dans l’image ci-dessus, nous pouvons diviser le bloc macro de 16 x 16 pixels en sous-blocs plus petits. La taille du sous-bloc peut être 8X16、16X8、8X8、4X8、8X4、4X4 est très flexible. Le but de le diviser à nouveau en sous-blocs est d'enregistrer ces données avec de très petites données. Une fois les macroblocs divisés, toutes les images du cache de l'encodeur H264 peuvent être regroupées.

La division des macroblocs et des sous-blocs permet au codage vidéo d'analyser et de traiter le contenu vidéo avec plus de précision et d'obtenir une compression des données plus efficace. Les images vidéo sont divisées en macroblocs de taille 16x16 pixels, et ces macroblocs peuvent être divisés en blocs plus petits tels que 8x8, 8x4, 4x8, etc. pour s'adapter à la complexité du contenu de l'image.

1.2 Regroupement de trames

Le regroupement de trames (structure GOP) est défini avant la prédiction intra et la prédiction inter. Dans le processus de codage vidéo, le paramétrage du regroupement des images est l'une des premières étapes qui détermine l'organisation et l'ordre de codage des images vidéo. L'objectif principal du regroupement de trames est de réduire la redondance des données. La redondance des données vidéo est principalement divisée en deux catégories :

  • La redondance temporelle des données, qui nécessite l'utilisation d'une compression de prédiction inter-trame, représente une proportion plus importante(Car même si la caméra capture 30 images par seconde, ces 30 images de données sont liées dans la plupart des cas. Il peut y avoir plus de 30 images de données, et peut-être des dizaines d'images de données sont particulièrement étroitement liées. Et car la corrélation est en particulier les images proches, il suffit de sauvegarder une image clé(je cadre)données, autres trames(Cadre B et cadre P)Tout peut être prédit à travers cette image selon certaines règles, de sorte que les données vidéo ont la plus grande redondance temporelle).
  • La redondance des données spatiales, qui nécessite l’utilisation d’une compression de prédiction intra-trame, représente une proportion relativement faible.

Étapes d'exécution du regroupement de trames H264 :

  1. Chaque fois que deux trames adjacentes sont extraites pour une comparaison de macroblocs, la similarité entre les deux trames est calculée.
  2. La similarité est obtenue après quantification : si les pixels présentant des différences ne se trouvent qu'à moins de 10 % des points, la différence de luminosité ne change pas de plus de 2 % et la différence de chrominance ne change que de 1 %, nous pensons que ces images peuvent être regroupées. en un seul groupe.

Une fois le regroupement terminé, le problème de la compression de prédiction de trame commence à être résolu.

1.3 Compression de prédiction de trame

Cette partie comprend principalement la prédiction intra-trame et la prédiction inter-trame. La prédiction intra-trame consiste à compresser les images statiques, à prédire la valeur des pixels de chaque macrobloc via 9 modes différents, puis à calculer la valeur résiduelle avec l'image d'origine. Prédiction inter-images (estimation de mouvement et compensation de mouvement) : pour les images P et B, recherchez le vecteur de mouvement entre l'image précédente ou deux images via l'estimation de mouvement, puis effectuez une prédiction de compensation de mouvement, générez une image prédite et calculez le résidu à partir du cadre actuel.

Remarque : L’ordre de la prédiction intra et de la prédiction inter dépend du type de trame codée et de la stratégie de codage. Dans une véritable implémentation d'encodeur vidéo, ces étapes font partie du processus d'encodage et sont gérées automatiquement par l'encodeur. Il n’est pas nécessaire que ce soit qui s’en occupe en premier.

1.3.1 Prédiction intra

Compression de prédiction intra-trame : résout le problème de la redondance des données spatiales. Les données redondantes de l'espace aérien font référence à la couleur, à la luminosité, etc., qui concernent principalement des informations insensibles à l'œil humain. L'encodage est compressé en le supprimant.Le principe utilisé dans la prédiction intra-trame est que l’œil humain possède un certain degré de reconnaissance des images. Il est très sensible à la luminosité basse fréquence et moins sensible à la luminosité haute fréquence.(Cela peut être compris comme une taille de macrobloc de 16X16. Dans H264, d'autres données sont prédites à travers les 16 pixels supérieurs et les 16 pixels les plus à gauche, de sorte que les informations de représentation en pixels qui nécessitent à l'origine 16*16=256 puissent être converties en 16+. 16-1 = 31 pixels pour représenter les informations)

1.3.2 Prédiction inter-trames (estimation de mouvement et compensation de mouvement)

Compression de prédiction intertrame (estimation et compensation de mouvement) : résout le problème de la redondance des données dans le domaine temporel. Il y a plusieurs images dans la vidéo disposées linéairement par ordre chronologique. La corrélation entre les images est très forte, de nombreuses données peuvent donc être supprimées entre les images.Après compression, il sera divisé en trois types : trame I, trame P et trame B.(Explication : principe d'estimation et de compensation de mouvement : l'encodeur H264 extrait d'abord deux images de données vidéo de l'en-tête du tampon en séquence, puis effectue un balayage de macrobloc. Lorsqu'il s'avère qu'il y a un objet dans l'une des images, il recherchera la position à proximité (dans la fenêtre de recherche). Si l'objet est trouvé dans une autre image à ce moment, le vecteur de mouvement de l'objet peut être calculé. L'image ci-dessous est la position de la boule de billard après la recherche.

Pour les images P et B, l'estimation de mouvement est utilisée pour trouver le vecteur de mouvement entre l'image précédente ou deux images, puis une prédiction de compensation de mouvement est effectuée pour générer une image prédite, et le résidu avec l'image actuelle est calculé.

1.4 Transformée en cosinus discrète entière (DCTTransformée en cosinus discrète

Cette étape effectue principalement une transformation DCT sur le résidu de prédiction, convertit la corrélation spatiale en données non pertinentes dans le domaine fréquentiel, puis la quantifie. La DCT est principalement utilisée pour la compression de données ou d'images, convertissant la corrélation spatiale en données non pertinentes dans le domaine fréquentiel, puis les quantifiant.(Explication : la transformation DCT peut rassembler des informations plus importantes sur l'image, et les zones et coefficients du domaine fréquentiel sans importance peuvent être directement recadrés)

Résumé : L'ordre de compression des données de trame consiste à effectuer d'abord une compression inter-trame et intra-trame, puis à effectuer une transformation DCT sur les données résiduelles pour supprimer la corrélation des données et compresser davantage les données. Comme suit:

1.5 Compression CABAC

La compression CABAC est une technologie de compression sans perte et une méthode de codage entropique. Lorsque CABAC est compressé et codé, les données haute fréquence sont définies comme des codes courts et les données basse fréquence sont définies comme des codes longs. Cette méthode est plus efficace que la méthode VLC. La méthode de codage entropique CABAC (Context-Adaptive Binary Arithmetic Coding) est utilisée pour compresser davantage les coefficients quantifiés afin d'améliorer l'efficacité de la compression. Ici, les données traitées au cours des quatre étapes précédentes sont codées dans le flux de code final à l'aide de l'algorithme de codage. Les images compressées finales sont divisées en : images I, images P et images B. Une fois la méthode de compression sans perte CABAC exécutée, le flux de code vidéo est obtenu.

2 Concepts associés au processus de compression de données

2.1 Redondance des données dans le temps et dans l'espace

La redondance des données spatiales et la redondance des données temporelles sont deux concepts de base de la compression vidéo. Ils décrivent respectivement les informations répétées dans et entre les images vidéo.

Interprétation de la redondance spatiale

  • Il fait référence à la similarité ou à la corrélation entre des pixels adjacents au sein d'une même image vidéo, entraînant une duplication des données. En raison de la continuité des images naturelles, les pixels adjacents ont tendance à avoir des valeurs de luminosité ou de couleur similaires.
  • Des exemples typiques de redondance spatiale incluent de grandes zones de monochromes, des dégradés ou des textures qui changent lentement.
  • Les algorithmes de compression vidéo réduisent la redondance spatiale grâce à la prédiction spatiale, au codage par transformation (tel que DCT) et à d'autres technologies, convertissent l'image du domaine spatial en domaine fréquentiel et concentrent l'énergie sur quelques coefficients pour atteindre l'objectif de compression.

Interprétation de la redondance temporelle

  • Fait référence à la similitude qui existe entre les images consécutives d'une séquence vidéo, c'est-à-dire que le même objet ou la même scène dans des images consécutives ne change pas visuellement de manière significative.
  • La redondance temporelle se produit généralement lorsque la caméra est immobile ou que les objets de la scène se déplacent lentement et que seule une petite zone change dans les images suivantes par rapport à l'image précédente.
  • Les algorithmes de compression vidéo réduisent la redondance temporelle grâce à des techniques telles que la prédiction inter-images, l'estimation du mouvement et la compensation de mouvement, en utilisant la corrélation entre les images précédentes et suivantes pour prédire et coder les différences inter-images au lieu de coder entièrement chaque image.

2.2 Interprétation des données résiduelles et concepts associés

Dans la compression vidéo H.264, les données résiduelles font référence à la différence entre l'image vidéo d'origine et l'image prédite. Dans le même temps, si vous souhaitez approfondir votre compréhension des données résiduelles, vous devez comprendre les concepts suivants, comme indiqué ci-dessous :

  1. trame prédite : Pendant le processus d'encodage vidéo, la prédiction intra (Intra Prediction) ou l'inter prédiction (Inter Prediction) sera utilisée pour générer des images prédites. La prédiction intra est basée sur les informations de pixels de l'image actuelle, tandis que la prédiction inter est basée sur les informations de compensation de mouvement des images précédentes ou suivantes.

  2. cadre d'origine: Fait référence aux images d'image originales réellement capturées dans la séquence vidéo.

  3. Calcul résiduel : Les données résiduelles sont calculées en soustrayant la trame prédite de la trame d'origine. Les données résiduelles représentent la différence entre la trame prédite et la trame d'origine.

Grâce aux concepts ci-dessus, nous pouvons mieux comprendre les caractéristiques des données résiduelles :

  • Les données résiduelles présentent généralement un caractère aléatoire spatial élevé car le cadre de prédiction a supprimé la plupart des informations redondantes. Ce caractère aléatoire rend les données résiduelles adaptées à une compression ultérieure par transformation et quantification.

  • Une fois les données résiduelles traitées par transformation cosinus discrète entière (IDCT) et quantification, la quantité de données peut être considérablement réduite. La transformation convertit les informations spatiales bidimensionnelles du résidu en informations fréquentielles, tandis que la quantification réduit la précision de ces coefficients et supprime les détails imperceptibles à l'œil humain.

Le but du codage des données résiduelles est de réduire davantage le débit binaire des données vidéo tout en conservant autant que possible la qualité de l'image. Dans le même temps, une compression efficace des données résiduelles est cruciale pour l’efficacité du codage H.264, car elle affecte directement la qualité de la vidéo codée et la bande passante de stockage ou de transmission requise.

2.3 Concepts liés au codage entropique et interprétation étendue

Le codage entropique est une technique de compression de données sans perte basée sur le concept d'entropie de l'information et vise à représenter les données avec le moins de bits possible. L'idée principale du codage entropique est d'attribuer moins de bits aux symboles les plus susceptibles d'apparaître et d'attribuer plus de bits aux symboles qui apparaissent moins fréquemment. De cette manière, l'espace de stockage ou la bande passante de transmission souhaité est réduit car le débit binaire moyen de l'ensemble des données est réduit.

Le codage entropique est souvent utilisé pour le texte et certains types spécifiques de compression de données, et il peut améliorer considérablement l'efficacité de la compression, en particulier lorsque les données ont une distribution de probabilité très non uniforme. Dans le codage par compression vidéo, les méthodes de codage entropique les plus étroitement liées à la compression vidéo sont principalement les suivantes :

  • Codage de Huffman : Le codage Huffman est une technologie de codage entropique de base utilisée dans de nombreuses normes de compression vidéo (telles que les séries JPEG et MPEG). Il attribue un code de longueur variable à chaque symbole via un arbre de Huffman construit en fonction de la fréquence d'apparition du symbole.
  • Codage arithmétique : Le codage arithmétique est adopté dans certaines normes de compression vidéo (telles que JPEG-LS, JPEG 2000). Il utilise un intervalle fractionnaire pour représenter la distribution de probabilité des données d'entrée et offre généralement une meilleure efficacité de compression que le codage de Huffman.
  • Codage arithmétique binaire adaptatif basé sur le contexte (CABAC) : CABAC est la méthode de codage entropique utilisée dans les normes de compression vidéo H.264/AVC et H.265/HEVC. Il combine les concepts de codage arithmétique et d'adaptation contextuelle et peut ajuster dynamiquement le modèle probabiliste de codage en fonction des informations contextuelles, obtenant ainsi un codage plus efficace.
  • Codage à longueur variable (VLC) : VLC est un terme général utilisé pour décrire les méthodes de codage, y compris le codage de Huffman, qui attribuent des codes de longueur variable aux symboles. En compression vidéo, VLC fait généralement référence à la méthode de codage utilisée pour représenter les coefficients de transformation, etc.

En compression vidéo, le codage entropique est l'étape de codage finale utilisée pour coder les données résiduelles après intra- et inter-prédiction. Les données résiduelles représentent la différence entre les données originales et les données prédites et ont généralement moins d'énergie et une distribution de probabilité plus inégale. Grâce au codage entropique, le débit binaire de ces données résiduelles peut être encore réduit, atteignant ainsi l'objectif de compression des données vidéo.