Codec AV1 nouvelle génération: filtre de correction directionnelle CDEF



Publié par Monty (monty@xiph.org, cmontgomery@mozilla.com). Publié le 28 juin 2018.

Si quelqu'un n'a pas lu l' article précédent ... AV1 est un nouveau codec vidéo universel développé par l' Alliance for Open Media. L'alliance a pris comme base le codec VPX de Google, Thor de Cisco et Daala de Mozilla / Xiph.Org. Le codec AV1 est supérieur en performances à VP9 et HEVC, ce qui en fait un codec non pas demain, mais après-demain. Le format AV1 est libre de toute redevance et le restera à jamais avec une licence de licence.

Cet article a été conçu comme le deuxième d'une série d'articles qui décrivent en détail les fonctionnalités d'AV1 et les nouvelles technologies qui le sous-tendent et sont d'abord utilisées en production. Un article précédent sur Xiph.org expliquait la fonction de prédiction de la luminosité de Chroma from Luma (CfL) . Aujourd'hui, nous allons parler d'un filtre de correction directionnelle limité (Filtre d'amélioration directionnel contraint). Si vous vous êtes toujours demandé ce qu'il fallait pour écrire un codec, attachez vos ceintures et préparez-vous pour l'éducation!

Filtres dans AV1


Dans presque tous les codecs vidéo, des filtres correcteurs sont utilisés pour améliorer la qualité subjective du matériel de sortie.

Par «filtres correcteurs», j'entends des méthodes qui ne codent pas nécessairement les informations sur l'image ni n'améliorent l'efficacité du codage objectif, mais elles améliorent le résultat d'une certaine manière. Les filtres correcteurs doivent être utilisés avec précaution car ils perdent généralement des informations - et pour cette raison, ils sont parfois considérés comme une méthode de triche inacceptable afin que le résultat soit meilleur qu'il ne l'est réellement.

Mais ce n'est pas juste. Les filtres de correction sont conçus pour contourner ou éliminer des artefacts spécifiques qui sont invisibles pour les mesures objectives, mais évidents pour l'œil humain. Et même si nous considérons les filtres comme une forme de tromperie, un bon codec vidéo a toujours besoin de tous les «tricheurs» pratiques et efficaces qu'il peut utiliser.

Les filtres sont divisés en plusieurs catégories. Premièrement, ils peuvent être normatifs ou non normatifs . Le filtre normatif est une partie obligatoire du codec; sans elle, il est impossible de décoder correctement la vidéo. Le filtre non standard est facultatif.

Deuxièmement, les filtres diffèrent dans le lieu d'application. Il existe des filtres de prétraitement (prétraitement) appliqués aux données d'entrée avant le codage, des filtres de post-traitement (post-traitement) appliqués aux données de sortie une fois le décodage terminé, ainsi que des filtres en boucle (filtres de boucle) intégrés au processus de codage. Les filtres de prétraitement et de post-traitement sont généralement non standard et ne seront pas inclus dans le codec. Et les filtres de boucle sont normatifs par définition. Cela fait partie du codec; ils sont utilisés dans le processus d'optimisation du codage et sont appliqués aux trames de référence ou pour le codage inter-trames.



AV1 utilise trois filtres correcteurs réglementaires. Le premier est un filtre de déblocage pour supprimer le «blocage» - des artefacts évidents le long des bords des blocs codés. Bien que le DCT soit relativement bien adapté à la compression d'énergie dans les images naturelles, il a toujours tendance à accumuler des erreurs aux bords des blocs. Si vous vous souvenez, l'élimination de ces artefacts était la principale raison pour laquelle Daala a utilisé la transformation par rodage. Mais AV1 est un codec plus traditionnel avec des limites de bloc strictes. Par conséquent, un filtre de déblocage traditionnel est nécessaire ici pour lisser les artefacts sur les bords des blocs.


Un exemple d'artefacts aux limites de bloc dans le codec de bloc DCT traditionnel. Ces erreurs sont particulièrement visibles.

Le dernier des trois filtres est le filtre de restauration de boucle. Il se compose de deux filtres configurables et remplaçables: le filtre Wiener et le filtre auto-guidé. Ce sont deux filtres convolutionnels qui tentent de construire un noyau pour restaurer partiellement la qualité perdue de l'image d'entrée d'origine. Ils sont généralement utilisés pour la réduction et / ou la correction du bruit sur les bords des blocs. Dans le cas de l'AV1, ils effectuent une tâche générale de réduction du bruit, supprimant le bruit DCT de base grâce au flou réglable.

Entre eux se trouve un filtre de correction directionnelle limité (Filtre à amélioration directionnelle contraint, CDEF), dont nous parlerons. Comme le filtre de bouclage, il supprime les artefacts et le bruit de base au niveau des articulations, mais contrairement au filtre de bouclage, il s'agit d'un filtre directionnel. Contrairement à la plupart des filtres, il ne s'applique pas à tout dans une rangée, mais trouve spécifiquement les limites des blocs. Par conséquent, CDEF est particulièrement intéressant: c'est le premier filtre directionnel pratique et utile qui est utilisé dans le codage vidéo.

Route longue et sinueuse


L'histoire du CDEF ne s'est pas développée facilement. C'est une longue route avec des virages, des chemins secondaires et des impasses. Le CDEF rassemble plusieurs articles de recherche, chacun fournissant une idée ou une inspiration pour le filtre final dans AV1.

L'intérêt de transformer des blocs de données de pixels à l'aide de transformations DCT et de type DCT est de représenter un bloc de pixels avec le moins de nombres possible. Le DCT comprime assez bien l'énergie dans la plupart des images, ce qui signifie qu'il a tendance à collecter des motifs de pixels dispersés dans seulement quelques facteurs de sortie importants.

Mais il existe des exceptions à l'efficacité de la compression DCT. Par exemple, DCT ne traduit pas très bien les bordures ou les motifs directionnels. Si vous regardez la sortie DCT d'un bord diagonal net, les coefficients de sortie forment également ... une diagonale nette! Il diffère après la conversion, mais est toujours présent dans l'image, bien que généralement sous une forme plus complexe qu'au début. La compression est en baisse!


Les limites précises sont un problème traditionnel pour les codecs basés sur DCT, car ils ne compressent pas très bien, voire pas du tout. Ici, nous voyons une bordure nette (à gauche) et des coefficients de transformation DCT (à droite). L'énergie de la frontière initiale se propage par DCT dans le motif d'ondulations directionnelles.

Au cours des deux dernières décennies, la recherche sur les codecs vidéo a de plus en plus examiné les transformations, les filtres et les méthodes de prédiction, qui sont essentiellement directionnels. Les chercheurs ont cherché un moyen de mieux gérer ces frontières et ces modèles pour corriger cette limitation DCT fondamentale.

Prédicteurs directionnels classiques


L'intra-prédiction directionnelle est probablement l'une des méthodes d'action directionnelle les plus connues dans les codecs vidéo modernes. Tout le monde connaît les modes de prédiction directionnelle h.264 et VP9, ​​où le codec transfère la prévision d'un motif spécifique vers un nouveau bloc basé sur les pixels environnants à partir de blocs déjà décodés. Le but est d'éliminer (ou de réduire considérablement) l'énergie des bords durs et dirigés avant de convertir le bloc. En prédisant et en supprimant les fonctionnalités qui ne peuvent pas être compressées, nous augmentons l'efficacité globale du codec.


Illustration des modes de prédiction directionnelle en AVC / H.264 pour les blocs 4x4. Le prédicteur étend les valeurs à partir de bandes d'un seul pixel de pixels voisins, les transférant vers le bloc prévu dans l'une des huit directions, plus un mode de moyenne pour une prédiction DC simple

Une idée encore plus ancienne est la compensation de mouvement. Il s'agit également d'une forme de prévision directionnelle, même si nous y pensons rarement de cette façon. Ce mode décale les blocs dans certaines directions, là encore pour prévoir et extraire l'énergie avant l'exécution du DCT. Ce décalage de bloc est directionnel et filtré. Comme l'intra-prédiction directionnelle, il applique des filtres de suréchantillonnage soigneusement construits si le décalage n'est pas un nombre entier de pixels.

Filtres directionnels


Comme indiqué précédemment, les codecs vidéo appliquent activement des filtres pour supprimer les artefacts de bloc et le bruit. Bien que les filtres soient appliqués sur le plan 2D, les filtres eux-mêmes fonctionnent généralement en 1D, c'est-à-dire qu'ils sont exécutés horizontalement et verticalement séparément.

Le filtrage directionnel déclenche les filtres dans des directions autres qu'horizontales et verticales. Une telle méthode est déjà courante dans le traitement d'images statiques, où les filtres de réduction du bruit et les superpositions d'effets spéciaux prennent souvent en compte les limites et les directions. Mais ces filtres directionnels sont souvent basés sur le filtrage de la sortie des transformées directionnelles. Par exemple, les filtres de réduction de bruit [légèrement obsolètes] dont j'ai parlé sont basés sur un double arbre d'ondelettes complexes .

Mais pour le codage vidéo, nous nous intéressons surtout aux filtres directionnels, qui sont directement appliqués sur les pixels dans une certaine direction, plutôt que de filtrer le domaine fréquentiel à la sortie d'une conversion directionnelle. Dès que vous essayez de créer une telle bête, la Grande Question se pose rapidement: comment formaliser une certaine direction autre qu'horizontale et verticale, lorsque les positions du filtre ne sont plus liées aux pixels de la grille?

Une option consiste à utiliser l'approche classique utilisée dans le traitement d'image de haute qualité: transformer le noyau du filtre et rééchantillonner (rééchantillonner) l'espace en pixels selon les besoins. Vous pourriez même dire que c'est la seule réponse «correcte» ou «complète». Il est utilisé pour compenser le mouvement sous-pixel, où il est impossible d'obtenir un bon résultat sans un bon rééchantillonnage, et également dans la prédiction directionnelle, où une approximation rapide est généralement utilisée.

Cependant, même une approximation rapide est coûteuse en termes de ressources de calcul, si elle est appliquée universellement, il est donc conseillé d'éviter le rééchantillonnage, si possible. Le prix élevé de la vitesse est l'une des raisons pour lesquelles les filtres directionnels n'ont pas encore été appliqués au codage vidéo.

Transformations directionnelles


Les conversions directionnelles tentent de résoudre les problèmes DCT avec le compactage des bordures de blocs au niveau de la transformation elle-même.

Les expériences dans ce domaine se répartissent en deux catégories. Il existe des transformations qui utilisent des bases essentiellement directionnelles, telles que des ondelettes directionnelles. En règle générale, ils sont sujets à une conversion / sur-exhaustivité excessive, c'est-à-dire qu'ils produisent plus de sortie qu'ils n'en reçoivent à l'entrée: généralement beaucoup plus. C'est comme travailler dans la direction opposée, car nous voulons réduire la quantité de données, pas l'augmenter! Mais ces conversions compressent toujours l'énergie, et l'encodeur sélectionne toujours un petit sous-ensemble de la sortie pour l'encodage, donc en réalité il y a quelques différences par rapport à l'encodage DCT avec perte habituel. Cependant, les conversions «trop complètes» nécessitent généralement une quantité excessive de mémoire et de ressources informatiques et ne sont donc pas utilisées dans les codecs vidéo courants.

La deuxième catégorie de conversions directionnelles prend des transformations régulières non orientées comme DCT - et les modifie, affectant l'entrée ou la sortie. Les changements peuvent être effectués sous forme d'échantillonnage répété, de multiplication matricielle (qui peut être considérée comme une forme spécialisée d'échantillonnage répété) ou de jongler avec l'ordre des données d'entrée.

Cette dernière idée est la plus forte, car la méthode fonctionne rapidement. Une simple permutation des nombres ne nécessite aucun calcul mathématique.


Deux exemples de transformations dans différentes directions en réorganisant les pixels et les coefficients, plutôt qu'un re-filtre. Un exemple est tiré de l'enquête sur les transformations directionnelles dans le codage d'image , Jicheng Xu, Bing Zeng, Feng Wu

La mise en œuvre est compliquée par plusieurs difficultés pratiques. La réorientation du carré donne un bord diagonal avec des lignes principalement verticales ou horizontales, ce qui conduit à une matrice de nombres non carrés en entrée. Conceptuellement, ce n'est pas un problème. Comme vous pouvez commencer à transformer des lignes et des colonnes indépendamment les unes des autres, nous utilisons simplement différentes tailles de DCT 1D pour chaque ligne et colonne, comme indiqué dans la figure ci-dessus. Mais en pratique, cela signifie que nous aurons besoin d'une factorisation DCT différente pour chaque longueur de colonne possible - et dès que le service de développement matériel le comprendra, vous serez jeté par la fenêtre.

Il existe d'autres façons de traiter les zones non carrées après le réarrangement. Vous pouvez proposer des schémas de rééchantillonnage qui enregistrent le carré d'entrée ou fonctionnent uniquement à la sortie. La plupart des articles sur la conversion directionnelle répertoriés ci-dessous proposent différents schémas à cet effet.

Et c'est là que se termine essentiellement l'histoire des transformations dirigées. Dès que vous contournez diverses complications des conversions directionnelles et créez un véritable filtre, il ne fonctionne normalement pas dans un codec moderne pour une raison inattendue: en raison de la concurrence avec une taille de bloc variable. Autrement dit, dans un codec avec une taille de bloc fixe, l'ajout de transformations directionnelles donne une augmentation impressionnante de l'efficacité. Et une taille de bloc variable en elle-même offre des avantages encore plus importants. Mais la combinaison d'une taille de bloc variable et de transformations directionnelles conduit à un résultat pire que l'utilisation de chacune de ces méthodes individuellement. La taille de bloc variable a déjà éliminé les redondances utilisées par les transformations directionnelles et l'a même rendue plus efficace.

Nathan Egge et moi avons beaucoup expérimenté les transformations directionnelles lors du développement de Daala. J'ai examiné le problème du côté entrée ainsi que du côté sortie, en utilisant des multiplications matricielles clairsemées pour convertir les bordures diagonales en position verticale / horizontale à la sortie. Nathan a testé des approches connues des transformations directionnelles en reconstruisant les données d'entrée. Nous sommes arrivés à une conclusion: la complexité supplémentaire ne donne aucun avantage objectif ou subjectif.

L'utilisation de transformations directionnelles dans Daala (et d'autres codecs) pourrait être une erreur, mais la recherche a soulevé une question qui a été mentionnée plus tôt: comment filtrer rapidement le long des frontières sans rééchantillonnage coûteux? Réponse: pas besoin de rééchantillonner. Effectuez un zoom avant en vous déplaçant le long du pixel entier le plus proche. Zoomez sur le noyau transformé en réorganisant littéralement ou conceptuellement les pixels. Cette approche conduit à une certaine distorsion (aliasing), mais elle fonctionne assez bien et assez rapidement .

Prédicteurs directionnels, partie 2: Chroniques de Daala


L'histoire de CDEF dans le codec Daala a commencé avec des tentatives pour faire quelque chose de complètement différent: l'intra-prédiction directionnelle ennuyeuse habituelle. Ou du moins quelque chose de normal pour le codec Daala.

J'ai écrit sur le schéma d' intra-prédiction de Daala dans le domaine des fréquences alors que nous commencions à peine à travailler dessus. Les mathématiques ici fonctionnent très bien; aucune raison de s'inquiéter. Cependant, l'implémentation naïve a nécessité un grand nombre de multiplications matricielles, ce qui était trop cher pour le codec en production. Nous espérions que la charge de calcul pourrait être réduite d'un ordre de grandeur en raison de la raréfaction - élimination des éléments de la matrice qui ne contribuaient pas beaucoup à la prévision.

Mais l'éclaircie ne fonctionne pas comme nous le souhaiterions. Au moins lorsque nous l'avons implémenté, il a perdu trop d'informations, ce qui rend la technique inadaptée dans la pratique.

Bien sûr, Daala avait encore besoin d'une certaine forme d'intra-prédiction, et Jean-Marc Valin a eu l'idée: un codec de prédiction autonome qui fonctionne dans le domaine spatial parallèlement au codec Daala dans le domaine fréquentiel. En tant que sorte de symbiote, travaillant en tandem, mais non dépendant de Daala, il ne se limite pas aux exigences de Daala pour le domaine fréquentiel. C'est ainsi qu'est né Intra Paint .


Un exemple d'algorithme de prédiction Intra Paint sur une photographie du port de Sydney . La sortie visuelle est clairement directionnelle, correspond bien aux limites des blocs et aux caractéristiques de l'image originale, créant un résultat agréable (peut-être un peu étrange) avec des limites claires

Le filtre Intra Paint fonctionnait d'une nouvelle manière: il encodait des vecteurs unidimensionnels uniquement le long des limites des blocs, puis exécutait le modèle dans la direction sélectionnée. C'est comme pulvériser de la peinture, puis l'étaler dans différentes directions dans des zones ouvertes.

Intra Paint semblait prometteur et produisait en soi des résultats incroyablement beaux, mais encore une fois s'est avéré insuffisamment efficace pour fonctionner comme un prédicteur standard. Il n'a tout simplement pas obtenu suffisamment de bits pour encoder ses propres informations.


La différence entre la photographie originale du port de Sydney et le résultat d'Intra Paint. Malgré la publication visuellement agréable d'Intra Paint, objectivement, il ne peut pas être qualifié de prédicteur très précis. La différence est assez importante même le long de nombreuses frontières qui semblaient bien conçues

L '«échec» d'Intra Paint nous a conduit à une autre idée. Bien que ce «dessin» ne soit objectivement pas un très bon prédicteur, mais subjectivement pour la plupart, il semble bon. Peut-être utiliser la méthode du «frottis de peinture» comme filtre de post-traitement pour améliorer la qualité visuelle subjective? Intra Paint suit très bien le long des arêtes vives et devrait donc potentiellement éliminer le bruit qui s'accumule le long des arêtes les plus nettes.De cette idée est né le filtre Paint-Dering original à Daala, qui a finalement conduit au CDEF lui-même.

Il y a une autre chose intéressante dans la prévision directionnelle, bien que ce soit actuellement une impasse dans le codage vidéo. David Shlif implémente un filtre de récupération de bordure / direction intéressant appelé interpolation dirigée par le bord(EDI). D'autres codecs (comme la série VPx et, à un certain moment, AV1) ont expérimenté des trames de référence réduites pour enregistrer les bits de codage, puis augmenter la résolution. Nous espérions qu'avec une résolution accrue, une interpolation EDI considérablement améliorée améliorerait la technique au point qu'elle serait utile. Nous espérions également utiliser l'EDI comme un filtre d'interpolation sous-pixel amélioré pour compenser le mouvement. Malheureusement, ces idées sont restées un rêve non réalisé.

Remplissage de trous, fusion de branches


Pour l'instant, j'ai décrit toutes les conditions de base nécessaires pour approcher le CDEF, mais en réalité nous avons continué à errer dans le désert. Intra Paint a engendré le filtre Daala Paint-Dering d'origine, qui a utilisé l'algorithme Intra-Paint comme un post-filtre pour éliminer les artefacts. Il s'est avéré trop lent à utiliser dans un vrai codec.

En conséquence, nous avons pris en compte les leçons d'Intra Paint et abandonné les expériences dans ce sens. Daala a emprunté CLPF à Thor pendant un certain temps, puis Jean-Marc a créé un autre filtre Deringing, beaucoup plus rapide, pour Daala, basé sur la recherche de directions aux limites intra-peinture (cela a fonctionné rapidement et bien), ainsi que le filtre de remplacement conditionnel. , . CRF - , , .


7-tap ,

Daala CRF, 7-tap 5-tap. , . Daala , CDEF.

Nous avons récemment proposé Daala comme codec AOM, et ce filtre intermédiaire est devenu une expérience daala_dering AV1. Cisco a également présenté son filtre de réduction du bruit, le filtre passe-bas contraint (CLPF) du codec Thor. Pendant un certain temps, les deux filtres existaient en parallèle dans l'ensemble expérimental AV1: ils pouvaient être inclus individuellement ou même ensemble. Grâce à cela, dans leur travail, il a été possible de constater une synergie utile, ainsi que des similitudes supplémentaires de filtres à différentes étapes du travail.

Nous sommes donc finalement arrivés au CDEF : le filtre Cisco CLPF et la deuxième version du filtre de réduction de bruit Daala ont fusionné en un seul filtre de réduction de bruit haute performance prenant en compte la direction des limites.

CDEF moderne


Le filtre CDEF est simple et très similaire à nos filtres précédents. Il se compose de trois parties (recherche directionnelle, filtre à substitution limitée / passe-bas et placement des marques de co-pixel) que nous avons utilisées auparavant. Compte tenu de la longue expérience, en regardant le CDEF terminé, vous pouvez demander: «Est-ce tout? Où est le reste? " CDEF est un exemple de la façon d'obtenir un effet utile en raison de la mise en œuvre correcte des pièces et non en raison de la complexité. Un filtre simple et efficace est ce qu'il devrait être.

Direction de recherche


CDEF fonctionne dans une certaine direction, vous devez donc le définir. L'algorithme est le même que celui d'Intra Paint et Paint-Dering. Il y a huit directions possibles. Huit directions possibles pour un filtre CDEF. Les lignes numérotées dans chaque bloc de direction correspondent au paramètre «k» dans la recherche de direction




Nous déterminons la direction du filtre en faisant des variantes «directionnelles» du bloc d'entrée, une pour chaque direction, où tous les pixels le long de la ligne dans la direction sélectionnée sont amenés à la même valeur. Ensuite, nous choisissons la direction dans laquelle le résultat correspond le mieux au bloc source. C'est-à-dire que pour chaque direction d, nous trouvons d'abord la valeur moyenne de pixel dans chaque ligne k, puis le long de chaque ligne, nous résumons l'erreur quadratique entre la valeur de pixel donnée et la valeur moyenne de cette ligne de pixel.


d, . k . k . , , . /

Nous obtenons donc l'erreur quadratique totale, et la plus petite erreur quadratique commune est la direction que nous choisirons. Bien que l'exemple ci-dessus fasse exactement cela, en réalité, il n'est pas nécessaire de convertir l'erreur quadratique en dispersion: dans chaque direction, le même nombre de pixels, donc les deux choisiront la même réponse. Moins de calcul!

Il s'agit d'un moyen intuitif et long de calculer les erreurs directionnelles. L'usinage peut être simplifié par l'équation suivante:



Dans cette formule EpxpkNd,kkd.Cette équation peut être simplifiée dans la pratique. Par exemple, le premier terme est le même pour chaqued . En fin de compte, la mise en œuvre de AV1 CDEF nécessite actuellement 5,875 ajouts et 1,9375 multiplications par pixel et est profondément vectorisée, ce qui entraîne un coût total inférieur à 8 × 8 DCT.

Robinets de filtre


Le filtre CDEF fonctionne pixel par pixel dans un bloc complet. Direction d




La direction des filtres unidimensionnels primaire et secondaire par rapport à la direction sélectionnée d. Le filtre principal démarre dans la direction sélectionnée, les filtres secondaires fonctionnent à un angle de 45 ° par rapport à la direction principale. Chaque pixel du bloc est filtré de manière égale. Les

filtres fonctionnent à des angles tels que les marques idéales tombent souvent entre les pixels. Au lieu de rééchantillonner, nous sélectionnons l'emplacement exact du pixel le plus proche, en tenant compte du noyau symétrique du filtre.

Chaque étiquette du filtre a également le même poids. Pendant le filtrage, sa valeur d'entrée est fournie à l'entrée, puis la fonction de contrainte est appliquée, puis le résultat est multiplié par le poids fixe de l'étiquette et cette valeur de sortie est ajoutée au pixel filtré.


Les emplacements des marques primaires et secondaires (robinets) et des poids fixes (w) dans les directions du filtre. Pour les marques primaires et les valeurs paires de force a = 2 et b = 4, tandis que pour les marques impaires a = 3 et b = 3. Le pixel filtré est affiché en gris.

En pratique, les filtres primaire et secondaire ne fonctionnent pas séparément, mais sont combinés en un seul noyau de filtre, qui s'effectue en une seule étape.

Fonction de restriction


CDEF utilise un filtre passe-bas limité dans lequel la valeur de chaque étiquette est d'abord traitée par la fonction de contrainte avec le paramètre de différence entre la valeur de l'étiquette et le pixel filtrédSD :



La fonction de restrictions est conçue pour réduire ou abandonner complètement le traitement des pixels qui ne sont pas trop différents des pixels filtrés. Dans la plage définie, les différences entre les valeurs des marques du pixel central (qui sont déterminées par le paramètre de forceS ) Si la différence de valeurs se situe dans la plage entre les paramètres Set DD








(p)et (s)



Résultats


CDEF est conçu pour supprimer ou réduire le bruit de base et les artefacts de sonnerie sur les bords nets d'une image sans flou ni dommage. Le filtre est maintenant utilisé dans AV1 et donne un effet subtil mais cohérent. Peut-être qu'à l'avenir, il sera possible de s'appuyer encore plus sur le CDEF.


Un exemple de réduction du bruit et d'artefacts lors de l'encodage d'images Fruits . Le premier encart montre la zone sans traitement CDEF, le second montre la même zone après le traitement CDEF

La valeur quantitative de tout filtre correctif doit être déterminée par des tests subjectifs. Les métriques objectives ne doivent pas être actualisées, mais le CDEF est conçu pour fournir un résultat qui dépasse les capacités des outils de test objectif primitifs tels que PSNR et SSIM.

Ainsi, nous avons effectué plusieurs séries de tests subjectifs, d'abord pendant le développement du CDEF (lorsque Daala Dering et Thor CLPF étaient encore techniquement concurrents), puis avons effectué des tests plus complets du filtre CDEF combiné. Puisqu'il s'agit d'un nouveau filtre qui est complètement absent dans les générations précédentes de codecs, les tests consistaient principalement en AV1 avec CDEF activé et AV1 sans CDEF.


Résultats de test subjectif AV1 A / B avec CDEF et AV1 sans CDEF pour une configuration à latence élevée

Les résultats subjectifs montrent une amélioration statistiquement significative (p <0,05) dans trois des six clips. En règle générale, cela correspond à une augmentation de l'efficacité de codage de 5 à 10%. Il s'agit d'une victoire assez importante pour un outil ajouté à un codec entièrement mature.

Comme prévu, les tests objectifs ont montré une augmentation plus modeste d'environ 1%, mais ils ne sont utiles que dans la mesure où ils sont cohérents avec les résultats subjectifs. Les tests subjectifs sont l'étalon-or et les résultats subjectifs sont assez clairs.

Les tests ont également montré que CDEF fonctionne mieux si des outils de codec supplémentaires sont désactivés pendant le codage. Comme les transformations directionnelles, le CDEF est en concurrence avec d'autres méthodes AV1 plus complexes. Le CDEF étant un filtre simple, petit et rapide, il pourrait être utile à l'avenir de réduire la complexité des encodeurs AV1. En termes de complexité du décodeur, le CDEF représente 3% à 10% du décodeur AV1, selon la configuration.

Ressources supplémentaires


  1. Suites de tests standard derf Xiph.Org sur media.xiph.org
  2. Système de test automatisé et métriques utilisés dans le développement de Daala et AV1: "Sommes-nous déjà compressés?"
  3. Filtre d'amélioration directionnel contraint (CDEF) dans AV1 . Steinar Midtskogen, Jean-Marc Valin, octobre 2017
  4. Diapositives de présentation du CDEF pour ICASSP 2018 , Steinar Midtskogen, Jean-Marc Valin
  5. Filtre effrayant pour Daala et développement ultérieur . Jean-Marc Valin. Le filtre de réduction du bruit précédent créé lors du développement du codec Daala, qui a été utilisé pour créer le CDEF dans AV1.
  6. Daala: coloriages pour le plaisir et le bien . Jean-Marc Valin. Un filtre de correction encore plus ancien pour la base Intra-Paint, qui a conduit à la création d'un filtre de réduction du bruit à Daala, qui à son tour a conduit au CDEF
  7. Filtre d'intersection de peinture . Jean-Marc Valin, 2015. Notes sur le filtre de correction de réduction du bruit issu de l'expérience Intra Paint à Daala
  8. Filtrage d'image guidé . Caiming Hye, Jian San, Xiaou Tang, 2013
  9. Transformation en ondelettes discrète adaptative directionnelle pour la compression d'image . Chuo-Ling Chang, Bernd Girod, Transactions IEEE sur le traitement d'images, volume 16, numéro 5, mai 2007
  10. Transformations adaptatives directionnelles pour le partage d'images . Chuo-Ling Chang, thèse de doctorat à l'Université de Stanford, 2009. Cette thèse donne un bon aperçu du domaine des transformations directionnelles à partir de 2009; Malheureusement, aucune copie n'était disponible en ligne
  11. Conversion de blocage adaptatif directionnel pour coder une image couleur . Chuo-Ling Chang, Mina Makar, Sam S. Tsai, Bernd Girod, Transactions IEEE on Image Processing, Volume 19, Numéro 7, juillet 2010
  12. Basé sur un circuit DCT avec prédiction DC et codage adaptatif . Zhibo Chen, Xiaozhong Xu. L'article derrière l'IEEE
  13. Transformations adaptatives directionnelles pour la prédiction de codage résiduel . Robert Cohen, Sven Klomp, Anthony Vetro, Huifan Sun. Actes de la 17e Conférence internationale IEEE 2010 sur le traitement d'images, 26-29 septembre 2010, Hong Kong
  14. Transformation orthogonale sélective en orientation avec chevauchement . Dietmar Kunz, 2008. Article par l'IEEE
  15. Analyse vitesse-distorsion des ondelettes directionnelles . Arian Maleki, Boshra Rajay, Hamid Reza Purreza. Transactions IEEE sur le traitement d'images, Volume 21, Numéro 2, février 2012
  16. Analyse théorique des tendances des tendances des transformations orthogonales directionnelles . Shogo Murumatsu, Dandan Khan, Tomoya Kobayashi, Hisakazu Kikuchi. Un article derrière le paywall IEEE. Cependant, une version courte est disponible gratuitement.
  17. Un aperçu des transformations directionnelles dans le codage d'image . Jicheng Xu, Bing Zeng, Feng Wu.
  18. Conversion avec filtrage directionnel pour la compression d'image et les informations inter-images . Xulian Peng, Jicheng Xu, Feng Wu, IEEE Transaction in Image Processing, Volume 19, Numéro 11, novembre 2010. Article par IEEE Firewall
  19. Approximation et compression utilisant des transformations orthonormées clairsemées . O. G. Sezer, O. G. Guleruz, Yusel Altunbasak, 2008
  20. Étude fiable des transformations partagées bidimensionnelles pour les codecs vidéo de nouvelle génération . O. G. Cezer, R. Cohen, A. Vetro, mars 2011
  21. Optimisation conjointe basée sur la rareté d'un ensemble de transformées de blocs partagés bidimensionnels orthonormés . Joel Sole, Peng Yin, Yunfei Zheng, Christina Gomila, 2009. Article par IEEE
  22. Transformations de chevauchement directionnel pour le codage d'image . Jicheng Xu, Feng Wu, Jie Liang, Wenjun Zhang, Transactions IEEE on Image Processing, avril 2008
  23. Les transformées en cosinus discrètes directionnelles sont un nouveau cadre pour le codage d'image . Bing Zeng, Jingjing Fu, Transactions IEEE sur les circuits et les systèmes de technologie vidéo, avril 2008
  24. Double arbre de transformées en ondelettes complexes . Ivan Seleznik, Richard Baranyuk, Nick Kingsbury, IEEE Signal Processing Magazine, novembre 2005

Source: https://habr.com/ru/post/fr416049/


All Articles