Brevet FR2875974A1 — publié le 20060331

L'invention concerne un procédé et dispositif de codage d'une image d'une séquence vidéo. II s'agit plus particulièrement de codage par bloc d'image exploitant la corrélation temporelle entre images à partir de calcul de champs de mouvement. Le domaine est par exemple celui du codage vidéo de type H264/ AVC. Contrairement aux normes de codage vidéo antérieures, H261, H263, MPEG2 ou MPEG4, une succession de macroblocs ou tranche de macroblocs, plus connue dans les normes sous l'appellation anglaise de slice , peut être composée de macroblocs non consécutifs dans l'image, selon le sens de balayage de l'image, de type télévision. Cette possibilité est appelée FMO, acronyme de l'expression anglaise Flexible Macro block Ordering . Cet outil est évoqué par exemple dans la contribution de S Wenger et M Horowitz JVT-0089 ISO/MPEG & ITU de mai 2002. Dans le contexte de la transmission d'images vidéo sur réseau hétérogène, où généralement le taux d'erreurs de transmission important se caractérise par la perte de paquets, il convient de protéger les paquets des données compressées à l'aide, entre autres, de codes correcteurs d'erreurs tels les codes Reed-Solomon ou les codes de contrôle continu FEC, acronyme de l'expression anglaise Forward Error Correction. Ces algorithmes de correction d'erreurs, basés sur la redondance, et donc coûteux en termes de coût de codage ne privilégient cependant pas des zones de l'image jugées comme importantes pour le codage. L'invention a pour but de pallier les inconvénients précités. A cet effet, un des objets de l'invention est un procédé de codage d'une séquence d'images comportant une étape de découpe des images en blocs d'images, une étape de partitionnement de l'image en régions, une région étant constituée d'une succession de blocs consécutifs ou non, selon l'ordre de balayage télévision de l'image, - une étape d'estimation de mouvement entre une image courante et une image précédente de la séquence pour fournir un champ de mouvement associant des vecteurs mouvement aux blocs d'images, - une étape de codage inter ou intra des blocs, les blocs étant codés par région selon un ordonnancement des régions, et, pour une région, selon l'ordre de succession des blocs constituant la région, - une étape de correction d'erreur des blocs codés, caractérisé en ce que, - une étape d'analyse du champ de mouvement est réalisée pour calculer un paramètre durée de vie attribué à un bloc et correspondant à sa probabilité d'existence dans des image suivantes en fonction du vecteur mouvement associé à ce bloc, - l'étape de partitionnement est effectuée en prenant en compte la valeur de ce paramètre pour définir et ordonner les régions de l'image de la plus importante à la moins importante, - l'étape de correction d'erreur exploite un algorithme de correction d'erreur plus efficace pour les données codées correspondant aux premières régions que pour celles correspondant aux dernières. Selon une mise en oeuvre particulière, le paramètre durée de vie du bloc est calculé en extrapolant le vecteur mouvement du champ de mouvement attribué au bloc. Selon une mise en oeuvre particulière, les images prises en compte dans le référentiel image pour déterminer la probabilité d'existence sont les images autres que celles de type prédictives bidirectionnelles B classiques ou bien les images autres que celles de type prédictives bidirectionnelles B classiques et B-mémorisées. Selon une mise en oeuvre particulière, les vecteurs mouvement calculés pour l'image numérotée M de la séquence d'images sont extrapolés vers les images numérotées M+m, M+2m, IM+3m..., m étant un entier positif, et la valeur du paramètre d'un bloc dépend du nombre d'appartenances à ces images, de l'extrémité du vecteur affecté à ce bloc. Selon une mise en oeuvre particulière, une région est définie par une borne supérieure et une borne inférieure du paramètre, une région étant constituée de l'ensemble des blocs pour lesquels ce paramètre est compris dans la fourchette définissant cette région. Selon une mise en oeuvre particulière, les données relatives au codage des blocs sont structurées en paquets de données ordonnancés selon l'importance attribuée aux régions correspondant aux paquets. Selon une mise en oeuvre particulière, une région est constituée d'un groupe de tranches tel que défini dans la norme H264/AVC. L'invention concerne également un dispositif de codage d'une séquence d'images pour la mise en oeuvre du procédé, cornportant un circuit de découpe image et de configuration de régions pour configurer l'image en régions constituées de blocs d'images et fournir ces blocs d'image selon un ordre d'ordonnancement des régions, à un circuit d'estimation de mouvement et à un circuit de codage inter et intra, les blocs codés étant transmis à un circuit de correction d'erreurs, un circuit d'analyse du champ de mouvement pour calculer un paramètre durée de vie des blocs en fonction des vecteurs mouvement du champ de mouvement, le circuit de découpe image et de configuration de tranches recevant le paramètre durée de vie pour effectuer la configuration et ordonner les régions cle la plus importante à la moins importante en fonction de ce paramètre et le circuit de correction d'erreur mettant en oeuvre des algorithmes plus efficaces pour les données correspondant aux premières régions que pour celles correspondant aux dernières. Les régions sont ainsi constituées et ordonnancées en fonction du contenu de la scène et en particulier de la nature du champ de mouvement. Un ordre d'importance des régions est établi en fonction de la durée de vie des blocs ou macroblocs de la région, c'est à dire de l'exploitation des macroblocs ou blocs de l'image pour le codage prédictif des images suivantes. Grâce à l'invention, la qualité de l'image restituée est améliorée, les régions jugées les plus indispensables pouvant utiliser des codes correcteurs les plus performants. D'autre part, les traitements d'erreur au niveau du décodeur s'appuyant sur l'analyse du champ de mouvement sont plus efficaces. D'autres particularités et avantages de l'invention apparaîtront clairement dans la description donnée à titre d'exemple non limitatif et faite en regard des figures annexées représentant: - la figure 1, un synoptique d'un codeur selon l'invention, - la figure 2, une répartition des régions dans le contexte d'un 30 zoom, - la figure 3, une répartition des régions dans le contexte d'un panoramique vers la gauche. La figure 1 décrit un codeur pour la mise en oeuvre du procédé 35 selon l'invention. Les données vidéo numériques d'une image source de la séquence vidéo sont reçues en entrée du codeur pour être transmises à un circuit de découpe de l'image et de configuration des régions 1 qui découpe l'image en macroblocs et configure les macroblocs en régions. Les blocs d'images constituant les macroblocs sont transmis, sur une première sortie, à un circuit d'estimation de mouvement 2 et sur une deuxième sortie à une première entrée d'un soustracteur 3. Selon le mode de codage, intra ou inter, le soustracteur 3 transmet les informations rellatives au bloc courant reçues sur sa première entrée ou bien soustrait à ces dernières les informations correspondant à un bloc prédit disponibles sur sa deuxième entrée. Les données en sortie du soustracteur sont transmises à un circuit de transformation cosinus discrète et quantification 4. Les coefficients quantifiés en sortie de ce circuit subissent un codage entropique à travers le codeur à longueur variable 5 ou codeur VLC, acronyme de l'appellation anglaise Variable Length Coding. L'image courante est reconstruite pour fournir des blocs prédits. Ainsi, les coefficients quantifiés subissent une quantification inverse et une transformation cosinus discrète inverse à travers le circuit référencé 6 pour donner des valeurs de luminance décodées. L'additionneur 7 permet d'ajouter le bloc prédit au bloc de coefficients décodé, s'il est codé en mode inter. Le bloc reconstruit est mémorisé dans une mémoire image 8 qui mémorise l'image courante reconstruite. Le circuit d'estimation de mouvement 2 reçoit les informations relatives à une image précédente décodée ou reconstruite mémorisée par la mémoire d'image 8 et les informations relatives au macrobloc courant de l'image source provenant du circuit de découpe d'image et de configuration des régions 1. Il effectue un calcul de corrélation entre ce rnacrobloc courant et l'image reconstruite selon un principe connu, pour fournir les vecteurs mouvement. Ces vecteurs sont transmis à un circuit de décision de mode de codage 9 qui effectue des calculs de coûts de codage pour déterminer le mode de codage le plus approprié et à un circuit d'analyse du champ de mouvement 10. Le mode de codage et, le cas échéant, les vecteurs mouvement correspondants sont transmis à un circuit de compensation de mouvement 11 qui réalise la compensation de mouvement de l'image reconstruite pour fournir, sur la deuxième entrée du soustracteur 3, un bloc d'image prédit provenant de cette image reconstruite. Les vecteurs de mouvement sont également transmis au circuit de codage entropique 5 pour leur codage et transmission au décodeur. Les informations calculées par le circuit d'analyse du champ de mouvement sont transmises au circuit de 'configuration des régions qui réalise la configuration de l'image en régions constituées d'une tranche ou d'un groupe de tranches, ordonne les régions pour définir l'ordre de codage des blocs de l'image. Par exemple, après avoir configuré l'image en régions en attribuant l'ensemble des macroblocs de l'image aux différentes régions, les macroblocs d'une région sont constitués en une ou plusieurs tranches telles que définies dans la norme H264/AVC, sous l'appellation anglaise slice et slice group . Le flux de données en sortie du codeur proprement dit est transmis à un circuit de mise en oeuvre de codes correcteurs d'erreurs, non représenté sur la figure, avant d'être envoyé sur le réseau de distribution, par exemple Internet, à destination du décodeur. Ce circuit rajoute de la redondance via des codes correcteurs d'erreur par région ou par tranche. L'algorithme de correction d'erreur est choisi particulièrement efficace pour les premières régions ou tranches codées de l'image qui sont donc plus coûteuses, en termes de coût de codage, du fait du niveau de redondance, et de moins en moins performant pour les régions ou tranches suivantes qui sont donc moins coûteuses à coder. La constitution de régions est réalisée en fonction de la nature du champ de mouvement relativement aux macroblocs et de l'importance, du point de vue contenu, de la ou des zones de l'image. Selon la nature du champ de mouvement, il peut être judicieux de protéger en priorité certaines parties de l'image. La configuration des régions peut être réalisée en se basant sur la notion de durée de vie du macrobloc dans le référentiel image. Ainsi, le circuit d'analyse du champ de mouvement calcule, en fonction des champs de mouvement fournis par le circuit d'estimation de mouvement, un paramètre durée de vie qu'il attribue à chaque bloc ou macrobloc de l'image et dépendant de son vecteur mouvement. Ce paramètre correspond à la probabilité d'existence du bloc d'image dans les prochaines images à coder. Il est d'autant plus grand que le nombre d'images dans lesquelles devrait se trouver le bloc traité est important. Sa valeur dépend du mouvement calculé pour le bloc d'image, son amplitude et sa direction. En faisant l'hypothèse que le mouvement est constant, un calcul peut consister à extrapoler les vecteurs de mouvement attribués aux macroblocs de l'image M vers les images M+m, M+2m, M+3m... , m étant, en nombre d'images, la période d'analyse choisie des images. La valeur du paramètre est d'autant plus grande que le nombre d'images dans lequel le macrobloc devrait apparaître est élevé. Les images à coder sont des images intra et des images inter soit de type prédictives P, B-mémorisées aussi dénommées B-stored selon l'appellation anglaise dans la norme H264/AVC ou bien de type prédictives bidirectionnelles B classiques. Les images de référence de type I, P, voire B-mémorisées, sont plus importantes que les images de type B classiques car elles sont exploitées pour le codage prédictif. Ainsi, il est possible, selon une variante de l'invention, de calculer le paramètre durée de vie en ignorant les images de type B classiques lors de la détermination du nombre de prochaines images dans lesquelles se retrouverait le macrobloc. Il est également possible, selon une variante, d'ignorer les images de type B-mémorisées, qui sont des images qui peuvent servir de référence mais uniquement pour les images B classiques, et les images de type B classiques. La valeur de m est alors la période d'analyse en considérant les seules images de type P ou I. L'outil FMO définit des régions, en fait des groupes de tranches appelés slice groups dans la norme H264/AVC. L'ordre de traitement des macroblocs dans un groupe de tranches correspond au balayage télévision en ne considérant que les macroblocs du groupe de tranches. Chaque groupe de tranche ou région est traité successivement selon le numéro affecté au groupe. Le procédé décrit permet de structurer les groupes de tranches en fonction du comportement spatio-temporel de zones de l'image, via l'analyse du champ de mouvement. Les groupes de tranches étant structurés, ces derniers peuvent alors être protégés en conséquence de telle sorte que les groupes jugés les plus indispensables, selon cette analyse du champ de mouvement, peuvent utiliser des codes correcteurs les plus performants. Le circuit de configuration des régions définit donc, en fonction de la disparité d'un paramètre durée de vie , différentes régions dans l'image. Les blocs ayant une même valeur ou valeur voisine pour ce paramètre sont rassemblés en régions. Ces régions sont numérotées, les premiers groupes de tranches sont ceux correspondant aux plus grandes valeurs du paramètre et les derniers groupes ceux correspondant aux plus faibles valeurs du paramètre. On notera que, du fait que la composition des tranches est effectuée en fonction de la nature du champ de mouvement, le décodeur peut réaliser plus efficacement des traitements de type masquage d'erreurs. Ceci à la condition que le décodeur soit doté d'algorithmes performants pour ce type de traitement, qui s'appuient, entre autre, sur l'analyse du champ de mouvement pour reconstruire les parties de l'image non décodées dans le cadre des erreurs résiduelles, c'est à dire des erreurs qui n'ont pu être corrigées par les codes de correction d'erreur. II s'agit par exemple des algorithmes de masquage à prédiction temporelle tels que mentionnés dans les normes MPEG. Ce sont en effet les macroblocs ayant les plus fortes probabilités de servir de base pour les prédictions ultérieures qui sont codés avec un algorithme performant de correction d'erreur. La figure 2 représente une image découpée en macroblocs et leur 10 répartition en régions ou groupes de tranches dans le contexte d'un zoom avant. Dans le cas de zoom avant, il est avantageux de constituer les premières tranches à partir de la partie centrale de l'image, cette zone de l'image étant la plus précieuse en termes de prédiction temporelle. L'exemple de répartition des groupes de tranches représenté à la figure 2 est donc le suivant: - groupe de tranches n 1: macroblocs au centre, rayés oblique de la gauche vers la droite de haut en bas, - groupe de tranches n 2: macroblocs non rayés à la périphérie 20 du groupe n 1, - groupe de tranches n 3: macroblocs rayés horizontal, en périphérie du groupe n 2, groupe de tranches n 4: macroblocs rayés vertical en périphérie du groupe n 2, - groupe de tranches n 5: macroblocs rayés oblique de la droite vers la gauche, en bordure droite et gauche de l'image. Les macroblocs du premier groupe sont numérotés 1 à 16, ceux du 2ème groupe 17 à 36, ceux du 3ème groupe 37 à 50, ceux du 4ème groupe 51 à 64, ceux du 5ème groupe 65 à 80. La figure 3 représente une image découpée en macroblocs et leur répartition en régions ou groupes de tranches dans le contexte d'un panoramique vers la gauche. Dans cette configuration les premières tranches sont constituées par des blocs appartenant aux zones nouvelles rentrant dans la scène, ces dernières devant servir de prédiction tant que ces zones vont rester dans l'image. L'exemple de répartition des groupes de tranches représenté à la figure 3 est donc le suivant: - groupe de tranches n 1: rnacroblocs à gauche dans l'image, rayés oblique de la droite vers la gauche de haut en bas, groupe de tranches n 2: rnacroblocs à droite du groupe n 1, rayés obliques de la gauche vers la droite, - groupe de tranches n 3: macroblocs rayés horizontal, à droite du groupe n 2, - grou pe de tranches n 4: macroblocs non rayés, à droite du groupe n 3, - groupe de tranches n 5: macroblocs rayés vertical à droite du groupe n 4. Les macroblocs du premier groupe sont nurnérotés 1 à 16, ceux du 2ème groupe 17 à 32, ceux du 3ème groupe 33 à 48, ceux du 4ème groupe 49 à 15 64, ceux du 5ème groupe 65 à 80. Ainsi, les premiers macroblocs à sortir du champ de l'image, qui sont ceux notés 65 à 80 composent le dernier groupe de tranches qui est donc codé avec une correction d'erreur la moins efficiente. Afin de limiter le nombre de régions, il est possible de définir ces régions par une borne supérieure et inférieure de la valeur du paramètre durée de vie . Ainsi, une région sera constituée de l'ensemble des macroblocs dont le paramètre associé est compris dans la fourchette définissant la région. Ces bornes peuvent être choisies en fonction de la disparité du paramètre pour une image. Les applications concernent par exemple la transmission d'images numériques, en particulier sur les réseaux hétérogènes, exploitant une norme de codage vidéo comportant un outil de répartition des macroblocs par tranche, de type FMO. REVENDICATIONS 1 Procédé de codage d'une:séquence d'images comportant une étape de découpe des images en blocs d'images (1), une étape de partitionnement (1) de l'image en régions, une région étant constituée d'une succession de blocs consécutifs ou non, selon l'ordre de balayage télévision de l'image, - une étape d'estimation de mouvement (2) entre une image courante et une image précédente de la séquence pour fournir un champ de mouvement associant des vecteurs mouvement aux blocs d'images, - une étape de codage inter ou intra (3, 4) des blocs, les blocs étant codés par région selon un ordonnancement des régions, et, pour une région, selon l'ordre de succession des blocs constituant la région, - une étape de correction d'erreur des blocs codés, caractérisé en ce que, - une étape d'analyse du champ de mouvement (10) est réalisée pour calculer un paramètre durée de vie attribué à un bloc et correspondant à sa probabilité d'existence dans des images suivantes, en fonction du vecteur mouvement associé à ce bloc, - l'étape de partitionnement (1) est effectuée en prenant en compte la valeur de ce paramètre pour définir et ordonner les régions dans l'image de la plus importante à la moins importante, - l'étape de correction d'erreur exploite un algorithme de correction d'erreur plus efficace pour les données codées correspondant aux premières régions que pour celles correspondant aux dernières. 2 Procédé selon la revendication 1, caractérisé en ce que le paramètre durée de vie du bloc est calculé en extrapolant le vecteur mouvement du champ de mouvement attribué au bloc. 3 Procédé selon la revendication 2, caractérisé en ce que les images prises en compte dans le référentiel image pour déterminer la probabilité d'existence sont les images autres que celles de type prédictives bidirectionnelles B classiques. 4 Procédé selon la revendication 2, caractérisé en ce que les images prises en compte dans le référentiel image pour déterminer la probabilité d'existence sont les images autres que celles de type prédictives bidirectionnelles B classiques et B-mémorisées. Procédé selon la revendication 2, caractérisé en ce que les vecteurs mouvement calculés pour l'image numérotée M de la séquence d'images sont extrapolés vers les images numérotées M+m, M+2m, M+3m..., m étant un entier positif, et en ce que la valeur du paramètre d'un bloc dépend du nombre d'appartenances à ces images, de l'extrémité du vecteur affecté à ce bloc. 6 Procédé selon la revendication 1, caractérisé en ce qu'une région est définie par une borne supérieure et une borne inférieure du paramètre, une région étant constituée de l'ensemble des blocs pour lesquels ce paramètre est compris dans la fourchette définissant cette région. 7 Procédé selon la revendication 1, caractérisé en ce que les données relatives au codage des blocs sont structurées en paquets de données ordonnancés selon l'importance attribuée aux régions correspondant aux paquets. 8 Procédé selon la revendication 1, caractérisé en ce qu'une région est constituée d'un groupe de tranches tel que défini dans la norme H264/AVC. 9 Dispositif de codage d'une séquence d'images pour la mise en oeuvre du procédé selon la revendication 1, comportant un circuit de découpe image et de configuration de régions (1) pour configurer l'image en régions constituées de blocs d'images et fournir ces blocs d'image selon un ordre d'ordonnancement des régions, à un circuit d'estimation de mouvement (2) et à un circuit de codage inter et intra (3, 4, 6., 7, 8, 9, 11), les blocs codés étant transmis à un circuit de correction d'erreurs, caractérisé len ce qu'il comporte un circuit d'analyse du champ de mouvement (10) pour calculer un paramètre durée de vie des blocs en fonction des vecteurs mouvement du champ de mouvement, en ce que le circuit de découpe image et de configuration de régions (1) reçoit le paramètre durée de vie pour effectuer la configuration et ordonner les régions de la plus importante à la moins importante en fonction de ce paramètre, et en ce que le circuit de correction d'erreur met en oeuvre des algorithmes plus efficaces pour les données correspondant aux premières régions que pour celles correspondant aux dernières. Dispositif selon la revendication 9, caractérisé en ce qu'une 5 région correspond à une tranche ou un groupe de tranches.