• Aucun résultat trouvé

Orientation des blocs de la transformée

5.3 Orientation des blocs de la transformée Intra H.264/AVC

5.3.2 Orientation des blocs de la transformée

Comme on a vu précédemment dans la section 5.2, notre méthode réalise un pré-traitement des blocs avant la transformée. Ce pré-traitement correspond à une pseudo-rotation des blocs d'un angle prédéni θ réalisée par cisaillement ("shear"), c'est-à-dire des permutations circulaires appliquées au niveau pixel.

Les blocs 4×4

Dans le cas des blocs 4×4, nous avons déni sept états diérents qui correspondent à sept co-lignes numériques. Elles sont prédénies par l'orientation du bloc (θ) et sont associées à des permutations circulaires.

A l'état 0, aucune opération n'est à eectuer parce que soit les blocs sont non-orientés (leur direction est horizontale ou verticale (θ = 0 ou ±π/2)), soit ils n'ont pas de direction acceptable : leurs orientations sont trop éloignées (plus de ±3o) des angles prédénis pour être associées à un

des autres états.

Les autres états spécient les blocs dont la direction θ est proche (moins de ±3o) des angles :

±27o, ±45o et ±63o, soit pour des cisaillements :

SH4×4(θ) =  1 0 ±1/2ou ± 1 1  , pour θ = ±27o ou ± 45o respect. (5.8) SV4×4(θ) =  1 ±1/2 0 1  , pour θ = ±63o (5.9)

Pour chacun de ces états, des permutations circulaires sont appliquées au niveau pixel an de simuler une pseudo-rotation par cisaillement. Ces permutations permettent de s'aranchir d'une étape d'interpolation inhérente à tout processus réel de rotation (matricielle [UTY95]). De plus,

par ces simples réarrangements de pixels nous simulons une rotation sans créer de trous dans les coins des blocs.

Dans l'état 1 (cf g. 5.6, en haut à gauche), une permutation circulaire est réalisée sur les deux premières colonnes, et dans l'état 2, son opposé, sur les deux dernières colonnes. Dans les états 5 et 6, on applique les mêmes permutations que dans les états 1 et 2 mais sur les lignes. Les états 3 et 4 utilisent des réarrangements de pixels plus complexes : l'état 3 correspond à des permutations circulaires appliquées sur la première et la dernière colonne, puis à la même permutation que celle de l'état 1. L'état 4 est similaire à l'état 3 mais les opérations sont réalisées sur les lignes : la première et la dernière ligne sont réarrangées avant de subir la permutation de l'état 2 (cf g. 5.6).

Fig. 5.6  Permutations circulaires du cas 4×4

Cette gure 5.6 montre que notre pré-traitement redresse bien les blocs vers l'horizontale ou la verticale. Ces permutations circulaires permettent donc de simuler une rotation réelle sans ses désavantages.

Les blocs 8×8

Comme dans le cas 4×4, on peut dénir 15 états d'orientation pour les blocs 8×8 et la DCT 8×8 [JVT04] en se basant sur les co-lignes numériques. Ils sont dénis (sauf l'état 0) par leur orientation θ telle que : θ = ±14o, ±27o, ±37o, ±45o, ±53o, ±63o et ±76o, soit pour des

cisaillements : SH8×8(θ) =  1 0 kH8×8 1  (5.10) SV8×8(θ) =  1 kV8×8 0 1  (5.11) avec kH8×8 = ±1/4, ±1/2, ±3/4 ou 1 pour θ = ±14 o, ±27o, ±37o ou ±45o respectivement, et kV8×8 = ±3/4, ±1/2 ou ±1/4 pour θ = ±53 o, ±63o ou ±76o respectivement.

Cependant, an de limiter le coût de codage de l'information d'orientation qui dépend du nombre d'états dénis, nous avons réalisé une étude statistique sur l'utilisation de ces états dans

le codeur H.264/AVC. Cette étude a été menée sur un ensemble de séquences (Akiyo, Flower, Foreman, Mobile,. . .) et une moyenne a été réalisée. Elle est illustrée sur la gure 5.7, elle reète bien l'utilisation des ces états puisque chaque histogramme généré (pour chacune des séquences testées) a la même forme que cette moyenne.

