• Aucun résultat trouvé

1.3.1

Repr´esentation du mouvement

En compression vid´eo, afin d’exploiter au mieux les redondances temporelles entre les images successives, on introduit une notion de mouvement pour caract´eriser les diff´erences entre ces images. Il existe diff´erentes mani`eres de coder cette information de mouvement. La mani`ere la plus intuitive est sans doute d’affecter un vecteur d´eplacement (vecteur mouvement en coordonn´ees cart´esiennes) `a chaque objet d’une s´equence vid´eo. Ces m´ethodes ont ´et´e largement ´etudi´ees et int´egr´ees dans le standard MPEG-4 [MPEG4]. Dans ce type de codage, chaque ´el´ement d’une sc`ene est cod´e ind´ependamment : on s´epare le fond des objets en mouvement. Dans chaque image, un objet est repr´esent´e par la d´eformation de son contour et par un vecteur mouvement traduisant son d´eplacement. Cependant ces m´ethodes n’ont pas ´et´e utilis´ees par les industriels malgr´e leur int´egration dans le standard MPEG-4 car la segmentation de la sc`ene en objets est difficile `a obtenir avec des algorithmes rapides. De plus, le fond d’une s´equence est rarement statique `a cause des d´efauts des capteurs, et le d´ebit du codage des contours et de leurs d´eformations n’est pas n´egligeable.

Une strat´egie oppos´ee au codage par objet est le codage par champs denses qui consiste `a utiliser un vecteur mouvement par pixel. Bien entendu, dans cette m´ethode, le coˆut de l’information de mou- vement est ´elev´e. Les algorithmes de compression utilisant les champs denses regroupent les vecteurs mouvement afin de limiter ce coˆut. Dans [HP01] le champ dense est calcul´e `a l’aide d’une estimation de mouvement bas´ee sur les champs de Markov (MRF) [KD92]. Les vecteurs lisses sont regroup´es (en fonction de leur direction et de leur sens) puis un codage pr´edictif (cf. 1.3.3) exploitant les re- dondances spatiales du champ de vecteurs est appliqu´e. Dans [DH98] les auteurs proposent d’utiliser l’algorithme de Horn et Shunck [HS81] pour calculer les champs denses de vecteurs mouvement. Cet algorithme hi´erarchique produit un champ de vecteurs pour chaque “niveau” de r´esolution ; les niveaux s’´echelonnant de 1 vecteur pour toute l’image `a 1 vecteur par pixel. Pour chaque niveau de r´esolution, les fronti`eres dans le champ de vecteurs sont d´etect´ees afin de segmenter le mouvement. Les diff´erentes zones sont ensuite liss´ees `a l’aide d’une op´eration morphologique.

L’information de mouvement peut aussi ˆetre repr´esent´ee par maillage. Pour la m´ethode de Tri- angle Motion Compensation (TMC) [NH91], [Bru90] l’image est d´ecoup´ee en triangles. Le mouve- ment est alors repr´esent´e par la d´eformation de ces triangles d’une image `a l’autre. Cette d´eformation correspond `a une transformation 2D affine. Dans [Cam04] une repr´esentation du mouvement par maillage est propos´ee conjointement avec une transform´ee en ondelettes t+2D.

Enfin la repr´esentation par bloc du mouvement est la plus utilis´ee dans les standards vid´eo. Ce partitionnement des images implique le codage d’un vecteur mouvement en coordonn´ees cart´esiennes pour chaque bloc. Ces algorithmes, `a taille de bloc fixe, ne n´ecessitent pas de codage de la segmen- tation du mouvement et sont adapt´es `a la transform´ee carr´ee utilis´ee dans la quasi-totalit´e des standards d’image fixe et vid´eo : la DCT 2D. Le d´efaut de cette m´ethode est qu’elle n’exploite pas les corr´elations spatiales du champ de vecteurs `a l’int´erieur des objets. Dans [CYC90] les vec- teurs issus d’un BMA sont regroup´es `a l’aide d’un algorithme de Split and Merge. La segmentation

