H.265 est finalisé

, par  flagos , popularité : 1%

La norme de codage vidéo H.265/HEVC — High Efficiency Video Coding — vient d’être annoncée comme finalisée par l’ITU, à savoir l’organisme qui gère sa définition. Après douze réunions et trois ans de travaux, le consortium s’est mis d’accord sur la définition de ce nouveau standard vidéo qui viendra remplacer à terme les standards MPEG-2 et H.264/AVC.

Cette dépêche traite des avancées techniques apportées par ce nouveau standard. Les questions portant sur les brevets n’y sont pas traitées.

Sommaire

Généralités sur le décodage vidéo

La compression image JPEG

La compression JPEG peut se représenter sous la forme de cet organigramme :

organigramme JPEG

Au travers des fonctions de transformations de couleurs et de sous-échantillonnage, les pixels sont tout d’abord transformés du plan des 3 couleurs primaires rouge, vert et bleu, vers le plan YUV (luminance, chrominances bleu [Cb] et rouge [Cr]). L’œil humain étant moins sensible à la chrominance, il est fréquent de ne garder qu’un pixel sur quatre pour la chrominance : c’est le sous-échantillonnage 420.

Ainsi, la transformation de couleurs est sans perte, tandis que le sous-échantillonnage produit de la perte d’information.

Les pixels subissent ensuite une DCT : il s’agit d’une transformée de Fourier permettant le passage de pixels issus d’un échantillonnage vers une information de type fréquentielle. Cette transformation se fait sans perte.

L’intérêt de cette transformation est que les éléments de fréquence basse sont ceux qui sont le plus visibles pour l’œil. Ceux de fréquence haute ne font qu’améliorer la qualité de l’image.

La quantification est justement l’étape qui permet de filtrer, plus ou moins selon la qualité désirée, les hautes fréquences par rapport aux basses et d’augmenter le pas de résolution de cette information. Plus ce filtrage est fort, plus la compression est importante, moins la qualité est bonne en sortie. De ce fait, la quantification est une étape avec pertes.

Les données issues de cette étapes sont appelées les résidus. Ces derniers sont ensuite encodés par un algorithme de type Variable Length Coding, permettant d’encoder avec moins de bits les éléments les plus probables.

La compression vidéo MPEG-2/H.264

La compression vidéo ajoute principalement deux étapes à celles de la compression JPEG. Il s’agit de deux mécanismes de prédiction de pixels : la prédiction intra-image et la prédiction inter-image.

La prédiction intra-image

Elle consiste à utiliser les résidus déjà décodés dans l’image comme prédiction. Il s’agit en général des pixels présents en haut ou a gauche du bloc concerné. Les résidus qui sont ensuite décodés sont alors additionnés au résultat de la prédiction intra.

L’intérêt de cette étape réside dans le fait que les résidus à encoder ont alors une grande chance statistique de se trouver autour de 0, rendant les encodages de type Variable Length Coding extrêmement performants.

La prédiction inter-image

Cette prédiction consiste à utiliser les pixels d’une image déjà décodée comme prédiction. On fait donc appel à une image déjà décodée et on lui applique un vecteur de mouvement permettant d’appliquer un déplacement à un groupe de pixels. Ainsi, une séquence avec un plan fixe et une voiture qui se déplace sur une route peut être encodée de manière très performante par ce type de prédiction.

Cependant, cette prédiction oblige le décodeur à avoir décodé l’image de référence. Si toutes les images utilisent la prédiction inter-image, il devient impossible pour l’utilisateur d’entamer un flux vidéo s’il ne l’a pas décodé depuis le début. Pour gérer ce problème, on insère à intervalles réguliers des images dites « key frames » qui garantissent au décodeur que les images suivantes ne feront jamais appel à une image antérieure.

Cet artifice explique que l’utilisateur qui change de chaîne sur sa TV doive attendre un certain laps de temps qu’une key frame lui parvienne.

H.265

Voyons désormais les principales nouveautés introduites dans cette nouvelle version du standard.

Le codage CABAC

