Brevet FR2813001A1 — publié le 20020215

L'invention concerne un procédé et un dispositif de conversion de format couleur d'une séquence d'images à partir de données vidéo codées. La plupart des applications qui nécessitent un affichage vidéo travaillent avec des données vidéo encodées. Après décodage, ces données sont souvent disponibles dans un format qui n'est pas compatible des formats d'affichage ou de composition souhaités. Il est ainsi nécessaire, dans la plupart des cas, d'effectuer une conversion de format à partir des données vidéo comprimées, avant d'afficher l'image correspondante ou d'effectuer la composition d'images. Cette conversion de format est appliquée sur l'image complète et est généralement consommatrice de temps et d'espace mémoire, car elle implique des additions et multiplications successives pour chaque pixel de l'image. Par exemple, le format en sortie de décodage d'un flux de données vidéo binaires au standard H 263 est du type 4:2:0, Y U V. Les bibliothèques de logiciel Java d'interface graphique (AWT) fournissent des interfaces API (de l'anglais Application Program Interface) pour des formats d'image basés sur le format 4:4:4, R V B. Ainsi, I'utilisation d'une "applet" (application Java chargée via internet) pour un tel flux nécessite de convertir les images au format 4:2:0, Y U V en images au format 4:4:4, R V B. Le terme image utilisé par la suite pourra s'appliquer à tout type d'image, trame, bitrame..., et quel que soit le type de balayage. On appellera domaine de décodage ce qui concerne la réception par le décodeur des données codées et leur décodage et domaine d'affichage ce qui concerne l'exploitation des données décodées pour leur composition et leur affichage. Le procédé de conversion consiste à passer du domaine de décodage au domaine d'affichage. Les procédés de décodage exploitent habituellement un mode temporel prédictif dans lequel des images sont prédites à partir d'images 2 2813001 précédentes ou suivantes. Il s'agit par exemple de la norme MPEG 1, MPEG 2, MPEG 4, H261 ou H263. Dans ces normes, une image de type P (prédictive) est prédite à partir d'une image précédente de type I (intra) ou d'une image précédente de type P et une image de type B (bidirectionnelle) est prédite à partir d'une image précédente de type I ou P et d'une image suivante de type I ou P. Dans un exemple, pour le codage d'un bloc d'image dans une image, l'image précédente est reconstruite et une estimation de mouvement est effectuée pour déterminer, dans cette image reconstruite, le bloc corrélant le mieux avec le bloc d'image à coder. L'image reconstruite est alors compensée en mouvement à partir du vecteur mouvement correspondant à cette estimation pour fournir le bloc prédit. Le bloc prédit est soustrait au bloc courant pour fournir un bloc résidu qui est codé et transmis. Le procédé de décodage consiste à calculer les blocs prédits en reconstruisant les images précédentes et à y ajouter les résidus transmis de l'image courante. Dans le cas des images de type B ou P, les blocs sont prédits à partir de l'image de référence précédente et, pour le type B, également à partir de l'image de référence suivante. Ces images de référence sont reconstruites au niveau du décodeur et le bloc prédit est calculé à partir de ces images et des vecteurs mouvement transmis dans le flux de données. Le bloc résidu transmis dans le flux de données est décodé puis ajouté au bloc prédit défini par le vecteur mouvement associé pour fournir le bloc d'image reconstitué dans l'image. La figure 1 représente de manière très schématique le procédé de décodage et de conversion des données. Les données vidéo relatives aux images de référence sont reçues sur un circuit de prédiction temporelle 1 pour fournir des images prédites à un additionneur 3. Les données vidéo relatives à l'image courante sont reçues sur un circuit de décodage 2 pour fournir des images décodées à l'additionneur 3. Les données en sortie de l'additionneur 3, qui 3 2813001 correspondent à l'image reconstituée, sont transmises à un circuit de conversion de format 4 qui convertit les images pour les transmettre à un afficheur ou à un circuit de composition d'images. La structure sur laquelle s'appliquent les différentes opérations de compression de données, dans la norme MPEG, est le macrobloc. Les pixels sont groupés en blocs d'images, par exemple d'une taille de 16 x 16 pixels, quatre blocs luminance et les blocs chrominance correspondant constituant le macrobloc. Si le format d'image, lors du codage, est 4:2:0, Y, Cr, Cb, le macrobloc est constitué de 4 blocs de luminance et 2 blocs de chrominance. Dans le mode temporel prédictif, chaque macrobloc a son propre mode de décision. Autrement dit, le mode de codage est décidé pour chaque macrobloc. Il peut s'agir d'un codage de type intra pour lequel aucune prédiction n'est utilisée, de type prédictif exploitant un vecteur de mouvement différé (forward vector dans la norme), anticipé (backward vector) ou bidirectionnel. Un macrobloc d'une image de type P peut être codé en mode intra alors que le macrobloc suivant peut être codé en mode inter en utilisant la compensation de mouvement à partir d'une image de référence. D'autres modes de compression, qui ne sont pas forcément standardisés, sont basés sur des calculs relatifs à des groupes de pixels qui ne sont pas des blocs d'image tels que décrits dans la norme MPEG. Les modes de prédiction peuvent être basés sur des régions obtenues par segmentation de l'image selon des critères d'homogénéité. L'invention s'applique à ces groupes de pixels, appelés également gop par la suite. Il peut donc s'agir de macroblocs ou blocs d'image mais également de structures plus complexes telles que des régions connexes. Le mode de décision de codage est indépendant pour chaque gop, qui peut être codé indépendamment ou à partir d'images précédentes et/ou suivantes. L'invention proposée a pour but de pallier les inconvénients précédemment décrits. Elle a pour objet un procédé de conversion de format couleur d'une séquence d'images à partir de données vidéo codées sur la base d'une structure de groupes de pixels, caractérisé en ce que, pour un groupe de pixels codé à convertir, si le mode de codage utilisé est du type inter sans résidu, la conversion est effectuée par une copie d'un groupe de pixels converti d'une image précédente mis en relation par le vecteur mouvement associé au dit groupe de pixels codé. Si le vecteur mouvement associé au groupe de pixels est nul, la conversion est effectuée par recopie du groupe de pixels co-localisé et, si le vecteur mouvement est différent de zéro, la conversion est effectuée par compensation en mouvement dans une image convertie précédente. Elle a également pour objet un procédé de conversion de format couleur d'une séquence d'images à partir de données vidéo codées sur la base d'une structure de groupes de pixels, caractérisé en ce que, si pour un groupe de pixels codé à convertir une erreur de transmission des données codées entraîne un mode de masquage des erreurs équivalent à un décodage du type inter sans résidu, la conversion est effectuée par une copie d'un groupe de pixels converti d'une image précédente mis en relation par le vecteur mouvement associé au dit groupe de pixels codé. Elle a également pour objet un procédé de conversion de format couleur d'une séquence d'images à partir de données vidéo codées sur la base d'une structure de groupes de pixels, les données codées comprenant des données complémentaires permettant l'échelonnabilité c'est à dire l'obtention d'images de résolutions différentes (12, 13, 14), caractérisé en ce que, dans le cas o les données complémentaires relatives à un groupe de pixels et à une résolution donnée (13, 14) ont pour valeur zéro, ce groupe de pixels pour l'image convertie de résolution donnée (13, 14) est obtenu à partir d'un groupe de pixels convertis de l'image de résolution inférieure (12). La conversion de format n'est ainsi pas appliquée à toute l'image mais simplement aux groupes de pixels dont le résidu n'est pas nul. Lorsque le mode de décodage est un mode de prédiction temporelle correspondant à une compensation de mouvement et à l'ajout d'un résidu, dans le cas o ce résidu est nul, la compensation de mouvement est appliquée dans le domaine d'affichage et non dans le domaine de décodage. S'il n'y a pas de compensation de mouvement, une recopie d'un groupe de pixels convertis est effectuée. L'invention a pour principal avantage d'optimiser le temps de calcul pour la conversion de format en exploitant les modes de décision utilisés pour chaque gop dans les cas de prédiction temporelle. La compensation en mouvement d'un gop dans le domaine d'affichage est généralement moins consommatrice de temps que la conversion de format de ce gop. A plus forte raison lorsque le mouvement est nul o il s'agit alors d'une simple recopie. Le décodeur est simplifié et son coût en est ainsi réduit. D'autres particularités et avantages de l'invention apparaîtront clairement dans le description suivante donnée à titre d'exemple non limitatif faite en regard des figures annexées qui représentent: - la figure 1, une représentation schématique du procédé de décodage et de conversion de données, - la figure 2, un organigramme du procédé de conversion, - la figure 3, différents formats de chrominance pour la conversion d'un macrobloc, - la figure 4, une illustration de l'échelonnabilité dans une structure macrobloc. Le procédé de conversion de format d'images selon l'invention est décrit à la figure 2. 6 2813001 Une première étape 5 reçoit les données vidéo codées, par exemple sous forme d'un flux de données. Elle effectue un décodage de ces données. Elle mémorise les informations relatives au mode de codage, inter ou intra, au résidu et aux vecteurs mouvement pour chaque gop. Par exemple, un drapeau indique si le résidu est codé, c'est à dire non nul, ou s'il n'est pas codé, c'est à dire s'il est nul. La conversion de format est réalisée à partir des étapes suivantes: L'étape 6 effectue, pour chaque groupe de pixels successif, un test sur le mode de codage utilisé. Si le mode de codage est du type inter et si le résidu du gop est nul (type inter sans résidu), alors l'étape suivante est l'étape 7. Si le mode de codage n'est pas du type inter (codage intra) ou, dans le cas o le mode de codage est du type inter, si le résidu n'est pas nul, l'étape suivante est l'étape 9 qui réalise une conversion de format classique pour le groupe de pixels considéré. L'étape 7 effectue un nouveau test sur le mode de codage utilisé pour le groupe de pixels. Si le vecteur mouvement du gop est un vecteur nul, l'étape suivante est l'étape 8. Si le vecteur mouvement n'est pas un vecteur nul, l'étape suivante est l'étape 10 qui réalise une compensation de mouvement à partir de ce vecteur et de l'image précédente affichée, c'est à dire convertie, qui est également transmise à cette étape. L'étape 8 effectue une recopie du groupe de pixels de l'image précédente affichée qui est transmise à cette étape. Le gop dans le domaine d'affichage est ainsi obtenu par simple recopie du gop correspondant (co- localisé) de l'image précédente affichée. Les sorties de l'étape 9, 10 et 8 correspondent aux groupes de pixels de l'image courante à afficher et ces sorties sont transmises à l'étape 11 qui effectue une mémorisation de ces groupes de pixels de cette image courante. Cette étape fournit, lors du traitement de l'image courante, l'image précédente mémorisée qui est transmise à l'étape 8 et 10 comme 7 2813001 précédemment indiqué. Cette image précédente est l'image de référence à partir de laquelle a été effectuée l'estimation de mouvement pour l'image courante. L'image courante complète est ainsi disponible en sortie des étapes 9, 10 et 8 pour un affichage sur l'écran après que l'ensemble des groupes de pixels constituant cette image aient été traités. Les informations mémorisées à l'étape 5 sont obtenues différemment selon la norme de codage utilisée. Dans le cas du standard MPEG2, un macrobloc résidu nul est rencontré dans le mode "macrobloc sauté" (skipped macroblock dans la norme) et dans les modes "non codé". Le mode "macrobloc sauté" consiste en un macrobloc pour lequel aucune donnée n'est codée. Tous les coefficients DCT sont considérés comme égaux à zéro. Le décodeur forme une prédiction concernant les macroblocs sautés en exploitant leur environnement temporel ou spatial. Le traitement des macroblocs sautés est différent selon qu'il s'agisse d'images de type P ou d'images de type B. Dans le cas d'images de type P, les prédicteurs de vecteurs de mouvement sont remis à zéro. Le vecteur de mouvement transmis a la valeur zéro. En conséquence, le macrobloc courant est le même que celui de l'image précédente au même emplacement (co-localisé). Dans le cas d'images de type B, le sens de la prédiction (anticipée / différée / bidirectionnelle) est le même que pour le macrobloc précédent. Les prédicteurs de vecteur de mouvement ne sont pas modifiés. Le mode "non codé" consiste, quant à lui, en un macrobloc qui contient un en-tête et aucune donnée concernant les coefficients DCT. Les vecteurs de mouvement anticipés et/ou différés sont obtenus, coté décodeur, grâce à l'entête macrobloc. Selon le type d'image, différentes configurations existent: - pour les images de type P, le mode compensé en mouvement (MC) non codé est utilisé. Si toutefois le vecteur de mouvement différé est nul, on revient au mode macrobloc sauté. - pour les images de type B, les différents modes de codage sont "différé non codé", "anticipé non codé", "interpolé non codé" (bidirectionnel). La figure 3 représente la conversion en un standard 4:4:4 R V B à partir de différents types de standards correspondant à des formats de chrominance liés aux structures macrobloc. Dans le mode inter, en dehors du mode "macrobloc sauté" o l'ensemble des blocs composant le macrobloc ne sont pas codés, les blocs composant le macrobloc peuvent être ou non codés. C'est l'information "structure pattern_code" ou code cbp (pour coded block pattern) qui indique pour quels blocs un résidu n'est pas codé, c'est à dire a pour valeur zéro. Selon une caractéristique de l'invention, la conversion des blocs luminance Y et chrominance Cr, Cb en blocs R, V, B se fait en fonction de la valeur du code cbp. Un exemple est donné ci-dessous: Format 4:2:0 Si le code cbp indique que les blocs b3, b4 et b5 du domaine Y, Cr, Cb ne sont pas codés, alors un ou plusieurs des blocs b3, b10 et bl1 du domaine R, G, B peuvent être une recopie des blocs de l'image précédente et ne nécessitent pas de conversion. Format 4:2:2 Si le code cbp indique que les blocs b3, b6 et b7 du domaine Y, Cr, Cb ne sont pas codés, alors les blocs b3, b10 et bl1 du domaine R, G, B peuvent être une recopie des blocs de l'image précédente et ne nécessitent pas de conversion. Format 4:4:4 Si le code cbp indique que les blocs b3, b10 et bl1 du domaine Y, Cr, Cb ne sont pas codés, alors les blocs b3, b 10 et bl 1 du domaine R, G, B 9 2813001 peuvent être une recopie des blocs de l'image précédente et ne nécessitent pas de conversion. Dans le cas o le gop est un bloc d'image, les informations de code cbp permettent donc de déterminer les blocs d'image à résidu nul, pour lesquels un traitement classique de conversion du bloc n'est pas nécessaire; le bloc d'image dans le domaine d'affichage est obtenu par simple recopie d'un autre bloc dans ce domaine d'affichage. Un cas particulier concerne les erreurs dans la transmission des données codées empêchant le décodage de gops. Les décodeurs, lorsqu'une erreur de transmission est reconnue, mettent en oeuvre des algorithmes de masquage d'erreur. Ces algorithmes de reconstitution de gops consistent à copier ou compenser en mouvement les données décodées relatives à une ou plusieurs images précédentes. Les gops manquants sont reconstitués à partir de gops et de vecteurs mouvement précédemment codés. Un exemple est une recopie simple du macrobloc co-localisé de l'image précédente. L'invention propose, au lieu d'appliquer la conversion de format au macrobloc que l'on va utiliser pour remplacer le macrobloc manquant, de recopier tout simplement le macrobloc co-localisé converti de l'image précédente. La conversion de format, pour ce qui concerne les gops manquants, n'est donc pas nécessaire. Le procédé selon l'invention est mis en oeuvre lors d'une détection d'erreur par le décodeur. Il applique la même opération de masquage d'erreur que dans le domaine de décodage. Mais la reconstitution des gops est effectuée dans le domaine d'affichage, c'est à dire en partant de blocs convertis au lieu de blocs décodés. Certains algorithmes mis en oeuvre par les décodeurs effectuent des opérations simples sur les données décodées, par exemple pour l'amélioration de qualité d'image ou l'adjonction d'un logo. Ainsi, un 2813001 algorithme de traitement peut décider, pour une image décodée déclarée trop sombre, d'ajouter une composante continue (offset) aux coefficients DCT afin d'augmenter de manière artificielle la luminance. Au lieu d'effectuer cette addition d'une valeur d'offset sur les données décodées pour obtenir le nouveau macrobloc, si l'on prend l'exemple d'un macrobloc, et ensuite le convertir dans le domaine d'affichage, l'invention propose, pour les macroblocs non codés, c'est à dire ayant un résidu nul, d'appliquer cette opération directement sur les macroblocs convertis. C'est le macrobloc converti correspondant au macrobloc à résidu nul qui est exploité et non le macrobloc décodé. On lui ajoute l'offset converti, cet offset étant différent dans le domaine de décodage et dans le domaine d'affichage, pour obtenir le nouveau macrobloc converti. La superposition d'un logo consiste en l'adjonction d'un signal dans plusieurs macroblocs décodés, opération identique pour toutes les images. La solution proposée consiste à ajouter ce signal ou plus exactement le signal converti, à des macroblocs convertis, c'est à dire dans le domaine d'affichage. Une autre application concerne l'échelonnabilité. Certains codages tels que la norme MPEG2 ou MPEG4 prévoient une échelonnabilité (scalability en anglais) au niveau de la résolution de l'image. Une couche de base est d'abord codée. Cette couche de base peut être améliorée par l'adjonction de résidus provenant de couches successives d'amélioration, qui ont la même taille que les gops de la couche de base. Le même principe de conversion de format que celui proposé dans le cas de la prédiction temporelle peut alors être appliqué ici. La figure 4 représente une couche de base 12, une couche niveau 1, 13 et une couche niveau 2, 14. Le décodeur décode d'abord la couche de base puis éventuellement les couches de résolution supérieure. Ces différentes il 2813001 couches correspondent à des résidus qui sont ajoutés à la couche de base pour améliorer la précision dans l'image décodée. Dans l'exemple d'une structure macrobloc, si pour une couche donnée, le résidu d'un macrobloc est nul, la procédé consiste à copier le macrobloc converti de la couche précédente. Il n'est ainsi pas nécessaire d'effectuer une conversion de format pour obtenir le macrobloc relatif à cette couche donnée. On peut assimiler cette échelonnabilité, pour les gop de la couche de résolution supérieure, à un mode de codage inter sans résidu avec vecteur de mouvement nul. Le codage inter se fait entre la couche de niveau de résolution supérieur et la couche de base. Les formats de conversion décrits ici ne sont pas limitatifs et l'invention s'applique à tout type de conversion de format. Elle s'applique également aux modes de codages "inter dans I'intra" qui consistent à coder un gop d'une image non pas en fonction d'un gop d'une image précédente mais en fonction d'un gop précédent de la même image. Si le résidu est nul, le gop codé "inter dans l'intra" est converti par simple recopie du gop déjà converti dans la même image. L'invention est d'autant plus efficace que le codage entraîne un nombre important de blocs de résidu nuls, ce qui est le cas pour des applications ne nécessitant pas une grande qualité de restitution, en particulier des applications vidéo sur Internet o le débit est faible. Elle est également efficace pour des images de peu de mouvement par exemple pour des applications vidéophone. REVENDICATIONS 1 Procédé de conversion de format couleur d'une séquence d'images à partir de données vidéo codées sur la base d'une structure de groupes de pixels, caractérisé en ce que, pour un groupe de pixels codé à convertir, si le mode de codage utilisé est du type inter sans résidu (6), la conversion est effectuée par une copie (8, 10) d'un groupe de pixels converti d'une image précédente (11) mis en relation par le vecteur mouvement associé au dit groupe de pixels codé. 2 Procédé selon la revendication 1, caractérisé en ce que, si le vecteur mouvement associé au groupe de pixels est nul (7), la conversion est effectuée par recopie (8) du groupe de pixels co-localisé (11) et, si le vecteur mouvement est différent de zéro (7), la conversion est effectuée par compensation en mouvement (10) dans une image convertie précédente (11). 3 Procédé selon la revendication 1, caractérisé en ce que les données sont codées selon la norme MPEG, en ce que le groupe de pixels est un bloc d'images et en ce que le mode de codage est déterminé à partir du code cbp (coded block pattern) définissant la répartition des blocs codés dans le macrobloc. 4 Procédé selon la revendication 1, caractérisé en ce que les données sont codées selon la norme MPEG, en ce que le groupe de pixels est un macrobloc et en ce que le dit mode de codage est déterminé à partir des modes "macrobloc sauté" ou "non codé". 13 2813001 Procédé selon la revendication 1, la conversion de format étant complétée d'une modification de l'affichage à partir d'une opération mathématique simple applicable au niveau du groupe de pixels décodé, caractérisé en ce que l'opération, adaptée au domaine d'affichage, est appliquée aux groupes de pixels convertis copiés. 6 Procédé selon la revendication 5, caractérisé en ce que l'opération simple est l'ajout d'un offset. 7 Procédé de conversion de format couleur d'une séquence d'images à partir de données vidéo codées sur la base d'une structure de groupes de pixels, caractérisé en ce que, si pour un groupe de pixels codé à convertir une erreur de transmission des données codées entraîne un mode de masquage des erreurs équivalent à un décodage du type inter sans résidu, la conversion est effectuée par une copie d'un groupe de pixels converti d'une image précédente mis en relation par le vecteur mouvement associé au dit groupe de pixels codé. 8 Procédé de conversion de format couleur d'une séquence d'images à partir de données vidéo codées sur la base d'une structure de groupes de pixels, les données codées comprenant des données complémentaires permettant l'échelonnabilité c'est à dire l'obtention d'images de résolutions différentes (12, 13, 14), caractérisé en ce que, dans le cas o les données complémentaires relatives à un groupe de pixels et à une résolution donnée (13, 14) ont pour valeur zéro, ce groupe de pixels pour l'image convertie de résolution donnée (13, 14) est obtenu à partir d'un groupe de pixels convertis de l'image de résolution inférieure (12).