Brevet FR2860678A1 — publié le 20050408

L'invention concerne un procédé et un dispositif de codage différentiel d'un bloc d'image à codage prédictif. Elle concerne plus particulièrement les procédés ou dispositifs de codage exploitant le mode direct . Comme expliqué plus loin, le mode direct est un mode de prédiction bidirectionnel exploitant la compensation de mouvement, dont les composantes des vecteurs mouvement sont dérivées des composantes du vecteur mouvement utilisé pour le codage du macrobloc co-localisé d'une image suivante à codage prédictif. Le domaine est celui de la compression vidéo et tout particulièrement celui du codage vidéo de type MPEG 4 partie 2 ou partie 10, H.263 et H.261. Dans les normes de compression de données, par exemple de type MPEG, les images à coder sont généralement des images de type intra et inter et dans ce dernier cas, à codage prédictif, de type P ou à codage prédictif bidirectionnel de type B. Le terme image est pris ici dans son sens large et regroupe également les plans objets vidéo composant l'image, plus connus sous l'appellation VOP, acronyme de l'anglais Video Object Plane. De manière classique, l'estimateur de mouvement contenu dans un codeur est, dans un premier temps, sollicité pour extraire le champ de mouvement de l'image de type P. Ensuite, après le codage de cette image P, il est fait à nouveau appel à l'estimateur de mouvement pour chacune des images B, pour les modes de prédiction anticipée (forward dans la norme MPEG), différée (backward) et bidirectionnel classiques. A l'issue des différentes estimations de mouvement de chacune des images B, le codage est effectué en choisissant le meilleur mode parmi tous les modes disponibles, dont le mode direct temporel , selon le critère en vigueur dans le codeur. Ce mode direct temporel , expliqué par exemple au paragraphe 7. 6.9.5. de la norme ISO/IEC 14496-2, utilise les vecteurs mouvement du macrobloc co-localisé dans l'image de type P la plus récemment décodée pour effectuer la prédiction bi-directionnelle du macrobloc courant dans l'image de type B. Le macrobloc co-localisé est le macrobloc se trouvant au même emplacement, c'est à dire ayant le même index vertical et horizontal que le macrobloc courant de l'image P. La figure 1 représente la prédiction de mouvement exploitant le mode direct. Quatre images successives sont représentées selon l'ordre d'affichage, c'est à dire avant réordonnancement, une première image de référence de type 1 ou P, une deuxième et troisième image de type B et une quatrième image de référence de type P. La prédiction pour le macrobloc courant MBp de la quatrième image de type P, référencé 1, est le macrobloc référencé 2 de la première image de type 1 ou P. Le vecteur mouvement correspondant MVp est référencé 3. Le macrobloc co-localisé correspondant au macrobloc MBp, pour la deuxième image, est référencé 4. La prédiction de type direct, pour ce macrobloc appartenant à l'image B, donne un premier macrobloc MBfw dans la première image et un deuxième macrobloc MBbck dans la dernière image, ces macroblocs référencés respectivement 5 et 6 correspondent au vecteur de mouvement anticipé MVF et au vecteur de mouvement différé MVB référencés 7 et 8 sur la figure. Bien que les vecteurs de mouvement sont généralement attribués, dans la norme MPEG, à des macroblocs, le procédé peut s'appliquer à de simples blocs d'images et le raisonnement se fera donc, par la suite, indifféremment sur des blocs d'images ou des macroblocs. A titre d'exemple, l'approche traditionnelle utilisée lors de l'estimation de mouvement permettant d'extraire le vecteur d'un bloc d'une image P peut être basée sur la technique de l'appariement par blocs, blockmatching en anglais, dans une fenêtre de recherche, en minimisant la somme de la valeur absolue des différences inter-image de la manière suivante : p =)'i ()-+./+)H i>J=0 \2x,dy=N . ( P YX,dy=N SAD = Min(SADdyJ2jy=~N avec : - i, j : indices lignes et colonnes des pixels contenus dans le bloc de taille L*L, - Pcur(i,j): bloc d'une image de type P courante, - IPprev(i,j): bloc d'une image de type 1 ou P précédente (du point de vue temporel), - SADdx,dyP: somme de la valeur absolue des différences (acronyme de l'anglais Sum of Absolute Différences) entre les valeurs de luminance des pixels d'un bloc d'une image courante de type P et d'un bloc déplacé de dx, dy d'une image précédente de type 1 ou P. - SADDx,DyP: valeur minimum de SADdx,dyP sur l'ensemble des blocs d'image dans une fenêtre de recherche de dimension 2N+1, 2N+1 et correspondant à un déplacement Dx, Dy En ce qui concerne le bloc co-localisé de l'image B, ce dernier est prédit selon le mode direct à l'aide des vecteurs MVF et MVB tels que : MBpYddrc = MBbck 2 ' MBv demi-somme des blocs MBbck et MB,, pixel à pixel, avec: - MBbck = Pnext (Xbek, Ybek) en prédiction différée ou backward. pnextlxbck.Ybck) signifie le bloc de prédiction appartenant à l'image P suivante, du point de vue temporel, dont la position correspond à celle du bloc co-localisé déplacé du vecteur de composantes xbck, ybck. - MB,," = IPprev (x for' Y for) en prédiction anticipée ou forward. ipprev(Xfor5Yfor) signifie le bloc de prédiction appartenant à l'image I/P précédente, dont la position correspond à celle du bloc co-localisé déplacé du vecteur de composantes Xfor, yfor. - xback, ybck, composantes du vecteur MVB qui sont dérivées des composantes du vecteur MVp du bloc co-localisé MBp. - xfor, Y for , composantes du vecteur MVF qui sont dérivées des composantes du vecteur MVp du bloc co-localisé MBp. Les vecteurs mouvement MVB et MVF attribuées au bloc co-localisé, sont les vecteurs colinéaires au vecteur mouvement MVp, pointant respectivement dans l'image suivante de type P et dans l'image précédente de type 1 ou P, originaires du bloc co-localisé. MBprddrc est le bloc de prédiction de l'image B en mode direct, calculé à partir des blocs de prédiction anticipée et différée. Dans une telle approche, l'estimation de mouvement et le choix du mode de prédiction des blocs MB des images P sont réalisés indépendamment du contenu des images B précédentes, du point de vue temporel. Le codage, c'est à dire la compression de données, n'est en conséquence pas optimal pour ces images de type bidirectionnel. L'invention a pour but de pallier les inconvénients précités. Elle a pour objet un procédé de codage différentiel d'un bloc d'image courant dans une première image de référence à partir d'un bloc d'image prédit dans une deuxième image de référence, les images de référence encadrant une ou plusieurs images de type bidirectionnel ou type B dont un codage différentiel peut prendre en compte des blocs de ces images de référence, comportant une étape de sélection du bloc prédit, parmi des blocs candidats, en fonction d'une différence Dpdx,dy entre le bloc courant et un bloc candidat désigné par un vecteur de mouvement Vp de composantes dx, dy attribué au bloc courant, caractérisé en ce que la sélection est également fonction d'une différence DBdrx,dry entre le bloc co-localisé du bloc d'image courant dans une image de type B et le bloc dans une image de référence désigné par le vecteur de mouvement, de composantes drx, dry, attribué au bloc co-localisé et qui est colinéaire au vecteur de mouvement Vp. Selon une caractéristique particulière, le vecteur mouvement de composantes drx, dry, est un vecteur mouvement différé (backward) entre l'image de type B et la première image de référence ou bien un vecteur de mouvement anticipé (forward) entre l'image de type B et la deuxième image de référence. Selon une caractéristique particulière, la sélection prend en compte la différence DBdrxfw,dryfw correspondant au vecteur mouvement colinéaire de composantes drxfw, dryfw entre l'image de type B et la deuxième image de référence ainsi que la différence DBdrxbck,drybck correspondant au vecteur mouvement de composantes drxbck, drybck entre l'image de type B et la première image de référence. Selon une caractéristique particulière, la sélection est fonction de la différence DBodrx,dry correspondant à un vecteur de mouvement colinéaire entre la première image de type B, Bo, et une image de référence ainsi que de la différence DB1drx,dry correspondant à un vecteur de mouvement colinéaire entre la deuxième image de type B, Bi, et une image de référence. Selon une caractéristique particulière, le bloc sélectionné parmi les blocs candidats correspond au minimum d'une fonction des valeurs de différence Dpdx,dy et D Bdrxfw,dryfw, DBdbck,drybck calculées pour ces blocs candidats. Selon une mise en #uvre particulière, la différence est calculée à partir des sommes des valeurs absolues des différences (SAD) entre les valeurs de luminance des pixels des blocs. Les avantages de l'invention concernent l'amélioration de la qualité de l'image à débit régulé ainsi qu'un coût moindre à qualité constante. Le choix entre plusieurs types de SAD, lors de la sélection des vecteurs de l'image P, accroît sensiblement l'homogénéité du champ de mouvement. Le procédé selon l'invention effectue une estimation de mouvement au niveau du bloc de l'image P en considérant non seulement la différence inter-image (SADP) inhérente au vecteur de déplacement mais également l'erreur de prédiction due au mode de prédiction directe de chaque bloc co-localisé sur chacune des images de types B se situant entre les deux images I/P, P. Le coût de codage des blocs des images de type B en mode direct est pris en compte pour le choix du vecteur mouvement du bloc co-localisé de l'image de type P. Le procédé permet de favoriser, lors du codage des images B, le mode direct qui représente généralement le mode le plus économique pour ce type d'image en terme de coût de codage. Ce mode direct peut, sous certaines conditions, conduire au mode macrobloc sauté ou skipped MB (par exemple décrit au 7.6.6 de la norme ISO 13818-2) qui est un mode de codage correspondant à un résidu nul, à coût quasiment nul. D'autres particularités et avantages de l'invention apparaîtront clairement dans la description suivante donnée à titre d'exemple non limitatif et faite en regard des figures annexées qui représentent : - la figure 1, une prédiction de bloc selon le mode direct, - la figure 2, une prédiction d'un bloc d'une image Bo et d'une image Bi exploitant le mode direct, La figure 2 représente la prédiction pour un bloc courant MBp d'une image P ainsi que les prédictions de type direct pour les blocs colocalisés appartenant aux images de type B, une première image appelée Bo et une seconde image appelée B1. Les termes précédemment utilisés sont indicés zéro ou un selon qu'ils concernent la première image Bo ou la seconde image B1. Ainsi, pour ce qui concerne l'image Bo, les vecteurs mouvement 7 et 8 sont libellés MVF0 et MVB0 et désignent respectivement les blocs prédits MBfw,0,MBbck0 pour les images de référence I/P et P. Les vecteurs mouvement correspondant à l'image B1 sont libellés MVF' et MVB et désignent respectivement les blocs prédits MBfw1,MBbck1 pour les images de référence I/P et P. Dans ce contexte où deux images de type B se situent entre les images de référence I/P et P, sur la base du calcul de la SAD, un critère envisageable pour sélectionner le vecteur de mouvement MVp correspondant au bloc de l'image P devient : SAD =MinSADp BO +SADeI )'dy-N avec : - SADdx,dyP, la somme de la valeur absolue des différences pour un déplacement dx, dy pour le bloc de l'image P, - SADdrx,dryB0, la somme de la valeur absolue des différences pour le mode de prédiction de type direct pour l'image Bo. - SADdrx,dryB1, la somme de la valeur absolue des différences pour le mode de prédiction de type direct pour l'image Bi. Ce critère est dit basé sur les SAD multiples dans la mesure où le choix du vecteur destiné à l'image P est basé sur la prise en compte de plusieurs erreurs de prédiction, celle inhérente à la prédiction du macrobloc de l'image P et celles relatives aux macroblocs des images B. Pour la première image de type B, Bo, et dans le cadre de l'exemple illustré par la figure 2 où deux images B se trouvent entre les deux images I/P, P, les vecteurs de composantes drx, dry prennent respectivement pour valeurs, en ce qui concerne les prédictions anticipée (forward) et différée (backward) du mode direct : drx0 = dx/3 dry% = dy/3 drx2ck = -2dx/3 dry2ek = -2dy/3 et avec: MBprdd o = (MB2Ck + 2 MBJw ) avec : -MBck -'nextdxbck ,drybck) en prédiction backward 5 10 15 20 MÊ, =1/PpYe"(dx,,, ,dfi" ) en prédiction forward, La valeur de SAD pour l'image Bo est alors : Bcuro(i,j)est le bloc co-localisé 4 de l'image Bo correspondant au bloc MBp courant. De façon similaire pour la deuxième image de type B, Bi, la valeur de SADdrx,dryB1 est obtenue via le mode direct à l'aide des vecteurs : MBur est le bloc co-localisé 9 de l'image B1 correspondant au bloc MBp courant 1. L'exemple précédent, qui permet d'illustrer le procédé, préconise de faire la sélection du vecteur Dx, Dy, en exploitant la somme des 3 valeurs SAD ; où chaque SAD est dotée de la même pondération soit 1. Une première variante consiste à pondérer différemment les SAD selon le type d'image, dans la mesure où le vecteur recherché concerne principalement l'image P : a et (3 étant des coefficients de pondération, par exemple a = 0. 5 ss = (1-a)/(m-1) où m représente la période des images P, c'est à dire le nombre d'intervalles ou périodes image entre deux images P. L'exemple des figures 1 et 2 correspond, pour m, à une valeur de 3. Une deuxième variante consiste à prendre en compte le déplacement d'objets fugitifs, apparaissant dans des images B et pouvant entraîner des mouvements des blocs co-localisés de ces images B différents des blocs correspondant des images P et I/P. Dans l'exemple de 3 images de type B encadrées par des images de référence, un calcul de SAD peut être : SAD Dx,, . ( p f3. BO SAD BI B2 'yb: ,dy=N avec par exemple = (1-a) Médian correspond à la fonction médiane qui rejette donc les valeurs extrêmes des SAD des images de type B. Ce critère intègre le fait que la SADP doit être faible, mais de plus permet de rechercher le vecteur qui minimise une majorité des SADB. L'objectif est de sélectionner un vecteur qui corresponde à un compromis entre une meilleure prédiction du macrobloc de l'image P et dans une moindre mesure une meilleure prédiction des macroblocs co-localisés des images B et ce critère intègre le fait qu'un macrobloc appartenant à une zone d'image non prédictible dans une image B, via la prédiction temporelle, est rejeté, de façon à ne pas biaiser le critère de décision. Au sein de l'image B, cette zone non prédictible est codée par la suite, à l'aide d'autres modes de codage, par exemple intra. S'il y a seulement 2 images B, la fonction Median peut être remplacée par la fonction Min, qui rejette la SADBla plus élevée. Les exemples précédents et les variantes proposées sont relatifs à des différences de blocs correspondant à des valeurs de SAD. Ils sont également relatifs à des sommes de ces valeurs de SAD. L'exploitation de tout type de valeurs de différence entre blocs, en fait toute valeur représentative de la corrélation entre ces blocs, est bien sur envisageable et ne sort pas du domaine de l'invention. Il peut s'agir des valeurs exploitées lors du calcul de corrélation de blocs pour une estimation de mouvement selon l'art antérieur. Il peut s'agir de la somme, sur un bloc, des carrés des différences des valeurs de luminance, pixel à pixel. L'exploitation de toute fonction f des variables SAD ou des valeurs de différence, dont la minimisation correspond à une diminution du coût de codage, fait également partie du domaine de l'invention. Dans un but de généralisation, on appelle donc par la suite D cette valeur de différence entre blocs : DPdx, dy est la différence entre le bloc courant de l'image P et le bloc prédit par le vecteur mouvement de composantes dx, dy. DBdrx,dry est la différence entre le bloc co-localisé d'une image B et le bloc prédit par le vecteur mouvement direct de composantes drx, dry, plus précisément DBdrxfw, dryfw s'il s'agit du vecteur direct forward de composantes drxfw,dryfw, DBdrxbck, drybck s'il s'agit du vecteur backward de composantes drxbck, drybck. La sélection d'un bloc prédit dans l'image I/P correspondant à un vecteur mouvement de composantes Dx, Dy, est alors effectuée en fonction des valeurs de différence entre le bloc courant de l'image P et des blocs prédits de l'image I/P correspondant à des vecteurs mouvement de composante dx, dy, appelées DPdx,dy, mais également, pour chacune de ces valeurs, en fonction de la ou des valeurs de différence DBdrxfw,dryfw entre le bloc co-localisé des images Bo et/ou B1 et le bloc prédit mis en correspondance dans l'image I/P à partir du vecteur mouvement colinéaire au vecteur de composantes dx, dy, de composantes drxfw, dryiw, et en fonction de la ou des valeurs de différence DBdrxbck,drybck entre le bloc colocalisé des images Bo et/ou B1 et le bloc mis en correspondance dans l'image P à partir du vecteur mouvement colinéaire au vecteur de composantes dx, dy, de composantes drxbck, drybck f est une fonction quelconque, par exemple une fonction affine. Ces valeurs de différences ne concernent pas forcément directement les blocs luminance et/ou chrominance des images. Il peut s'agir par exemple de la somme de la valeur absolue des coefficients de la transformée de Fourier ou de Hadamard des pixels des différences, c'est à dire d'un bloc résidu. La transformée de Hadamard utilisée étant une transformation à 2 dimensions du signal image résiduel, par exemple de 4x4 ou 8x8 pixels, l'avantage de cette transformée est de passer dans le domaine spectral en se rapprochant du domaine DCT tout en utilisant des coefficients de décomposition de valeurs +1 et-1. Ces coefficients permettent d'effectuer un calcul en entier de façon plus rapide. Un biais peut être ajouté à ces différences pour tenir compte du coût de codage potentiel des vecteurs mouvement en cours de test au sein de l'estimateur de mouvement. L'estimation de mouvement mise en #uvre dans l'invention n'est bien sûr pas limitée au procédé d'appariement par blocs. Elle peut être de nature quelconque par exemple de type PEL récursif, estimation effectuée au niveau du pixel de l'image ou de type hiérarchique, l'estimation étant alors effectuée sur des images de résolution croissante. Elle peut exploiter la luminance, la chrominance, la fonction gradient, etc. L'appariement par bloc peut être de type full search , en prenant le critère de minimisation de la SAD multiple. La recherche du bloc corrélé se fait alors dans une fenêtre de recherche prédéfinie, chaque nouveau bloc de la fenêtre de recherche, pour lequel est effectuée une mesure de corrélation et de calcul SAD, correspondant à une translation horizontale ou verticale d'amplitude 1 pixel, du bloc précédemment traité. Une autre variante de l'invention consiste à effectuer une estimation de mouvement entre les images P et I/P et sélectionner, pour le macrobloc courant MBp, les K vecteurs mouvement les plus pertinents fournissant par exemple les valeurs de SADP, ou valeurs de différences, les plus faibles. Ensuite, à partir de ces K vecteurs, le procédé sélectionne le vecteur minimisant le critère basé sur les SAD, ou valeurs de différences, multiples. Par exemple, K est égal à 8 et le vecteur sélectionné est celui minimisant la somme des SAD. Le calcul des SAD ou valeurs de différences peut être effectué entre les images B et l'image # ou P source, qui est l'image précédente si l'on considère l'ordre de codage. Elle peut également être effectuée entre les images B et l'image # ou P décodée locale. L'invention concerne tous les dispositifs d'estimation de mouvement exploitant un tel procédé ou tous les systèmes de compression ou de codage utilisant de tels dispositifs d'estimation de mouvement. Les applications concernent entre autres la transmission d'images numériques utilisant la norme de codage vidéo comportant un mode de prédiction direct, par exemple la norme h263, MPEG4 ou h261. REVENDICATIONS 1 Procédé de codage différentiel d'un bloc d'image courant (1) dans une première image de référence à partir d'un bloc d'image prédit (2) dans une deuxième image de référence, les images de référence encadrant une ou plusieurs images de type bidirectionnel ou type B dont un codage différentiel peut prendre en compte des blocs de ces images de référence, comportant une étape de sélection du bloc prédit (2), parmi des blocs candidats, en fonction d'une différence Dpdx,dy entre le bloc courant et un bloc candidat désigné par un vecteur de mouvement Vp de composantes dx, dy attribué au bloc courant, caractérisé en ce que la sélection est également fonction d'une différence DBdrx,dry entre le bloc co-localisé du bloc d'image courant dans une image de type B et le bloc dans une image de référence désigné par le vecteur de mouvement, de composantes drx, dry, attribué au bloc co-localisé et qui est colinéaire au vecteur de mouvement Vp. 2 Procédé selon la revendication 1, caractérisé en ce que le vecteur mouvement de composantes drx, dry, est un vecteur mouvement différé (backward) (8) entre l'image de type B (4) et la première image de référence (6). 3 Procédé selon la revendication 1, caractérisé en ce que le vecteur mouvement de composantes drx, dry, est un vecteur de mouvement anticipé (forward) (7) entre l'image de type B (4) et la deuxième image de référence (5). 4 Procédé selon la revendication 1, caractérisé en ce que la sélection prend en compte la différence DBdrxfw,dryfw correspondant au vecteur mouvement colinéaire de composantes drxfw, dryfw entre l'image de type B et la deuxième image de référence ainsi que la différence DBdrxbck,drybck correspondant au vecteur mouvement de composantes drxbck, drybck entre l'image de type B et la première image de référence. 5 Procédé selon la revendication 1, caractérisé en ce que la sélection est fonction de la différence DBodrx,dry correspondant à un vecteur de mouvement colinéaire entre la première image de type B, Bo, et une image de référence ainsi que de la différence DB1drx,dry correspondant à un vecteur de mouvement colinéaire entre la deuxième image de type B, B1, et une image de référence. 6 Procédé selon la revendication 1, caractérisé en ce que le bloc sélectionné parmi les blocs candidats correspond au minimum d'une fonction des valeurs de différence Dpdx,dy et DBdrxfw,dryfw, DBdrxbck,drybck calculées pour ces blocs candidats. 7 Procédé selon la revendication 1, caractérisé en ce qu'une différence D est calculée à partir des sommes des valeurs absolues des différences (SAD) entre les valeurs de luminance des pixels des blocs. 8 Procédé selon la revendication 1, caractérisé en ce qu'une différence D est calculée à partir des sommes des valeurs absolues des coefficients d'une transformée d'un résidu qui est la différence pixel à pixel entre les valeurs de luminance des pixels des blocs. 9 Procédé selon la revendication 1, caractérisé en ce que les blocs candidats sont des blocs d'image de même taille que le bloc courant, pouvant être extraits d'une fenêtre de recherche prédéfinie. 10 Procédé selon la revendication 1, caractérisé en ce qu'il exploite le mode direct temporel de la norme MPEG 4.