Etat de l’art sur le codage de l’information de mouvement 23

engendr´ee est ensuite cod´ee comme un arbre pour lequel chaque noeud contient un vecteur mou- vement. Enfin la norme H.264/AVC [H.264/AVC] applique une segmentation du macrobloc allant du 16×16 jusqu’au 4×4. Cependant le codage du mouvement n’est pas hi´erarchique comme dans [DH98], [CYC90] mais chaque bloc a un vecteur.

1.3.2

Codage des vecteurs mouvement avec pertes

Dans les standards de codage d’image et de vid´eo avec pertes, on quantifie uniquement l’in- formation de texture afin de r´eduire l’entropie de cette information. Le codage des vecteurs mou- vement avec pertes [JFB95], [YYW95], [DSCW00] a pour philosophie de traiter le mouvement en tant qu’information quantifiable, comme l’information de texture. La proportion de l’information de mouvement peut ˆetre plus ´elev´ee que celle li´ee `a la texture, notamment `a bas et tr`es bas d´ebit. Dans [AAAB05] une quantification de vecteurs mouvement de tr`es grande pr´ecision pixellique est introduite dans un codeur ondelettes. Le vecteur mouvement quantifi´e, transmis au d´ecodeur, est

f

mv = round(mv/Qmv) o`u Qmv est le pas de quantification attribu´e au vecteur courant mv. Le co-

dage est fait en boucle ouverte ce qui signifie que la quantification des vecteurs mouvement est faite apr`es la compensation de mouvement. Par cons´equent la reconstruction exacte par le d´ecodeur n’est pas possible. Cependant les applications vis´ees sont les bas d´ebits, pour lesquels la reconstruction exacte n’est pas essentielle [ABMD92]. Afin d’am´eliorer le sch´ema, dans [AAB06] une allocation de d´ebit optimum entre le d´ebit allou´e au codage de la texture et celui des vecteurs mouvement quan- tifi´es est propos´ee. Ce sch´ema de compression des vecteurs a ´et´e test´e dans H.264/AVC [CAA+09] en boucle ferm´ee. Pour chaque bloc, un pas de quantification du vecteur (Qmv) est s´electionn´e `a

l’aide du crit`ere d´ebit-distorsion. L’´equation prend en compte le codage pr´edictif des vecteurs utilis´e dans la norme H.264/AVC. Par cons´equent, le pr´edicteur du vecteur est lui aussi quantifi´e. Cette m´ethode n´ecessite la transmission d’un Qmv pour chaque vecteur, ce qui engendre une nouvelle in-

formation de codage tr`es coˆuteuse. En pratique, la s´election du Qmvest effectu´ee image par image.

Les r´esultats pr´eliminaires sont encourageants.

1.3.3

Codage pr´edictif des vecteurs mouvement

Le coˆut de l’information de mouvement, pour les algorithmes de compression utilisant une com- pensation de mouvement par bloc, d´epend de trois param`etres :