Introduit par H.264 et réservé aux profils les plus élevés, le codage arithmétique CABAC est désormais systématique pour remplacer les codages de type Variable Length Coding.

Cet encodage, relativement complexe, n’encode pas les éléments de syntaxe un à un, mais va le faire par paquets d’éléments de syntaxe, en encodant ceux-ci par rapport à leurs valeurs les plus probables.

On considère le gain du CABAC par rapport au VLC de l’ordre de 10 %.

La fin des macro-blocs pour un découpage des pixels adapté à chaque fonction

Jusque là, dans un flux vidéo, les pixels sont découpés en carrés de 16 pixels de large (les macro-blocs), eux-mêmes sous-divisés en blocs de 8 pixels de large. Les algorithmes travaillent ensuite sur cette unité de données.

En H.265, les pixels sont divisés en Coded Tree Unit (CTU) de 16, 32 ou 64 pixels de largeur. Ces dernières sont ensuite partitionnées en coding unit (CU). Une CTU peut être divisées en 4 CU, qui peuvent elles-mêmes se diviser en 4 CU, et ainsi de suite. Cette récursivité s’applique au maximum 3 fois, donnant un passage CTU vers CU de ce type :

split CTB

Les CU peuvent ensuite être découpées en Transform Unit (TU) et en Prediction Unit (PU), pour respectivement les fonctions qui concernent les résidus et les prédictions.

split PU

Ce découpage adaptatif permet aux encodeurs d’appliquer les meilleurs découpages possibles, permettant un meilleur gain et une meilleure qualité d’image. Il rend en revanche la tâche plus compliquée pour les décodeurs matériels qui doivent constamment adapter leur flux de données aux dimensions données par le flux vidéo.

Prédiction intra-image angulaire

H.264 apportait une prédiction intra-angulaire de type 45°. On pouvait donc prédire les résidus en les prenant à gauche, en haut mais aussi en biais. H.265 va plus loin en permettant d’utiliser un plus grand nombre d’angles, comme le montre cette image :

pred intra angulaire

Prédiction inter-image

La prédiction inter-image évolue, notamment sur les vecteurs de mouvement indiquant le déplacement des pixels à effectuer sur l’image de référence. Ceux-ci sont désormais donnés avec une précision au quart de pixel (au lieu d’un demi-pixel en H.264) et peuvent désormais être plus grands (de -8192 à 8192).

Wavefront

H.265 ajoute un mode de décodage qui permet de paralléliser le décodage d’un flux vidéo. Toute la difficulté est que dans un flux vidéo, on se sert généralement des données précédemment décodées pour décoder la donnée courante. Il a donc été créé ce mécanisme de Wavefront. On lance un thread de décodage sur chaque ligne de CTB, la première ligne étant en légère avance de phase par rapport à la deuxième, etc. Cela permet de faire en sorte que les données soient à peu près disponibles lorsqu’un thread fait appel aux résidus de la CTB du dessus.

Wavefront

Sample adaptative offset

Un nouveau filtrage appliqué en sortie de l’image, en plus du filtrage de deblocking, est désormais appliqué afin de réduire le bruit sur l’image.

H.265 a porté un souci constant pour améliorer les filtres d’images. Cela permet de compresser plus les données, tout en retrouvant une qualité d’image acceptable.

Résolution d’image

Bien que le permettant, H.264 n’était pas adapté aux résolutions de type 4k2k. H.265 permet aujourd’hui de passer à des résolutions jusqu’au 8k.

Gain de bande passante

H.265 ayant énormément porté l’effort sur les boucles de filtrage, le consortium a décidé d’appliquer des mesures de gain de bande passante par comparaisons subjectives. Des novices en termes de décodage vidéo ont été confrontés à des flux en H.264 et des flux H.265, et, à qualité visuelle égale, on peut voir un gain de bande passante en moyenne aux alentours de 50 %, avec des pics à 60 % sur certains profils.

Lire les commentaires

Cet article est repris du site http://linuxfr.org/news/h265-est-fi...

Sites favoris Tous les sites

84 sites référencés dans ce secteur