Fig. 5.7  Fréquence d'utilisation des états 8×8

Cette étude a permis de limiter le nombre d'états d'orientation à seulement 9 (les plus utilisés statistiquement) : 0, ±14o, ±45o, ±63o et ±76o (cf g. 5.8).

Fig. 5.8  Orientations conservées dans le cas 8×8 (en gras)

Dans le cas 8×8, comme dans le cas 4×4, l'état 0 reète les blocs non-orientés et les blocs dont l'orientation est trop éloignée (plus de ±3o) des angles de rotation prédénis.

Et dans chacun des autres états, les orientations sont associées à des réarrangements des pixels appliqués aux blocs par des permutations circulaires semblables à celles du cas 4×4, mais étendues à des blocs de taille 8×8.

Les blocs 16×16

Comme dans les cas 4×4 et 8×8, on peut dénir 31 états d'orientation pour les blocs 16×16 ou macroblocs selon les co-lignes numériques d'angles : θ = ±7o, ±14o, ±20o, ±27o, ±32o, ±37o,

±41o, ±45o, ±48o, ±53o, ±58o, ±63o, ±69o, ±76o ou ±83o, soit pour des cisaillements :

SH16×16(θ) =  1 0 kH16×16 1  (5.12) SV16×16(θ) =  1 kV16×16 0 1  (5.13) avec kH16×16 = ±1/8, ±1/4, ±3/8, ±1/2, ±5/8, ±3/4, ±7/8 ou 1 pour θ = ±7 o, ±14o, ±20o, ±27o, ±32o, ±37o, ±41o ou ±45o respectivement, et k V16×16 = ±7/8, ±3/4, ±5/8, ±1/2, ±3/8, ±1/4 ou ±1/8 pour θ = ±48o, ±53o, ±58o, ±63o, ±69o, ±76o ou ±83o respectivement.

Comme dans le cas 8×8, nous avons réalisé ici une étude statistique sur l'utilisation de ces états dans le codeur H.264/AVC an d'en limiter le nombre et ainsi le coût de codage. Les résultats sont présentés sur la gure 5.9, il s'agit de la moyenne des statistiques obtenues sur un ensemble de séquences.

Fig. 5.9  Fréquence d'utilisation des états 16×16

Il est clair ici que seulement 9 états d'orientation sont principalement utilisés (les plus utilisés statistiquement) : 0, ±7o, ±14o, ±76oet ±83o, les plus proches de l'horizontale et de la verticale.

En eet, pour que le mode de codage Intra 16×16 (prédiction 16×16 et codage 4×4) soit plus ecace que le mode de codage 4×4 (prédiction 4×4 et codage 4×4), il faut que la prédiction 16×16 soit ecace, c'est-à-dire que le bloc 16×16 ou les macroblocs soient homogènes. Or, dans le cas de macroblocs homogènes, les orientations sont généralement proches de l'horizontale ou de la verticale.

L'état 0 correspond toujours aux blocs non-orientés et aux blocs dont la direction est trop éloignée (plus de ±3o) des angles prédénis.

Dans chacun des autres états, ces directions sont associées à des réarrangements des pixels ap- pliqués aux macroblocs grâce à des permutations circulaires comparables à celles des cas 4×4 et 8×8, mais étendues aux blocs de taille 16×16.

Nous avons choisi ici d'orienter directement les macroblocs, mais alternativement nous aurions pu choisir de les orienter par blocs 4×4. En eet, la transformation appliquée ensuite à ces macroblocs est la DCT 4×4 entière de H.264/AVC. Il est donc indiérent de les redresser par blocs 16×16 ou par blocs 4×4 comme illustré sur la gure 5.10.

Fig. 5.10  Exemple de redressements par blocs 16×16 (en haut) ou 4×4 (en bas) Les redressements 4×4 et 16×16 sont donc identiques, on obtient les mêmes coecients DCT et en même nombre, seules leurs positions dans le macrobloc dièrent.