– la taille des blocs utilis´es (plus les blocs sont de petite taille, plus le nombre de vecteurs `a coder est ´elev´e).

– la r´esolution sous-pixellique utilis´ee pour la compensation de mouvement (la valeur d’un vec- teur au 1

4 de pixel est multipli´ee par quatre). – l’entropie de l’information.

Pour r´eduire l’entropie de l’information, on utilise g´en´eralement un codage pr´edictif. Dans ce codage on consid`ere non plus l’entropie de la source mais celle des r´esiduels de cette source. Pour le codage des vecteurs mouvement le r´esiduel εmv va ˆetre transmis `a la place du vecteur mv. Le

εmv= mv − p (1.7)

o`u p est le pr´edicteur `a transmettre. L’efficacit´e de la m´ethode d´epend de la pertinence du pr´edicteur utilis´e. Dans le cas des algorithmes hi´erarchiques [DH98], [CYC90] chaque vecteur mouvement peut ˆetre pr´edit par la valeur du vecteur parent. Dans les standards vid´eo, afin d’exploiter les redon- dances spatiales des champs de vecteurs mouvement, la valeur du pr´edicteur d´epend de la valeur des vecteurs voisins d´ej`a encod´es/d´ecod´es. Ce pr´edicteur correspond `a un m´edian (cf. section 1.3.4). Dans [Ebr94] le pr´edicteur est le module de ces vecteurs. Dans [Kri97] le pr´edicteur est le vecteur qui a le plus d’occurrences dans une fenˆetre autour du vecteur `a pr´edire. Les redondances tem- porelles entre les champs de vecteurs mouvement de deux images ont aussi ´et´e exploit´ees [ZZ91], [YVK95]. Dans [YVK95] les r´esultats obtenus pour des s´equences contenant des champs de vecteurs mouvement complexes sont meilleurs que pour les s´equences contenant des mouvements simples. Pour ces s´equences, l’utilisation d’un pr´edicteur spatial est plus efficace. Pour r´eduire la quantit´e d’information, le codeur VC1 [VC106], transmet en plus de l’erreur de pr´ediction du vecteur, un drapeau indiquant quelle r´esolution pixellique a ´et´e utilis´ee.

D’autres m´ethodes plus ´evolu´ees choisissent parmi plusieurs pr´edicteurs. La m´ethode d´efinie dans [HP01] propose un m´edian des vecteurs voisins appartenant `a une mˆeme classe, ce qui requiert un stockage de la classe utilis´ee pour la pr´ediction de chaque vecteur. La segmentation des classes de pr´edicteurs d´epend des diff´erents mouvements. L’hypoth`ese est que les pr´edicteurs spatiaux sont inefficaces dans le cas d’une rupture du mouvement dans le champ de vecteurs. Cette hypoth`ese est aussi v´erifi´ee dans [YVK95], avec l’utilisation de pr´edicteurs temporels. Pour r´eduire la complexit´e de l’estimation de mouvement dans [DNG01], une comp´etition entre un nombre ´elev´e de pr´edicteurs est effectu´ee et l’indice du pr´edicteur est transmis au d´ecodeur en plus de l’erreur de r´esiduel. Dans [CW97], les redondances spatiales et temporelles sont exploit´ees pour am´eliorer le codage des vecteurs. Le choix entre deux types de pr´edicteurs d´epend des statistiques locales, ce qui ne permet pas un choix optimal entre les deux corr´elations. Une comp´etition exhaustive entre un pr´edicteur spatial et un pr´edicteur temporel est utilis´ee dans [TWL05] mais uniquement pour le mode Direct des images B. Finalement une comp´etition exhaustive entre trois vecteurs voisins spatiaux est mise en oeuvre dans [DKBR99]. Dans cette m´ethode, seule la redondance spatiale est exploit´ee, ce qui peut ˆetre inefficace lors d’une grande disparit´e dans le champ de vecteurs mouvement. Dans ce cas, une pr´ediction temporelle devrait ˆetre plus efficace.

1.3.4

Codage de l’information de mouvement dans H.264/AVC

1.3.4.1 Le pr´edicteur m´edian

La norme H.264/AVC utilise un codage pr´edictif des vecteurs mouvement. Le pr´edicteur p de l’´equation (1.7) est un m´edian spatial pour chacune des composantes (horizontale et verticale). Nous noterons ce pr´edicteur mvH.264. Les trois vecteurs voisins du vecteur courant mv, utilis´es pour le

calcul du m´edian sont mva, mvb, mvc, repr´esent´es dans la figure 1.7. En fonction de la taille des

blocs voisins et du bloc courant, le vecteur mvc peut-ˆetre remplac´e par le vecteur mvd. Pour des cas

Etat de l’art sur le codage de l’information de mouvement 25

mv mvb

mvd mvc

mva

Figure 1.7 – Localisation des vecteurs spatiaux et temporels utilis´es pour la pr´ediction du vecteur courant mv.

ou mvb ou mvc ou 0. Ces caract´eristiques sont l’appartenance de ces blocs `a l’image, la taille du

bloc courant et des blocs voisins et les images de r´ef´erence utilis´ees pour le codage des blocs voisins. Par exemple, si un seul des vecteurs voisins a la mˆeme image de r´ef´erence que le vecteur courant, la valeur de p est ´egale `a ce vecteur voisin. De mˆeme, si l’un des blocs a, b, c, ou d est cod´e en Intra (modes pour lesquels il n’y a pas de vecteur mouvement) le vecteur mouvement pour ce bloc est ´egal `a 0.

Les slices B (cf. section 1.1) utilisent des images dans le futur et le pass´e pour la compensation de mouvement [FG03]. De plus, il est possible d’utiliser des pr´edictions bidirectionnelles qui sont des combinaisons lin´eaires de deux compensations de mouvement impliquant l’utilisation de deux vecteurs mouvement (un vecteur par pr´edicteur de bloc). Les images de r´ef´erence pour une pr´ediction bidirectionnelle peuvent se trouver dans le futur et le pass´e ou toutes dans le futur ou toutes dans le pass´e. Pour le m´edian, ceci ajoute une contrainte suppl´ementaire de direction (future ou pass´ee ou les deux) pour les vecteurs voisins mva, mvb, mvc et mvd.

1.3.4.2 L’information de mouvement pour le mode Skip

Le mode Skip est un mode particulier du codage Inter pour les slices P (cf. section 1.1). Un macrobloc cod´e avec ce mode n’a ni r´esiduel de texture ni r´esiduel de vecteur mouvement, la seule information transmise est le mode (mode Skip). Cependant le Skip a un vecteur mouvement. Ce vecteur mouvement est le vecteur mvH.264 pour un bloc Inter 16×16 d´efini pr´ec´edemment, except´e

les cas o`u les blocs a et b n’appartiennent pas `a l’image. En effet, le mode Skip est cens´e servir pour les zones d’une s´equence ne contenant pas ou peu de mouvement (g´en´eralement le mouvement a une probabilit´e d’apparition plus ´elev´ee dans le centre des images que dans les bordures). De mˆeme si un des vecteurs mva, mvb est ´egal `a 0, la valeur du vecteur pour le mode Skip est ´egale `a 0. Dans ce

cas, on force le vecteur `a ˆetre ´egal `a 0, afin de favoriser la s´election du mode Skip si le mouvement est nul.

1.3.4.3 L’information de mouvement pour le mode Direct

Le mode Skip des images P a son ´equivalent pour les images B : le mode Direct [TWL05]. Dans la norme H.264/AVC il existe deux types de mode Direct : le spatial et le temporel. Ce mode a deux vecteurs mouvement : mvL0

1 et mvL11 repr´esent´es dans la figure 1.8. L0 et L1 font respectivement r´ef´erence aux “listes” (images de r´ef´erence P) pass´ee et future de la figure 1.8.

ImageB courante L1 - ¾ - ¾ L0 j i i mvL1 1 mvL0 1 dL0 dL0L1 mvcolL1 -

Figure 1.8 – Pr´edicteurs du mode Direct temporel des slices B.

Les vecteurs mouvement pour le Direct spatial sont calcul´es comme le pr´edicteur d’un bloc 16×16 bidirectionnel. Le mode Direct temporel utilise le vecteur temporel (le vecteur “collocated” mvcolL1)

de l’image pass´ee de r´ef´erence L1 qui traverse l’image B courante. Ce vecteur est ensuite mis `a l’´echelle en fonction des distances temporelles entre l’image B courante et les images de r´ef´erence. Les vecteurs mouvement pour le mode Direct temporel sont donn´es par les formules suivantes :

mvL01 = mvcolL1 dL0L1 × dL0 (1.8) mvL1 1 = mvcolL1 dL0L1 × (dL0− dL0L1) (1.9)

o`u dL0est la distance temporelle entre l’image courante et l’image pass´ee L0 et dL0L1est la distance

temporelle entre l’image future et l’image de r´ef´erence L0.