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.
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.
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 :
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.
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 :
Étapes d'exécution du regroupement de trames H264 :
Une fois le regroupement terminé, le problème de la compression de prédiction de trame commence à être résolu.
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.
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)。
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é.
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:
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.
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:
Interprétation de la redondance temporelle:
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 :
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.
cadre d'origine: Fait référence aux images d'image originales réellement capturées dans la séquence vidéo.
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.
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 :
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.