Il est à noter que ces macroblocs subissent après la DCT une seconde transformation. Il s'agit d'une transformée de Hadamard appliquée aux 16 coecients DC des blocs 4×4 le composant (cf Annexe A.3.4 (A.3)).

L'orientation directe des macroblocs prend alors son sens. Il est évident sur l'exemple de la gure 5.10 que, dans ce cas, les coecients DC sont eux aussi redressés améliorant ainsi l'ecacité de cette transformée de Hadamard.

Remarque : Cette double transformation appliquée aux macroblocs peut être vue comme une décomposition multi-échelle (dans l'esprit des ondelettes). En eet, à la reconstruction, si on ne peut décoder que les coecients DC, on obtient alors une version sous-échantillonnée de ces macroblocs.

La sélection des orientations

An d'améliorer les transformations DCT 4×4 et 8×8 grâce à notre méthode d'orientation des blocs résiduels Intra par pré- et post-traitements, il faut sélectionner la bonne orientation pour chacun des blocs de la séquence vidéo traitée.

Cette sélection est basée sur l'optimisation débit-distorsion de H.264/AVC (RDO "Rate- Distortion Optimization") [JVT05] [WSJ+03] [WSBL03] [TR03]. Elle consiste à tester tous les

qui permet d'obtenir la plus faible distorsion pour un débit donné ou le meilleur débit pour une distorsion donnée.

Le coût de codage se calcule pour un macrobloc de taille 16×16 uniquement et dépend de deux variables : le débit et la distorsion.

Le débit d'un macrobloc est la somme des débits des blocs le composant. Ces débits sont eux- mêmes la combinaison des débits des coecients et de l'en-tête de bloc contenant, le cas échéant, les informations d'orientation.

La distorsion est toujours la distorsion globale du macrobloc quelle que soit la taille des blocs utilisée pour le codage. Elle est donnée par l'erreur quadratique du macrobloc reconstruit selon :

D = 15 X i=0 15 X j=0  IM B(i, j) − ˆIM B(i, j) 2 (5.14) où IM B(i, j) est le pixel (i, j) du macrobloc original et ˆIM B(i, j) son correspondant dans le

macrobloc reconstruit.

Pour le codage Intra d'un macrobloc, chaque taille de blocs (16×16, 8×8 et 4×4) est testée avec tous les modes de prédiction Intra et tous les états d'orientation disponibles. En d'autres termes, pour chaque taille de blocs, au lieu de coder chaque résidu de prédiction (4 dans le cas 16×16, et 9 dans les cas 8×8 et 4×4) une seule fois, notre méthode le code autant de fois qu'il y a d'états d'orientations possibles (9 dans les cas 16×16 et 8×8, et 7 dans le cas 4×4), comme illustré sur l'organigramme de la gure 5.11

Fig. 5.11  Déroulement du codage d'un macrobloc Intra H.264/AVC

Ces solutions sont alors comparées an d'en isoler la meilleure combinaison (taille de bloc, pré- diction(s), orientation(s)) au sens débit-distorsion. Cette combinaison sera utilisée, par la suite, pour le codage réel du macrobloc.

Par rapport à un codeur classique, notre pré-traitement ne fait qu'ajouter des combinaisons à tester. Cette méthode de sélection des orientations est ecace, mais complexe en nombres d'éva- luations de couples débit-distorsion. Cette complexité ne touche cependant ici que la sélection des modes de prédiction Intra qui ne représente qu'une partie du codage H.264/AVC. La complexité globale du codeur n'en est que peu aectée.

Résultats expérimentaux

Cette méthode de pré- et post-traitements des blocs résiduels Intra 4×4, 8×8 et 16×16 a été insérée dans un codeur H.264/AVC an d'en vérier les performances, comme représenté sur le schéma 5.12 (blocs Pré-tt, Post-ttet Information Orientation).

Fig. 5.12  Schéma de l'insertion de nos pré- et post-traitements dans le codeur H.264/AVC Dans un premier temps, les informations d'orientation de chacun des blocs ne sont pas codées, ce sera le sujet de la section suivante 5.3.3. Nous cherchons seulement pour l'instant à vérier que notre méthode d'orientation permet eectivement d'améliorer le codage Intra H.264/AVC.

Notre méthode s'insère dans le JM10 [jm06] fourni par le JVT (Joint Video Team de l'ISO et de l'ITU (cf Annexe A.1)). Les tests ont été réalisés en "High Prole" et à "Level 4.0" permettant ainsi l'utilisation de la DCT entière 8×8 [JVT04] et de CABAC [JVT05] [TR03] [WSBL03] [SWS03] [Ric02a] (cf Annexe A.3) pour le codage des macroblocs.

Ces tests ne s'appliquent donc qu'aux images résiduelles de luminances Intra. Ils sont obtenus en faisant varier le pas de quantication (QPI) de ces images.

Les expérimentations ont été menées sur un ensemble de séquences CIF à 15 f.p.s. et SD à 60 f.p.s.. Les résultats de deux de ces séquences : Mobile et Flower en CIF à 15 f.p.s., sont illustrés pour les bas débits sur la gure 5.13 et pour les hauts débits sur la gure 5.14.

(a) Séquence Mobile

(b) Séquence Flower

(a) Séquence Mobile

(b) Séquence Flower

Ces courbes 5.13 et 5.14 illustrent bien que notre méthode d'orientation par pré- et post- traitements des coecients résiduels Intra H.264/AVC permet d'en améliorer le codage aussi bien dans les hauts débits (cf g. 5.14) que dans les bas débits (cf g. 5.13). Ce gain est croissant avec le débit et atteint pratiquement 2 dB pour la séquence Mobile (cf g. 5.14(a)) et plus de 1.5 dB pour la séquence Flower (cf g. 5.14(b)).

L'ensemble des résultats peut être résumé en utilisant la métrique de Bjöntegaard [Bjö01]. Cette métrique calcule sur des plages de 4 QP (ici QPI) successifs les aires entre les deux courbes à comparer et dénit à partir de ces aires les diérences en PSNR et en débit. Ces diérences permettent alors d'obtenir le gain en PSNR et le pourcentage de débit conservé par l'une des méthodes comparées.

Ces résultats peuvent alors, selon cette métrique de Bjöntegaard, être représentés par des his- togrammes de gain en PSNR et en pourcentage de débit, comme présenté sur la gure 5.15.

(a) Gain en PSNR

(b) Pourcentage de débit conservé

Des histogrammes moyens des gains en PSNR et débit peuvent alors être calculés pour les séquences CIF et SD selon cette même métrique, comme illustré sur la gure 5.16.

(a) Gain en PSNR (b) Pourcentage de débit conservé

Fig. 5.16  Moyenne des résultats Intra selon la métrique de Bjöntegaard

Ces histogrammes permettent d'armer que notre méthode d'orientation par pré- et post- traitements des images résiduelles Intra H.264/AVC en améliore le codage quelle que soit la séquence traitée (quelles que soient sa taille et sa fréquence).

On obtient par moyennage de ces résultats :

Type de séquence Gain en PSNR Pourcentage de débit

CIF à 15 f.p.s. 0.45 dB -5.09%

SD à 60 f.p.s. 0.26 dB -3.63%

Tab. 5.1  Performances moyennes de notre méthode d'orientation par rapport à H.264/AVC

Les performances de notre méthode d'orientation des images résiduelles Intra sont signica- tives. En eet, le gain en PSNR est d'environ 0.5 dB et notre méthode permet de conserver un peu plus de 5% de débit par rapport à H.264/AVC sur le traitement des séquences CIF à 15 f.p.s.. Ce gain est d'environ 0.25 dB pour les séquences SD à 60 f.p.s. avec une conservation de 3.5% de débit.

Cependant, on peut remarquer que notre méthode est légèrement moins performante sur les séquences de type SD.

En eet, ces séquences contiennent plus d'images (fréquence plus élevée, 60 f.p.s.), images qui sont aussi plus grandes. Il y a donc beaucoup plus de macroblocs à traiter pour ces séquences, et ceux- ci contiennent plus de détails (orientés). Il devient alors moins aisé d'exploiter ces orientations ecacement. Ceci implique que le gain apporté par notre méthode est moins représentatif sur ces séquences que sur les séquences CIF.