Brevet FR2828055A1 — publié le 20030131

L'invention concerne un procédé et dispositif de codage et de décodage d'une mosaïque d'images. Le domaine est celui de la compression vidéo de type MPEG ou autre, dans le cas où cette technique permet de mettre en oeuvre des moyens de resynchronisation. Il s'agit par exemple du standard H263 ou MPEG 4 ou de tout procédé de compression qui offre la possibilité de placer des marqueurs de resynchronisation à différents endroits du train binaire généré lors de la compression. Dans les décodeurs numériques actuels mettant en oeuvre des décodeurs MPEG-2, la mosaïque est généralement composée de plusieurs pages (écrans), chaque page correspondant à un canal (flux élémentaire MPEG2). A tout instant, une image entière est décodée et affichée. Même si seule une partie de la mosaïque est utile à l'affichage, la mosaïque doit être entièrement décodée, générant ainsi un temps de traitement important. L'invention a pour but de pallier les inconvénients précités. Elle a pour objet un procédé de codage d'une mosaïque d'images donnant un flux de données codées, la mosaïque étant composée de sous-images, les sous-images étant composées d'éléments d'images, des marqueurs de resynchronisation dans le flux permettant une resynchronisation des données au niveau de la réception, caractérisé en ce que : - les sous-images sont placées les unes sous les autres dans l'image à coder pour donner une mosaïque, - la mosaïque est codée élément par élément selon un balayage de type TV pour fournir des données du flux, le premier élément de chaque sous-image étant identifié, - un marqueur de resynchronisation est placé dans le flux, avant chaque premier élément'd'une sous-image pour identifier les données relatives à la sous-image. Selon une mise en oeuvre particulière du procédé, un élément d'image est un macrobloc, le codage exploite le standard MPEG 2 et les marqueurs de resynchronisation sont des entêtes de tranches (slices en anglais dans la norme). Selon une mise en oeuvre particulière du procédé, un élément d'image est un macrobloc, le codage exploite le standard MPEG 4 et les marqueurs de resynchronisation sont des entêtes de groupes de macroblocs. Selon une mise en oeuvre particulière du procédé, lorsque le codage des sous-images est en mode inter avec estimation de mouvement, l'estimation de mouvement exploite une fenêtre de recherche du vecteur mouvement qui correspond à l'emplacement de la sous-image dans l'image. Selon une mise en oeuvre particulière du procédé, le codage d'une sous-image est forcé en mode intra si elle n'a pas été codée dans ce mode pour un nombre déterminé d'images mosaïque précédentes. Selon une mise en oeuvre particulière du procédé, les sousimages ayant des tailles différentes, la surface de ces images constituant un support de mosaïque, le support de mosaïque est également codé et les données de codage du support sont transmises dans le flux en début d'une session vidéo. Si le support varie dans le temps, les données de codage du support sont transmises dans le flux à chaque variation. L'invention concerne également un procédé de décodage d'une mosaïque d'images à partir d'un flux de données comprenant des marqueurs de resynchronisation et des données de codage de mosaïques d'images constituées de sous-images, caractérisé en ce qu'un filtrage de ces données à partir des marqueurs de resynchronisation et un décodage sont effectués, pour extraire du flux et décoder, parmi les données relatives aux mosaïques, les seules données relatives à des sous-images sélectionnées. Selon une mise en oeuvre particulière du procédé, les sousimages décodées sont mémorisées et si une sous-image a été codée en mode inter, la sous-image correspondante mémorisée de la mosaïque précédente est exploitée pour le décodage. Selon une mise en oeuvre particulière du procédé, si une sousimage ne peut être décodée, la sous-image correspondante de la mosaïque précédente est prise en compte. L'invention concerne également un décodeur pour le décodage d'une mosaïque d'images à partir d'un flux de données comprenant des marqueurs de resynchronisation et des données de codage de mosaïques d'images constituées de sous-images, caractérisé en ce qu'il comprend un circuit de filtrage à partir des marqueurs de synchronisation et un circuit de décodage pour extraire du flux et décoder, parmi les données relatives aux mosaïques, les seules données relatives à des sous-images sélectionnées. L'invention concerne également un lecteur d'un flux de données vidéo transportant des données de codage de mosaïques d'images composées de sous-images et des marqueurs de resynchronisation, pour l'affichage d'une image finale, comportant un décodeur pour le décodage du flux et un circuit de traitement pour la gestion du décodeur, caractérisé en ce que : - le circuit de traitement transmet au décodeur des informations sur les sous-images sélectionnées utiles pour l'affichage de l'image finale, - le décodeur comporte un circuit de filtrage à partir des marqueurs de synchronisation et un circuit de décodage, pour extraire du flux et décoder, parmi les données relatives aux mosaïques, les seules données relatives aux sous-images sélectionnées. L'idée de l'invention est d'exploiter des marqueurs de resynchronisation prévus généralement dans les normes pour permettre une resynchronisation sur le flux de données reçu lors d'erreurs ou pertes de transmission, pour définir des données, dans le flux, appartenant aux différentes parties d'images ou sous-images composant une image mosaïque. La technique des marqueurs de resynchronisation est utilisée pour repérer le début de chaque sous-image de la mosaïque et ne décoder à tout instant que les parties de la mosaïque à afficher. Le processus de décodage est ainsi amélioré en termes de rapidité de calcul, le décodage vidéo de la mosaïque d'images est accéléré. Le but est de préserver au maximum les ressources de l'unité centrale de traitement (CPU) du lecteur pour lui permettre d'effectuer d'autres tâches que celles de décodage vidéo de la mosaïque. Le terme "lecteur" utilisé ici désigne l'appareil complet qui comprend le décodeur vidéo mais aussi toute la couche système qui commande ce décodeur, ainsi que d'autres éléments tels que décodeur audio, circuits de traitement graphique, circuits d'affichage... Dans le cas d'un lecteur MPEG-4, la part consacrée à la gestion des applications graphiques et à la couche système est essentielle. De plus en plus de plateformes sont équipées de moyens de décodage de données MPEG 4 et il devient logique que les applications interactives de type guide de programme électronique ou EPG (Electronic Program Guide) soient implémentées au standard MPEG 4, permettant une plus grande richesse au niveau interactivité. Il est donc très intéressant de rendre le décodage vidéo le plus rapide possible et de simplifier le traitement des données dans ce type d'applications. Ce décodage sélectif est mis en oeuvre à partir d'une méthode propriétaire au niveau du décodeur et à partir d'informations provenant de la couche"système"qui commande le décodeur vidéo. Les décodeurs "standards"ne comportant pas ce perfectionnement restent cependant compatibles de la technique mise en oeuvre, toutefois sans bénéficier des avantages du procédé proposé. 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, un format de mosaïque à coder, - la figure 2, un train binaire généré par le codeur, - la figure 3, un algorithme de traitement du décodeur, - la figure 4, un format de mosaïque de taille variable. Le procédé proposé intervient dans trois éléments de la chaîne de codage-décodage vidéo : le codeur vidéo, la couche système du lecteur contenant le décodeur vidéo, le décodeur vidéo. Il exploite, lors de l'encodage, la technique des paquets vidéo, existant par exemple dans la norme MPEG-4 vidéo (cf. ISO/IEC JTC 1/SC 29/WG 11 N 2502, annexe E, paragraphe E. 1.1, pages 307 à 308). Elle consiste à placer dans chaque image des marqueurs de resynchronisation délimitant chaque paquet vidéo, ces paquets étant codés indépendamment les uns des autres, tel que décrit dans ce document au paragraphe E. 1. 1 intitulé"resynchronization". La figure 1 représente une succession de trois images "mosaïque"référencées 1,2, 3 à coder aux instants t, t+1, t+2. Dans cet exemple, une image mosaïque est constituée de sous-images ou imagettes de taille identique et la vidéo correspondante consiste donc en la superposition de sous-images de taille identique. Ainsi, l'image mosaïque 1 est constituée de N sous-images ou imagettes référencées 11 à 1 N. Le flux binaire de codage de ces images est représenté à la figure 2. Il s'agit du train binaire du flux élémentaire ("Elementary Stream" dans la norme MPEG) correspondant à la mosaïque complète. Les données vidéo relatives à l'image mosaïque sont précédées par un en-tête d'image (header d'image). Elles sont constituées des données codées relatives à chaque sous-image. Selon l'invention, ces données sont séparées, pour chaque sous-image, par un marqueur de resynchronisation. Lors de l'encodage, le codeur place dans le train binaire des marqueurs de resynchronisation délimitant des paquets vidéo, ces paquets étant codés indépendamment les uns des autres, un paquet vidéo correspondant donc aux données entre deux marqueurs. Chaque sous-image est alors traitée comme un paquet vidéo et un marqueur de resynchronisation est donc placé au début de chaque sous-image, c'est à dire qu'il précède, dans le flux de données, les données vidéo correspondant à une sous-image. Dans le cas d'un codage par macroblocs, ce marqueur est placé, dans le flux de données, avant le premier macrobloc de chaque sous-image. Le codeur vidéo code toutes les sous-images vidéo. En plaçant, pour le codage de la mosaïque, les sous-images les unes sous les autres, le codage de ces dernières, par la couche de codage vidéo, se fait de manière séquentielle, les unes après les autres en considérant le mode de balayage classique de type télévision. Ainsi, en incrémentant les marqueurs de synchronisation d'une sous-image à l'autre, il est possible, au décodage, de repérer et d'accéder directement à la sous-image ou aux sous-images souhaitées simplement à partir du numéro du marqueur associé. A partir des informations provenant de la couche système indiquant les sous-images souhaitées, c'est à dire nécessaires à la réalisation de l'image finale à afficher, le décodeur peut donc initier le décodage de ces seules sousimages utiles à cette image finale. Le codage des sous-images peut exploiter l'estimation de mouvement pour un codage de type inter, prédictif ou bidirectionnel. Afin que les sous-images puissent être décodées de manière indépendante les unes des autres, il est nécessaire, lors du codage d'une sous-images de type inter, que la zone d'estimation de mouvement soit limitée à une zone de prédiction correspondant à l'emplacement et la taille de la sous-image concernée. Ainsi, un vecteur mouvement de l'estimateur de mouvement n'est pas autorisé à pointer dans une autre sous-image que celle correspondant au bloc auquel il est associé. Cette limitation peut être appliquée sur le seul axe vertical, la norme autorisant un vecteur de mouvement à pointer hors de l'image pour l'axe horizontal. Pour permettre au décodeur d'accéder de façon aléatoire aux sous-images de la mosaïque, par exemple suite à une action de l'utilisateur, les sous-images doivent être régulièrement codées en mode intra. Plusieurs solutions sont possibles : - le codeur code à une fréquence relativement élevée, classiquement toutes les 0,5 secondes, la mosaïque entière en mode intra. - si la syntaxe de codage le permet, le codage en mode intra n'est pas effectué sur toute l'image, mais uniquement sur une partie de l'image. Ainsi le codeur utilise ce mode intra sous-image par sous-image de façon tournante. A un instant donné, seules les premières sous-images sont forcées en mode intra. Les autres sous-images sont codées en mode prédictif, donc avec prédiction temporelle. A l'instant suivant, ce sont les sous-images suivantes qui sont codées en mode intra, et ainsi de suite jusqu'à atteindre les dernières sous-images de la mosaïque. Puis le processus recommence pour les premières sous-images. Cela permet de diluer dans le temps le coût, en terme de débit, des sous-images codées en intra et de ne pas avoir de pic de débit qui interviendrait si le codage de l'image entière était effectué en mode intra. Une mise en oeuvre voisine de cette deuxième solution consiste à doter chacune des sous-images d'un compteur de rafraîchissement intra, réinitialisé à chaque codage en intra, par exemple à une valeur égale à la période Rf de rafraîchissement, ce compteur étant décrémenté à chaque codage inter de la sous-image en question. Au début du codage de la séquence mosaïque, une fois la première image mosaïque codée en mode intra, les compteurs associés aux sous-images sont initialisés aléatoirement entre 0 et Rf. Le codage en intra de la sous-image est déclenché chaque fois que le compteur revient à Rf. De plus, lors d'un changement de scène (cut en anglais) relatif à une sous-image, le compteur de rafraîchissement associé à cette sous-image peut être réinitialisé à Rf afin de permettre le codage de cette sous-image en mode intra. La couche système du lecteur met en oeuvre une solution propriétaire permettant d'indiquer au décodeur vidéo, à partir d'une interface adaptée, quelles sous-images de la mosaïque doivent être décodées. Elle transmet par exemple la liste ordonnée des numéros des sous-images à décoder. Ces sous-images sont exactement celles qui doivent être affichées après décodage. Lorsqu'un décodeur'standard'est utilisé, ces informations ne seront pas exploitées et la totalité de la mosaïque sera alors décodée. Le décodeur vidéo reçoit le flux binaire correspondant à la mosaïque codée, ainsi que la liste des numéros des sous-images à décoder. Il gère les informations suivantes : - le mode de codage de l'image courante (mode intra ou prédictif) ; - un indicateur affecté à chaque imagette, signalant si l'imagette a été décodée à l'instant précédent (sous-image-décodée (k)). L'indicateur"sous-imagedécodée (k)", pour k variant de 1 à N, indicateur relatif à la sous-image (k), N étant le nombre de sous-images constituant la mosaïque, permet de savoir si cette sous-image k a été entièrement décodée à l'instant précédent et donc reconstruite. C'est le cas lorsque cette sous-image k est codée en mode intra ou lorsqu'elle est codée en mode prédictif (mode inter) et qu'alors la sous-image précédente correspondante auquel les vecteurs mouvement font référence est décodée, permettant le décodage de cette sous-image courante k. L'algorithme de traitement du lecteur est représenté à la figure 3. La liste des sous-images à décoder, calculée par la couche système, est exploitée par l'algorithme de traitement. Une première étape 4 vérifie si toutes les sous-images de la liste ont été traitées. Dans l'affirmative, c'est à dire si l'on est en fin de liste, l'étape suivante est l'étape 5. Toutes les sous-images nécessaires à l'affichage de l'image finale ayant été traitées, le processus de décodage est terminé et la mosaïque décodée est restituée à la couche système qui va la traiter pour réaliser l'affichage de l'image finale. Dans la négative, l'étape suivante 6 récupère le numéro k de la sous-image suivante à traiter, la première sous-image si l'on est en début d'itération. L'étape suivante 7 recherche le marqueur de resynchronisation k dans le flux de données. L'étape 8 vérifie s'il a été trouvé. Dans la négative, si par exemple il y a eu erreur dans la transmission des données, on reboucle sur l'étape 4 pour traiter la sousimage suivante, l'indicateur relatif à la sous-image courante k étant positionné de manière à signaler que la sous-image n'a pu être décodée. Dans l'affirmative, l'étape suivante, qui est l'étape 9, vérifie si la mosaïque a été codée entièrement en mode intra ou bien si la sous-image k de l'image mosaïque précédente a bien été décodée. Cette vérification peut se faire à partir du positionnement des indicateurs"sous-image~décodée (k)" affectés aux sous-images : - si tel est le cas, le décodage de la sous-image est alors possible et, lors de l'étape 10, les données relatives à cette sous-image k sont décodées. - si tel n'est pas le cas, l'algorithme va vérifier si le codage des macrobloc de la sous-image k est effectué en mode intra, le mode de codage de l'image globale étant toutefois le mode inter. Ainsi, une étape 12 vérifie si tous les macroblocs de la sousimage ont été passés en revue. Si non, l'étape 14 vérifie, pour le macrobloc suivant, s'il est codé en mode intra : - si tel n'est pas le cas, la sous-image k ne peut être décodée en mode intra, et l'étape 15 positionne l'indicateur de manière à signaler que l'imagette correspondante n'a pas été décodée. L'étape suivante est l'étape 4 qui traite la sous-image suivante. - si tel est le cas, l'étape suivante 13 effectue le décodage des données relatives à ce macrobloc puis l'étape 12 vérifie s'il s'agit du dernier macrobloc à coder de cette sous-image k. Si oui, c'est à dire si toutes les données relatives aux macroblocs de la sous-image k ont pu être décodées, l'étape 11 est mise en oeuvre. Lorsque les données relatives à tous les macroblocs de la sous-image ont été décodés, que ce soit à l'issue de l'étape 13 et 12 ou bien à l'issue de l'étape 10, la sous-image est alors reconstituée lors de l'étape suivante 11 où l'indicateur"sous-imagedécodée (k)" est mis à jour. Il s'agit d'une reconstruction, soit à partir des seules données du flux relatif à cette sous-image à l'instant t si le codage des données était en mode intra, soit à partir des données mémorisées de la sous-image décodée correspondante de la mosaïque précédente si le codage des données était en mode inter. L'imagette est construite à partir des données décodées en effectuant de manière classique les opérations de transformation cosinus inverse, compensation de mouvement, ajout du résidu en mode inter... On passe ensuite à une nouvelle sous-image, étape 4, lors d'une nouvelle itération. Cet algorithme permet donc de construire les seules imagettes dont le numéro est indiqué dans la liste des imagettes à décoder, à condition qu'elles soient codées en mode intra ou codées en mode prédictif, l'imagette correspondante précédente ayant été elle-même construite. Si dans ce mode prédictif, l'imagette correspondante de la mosaïque précédente n'a pas été reconstruite, il faut attendre une prochaine imagette codée en mode intra pour pouvoir la construire. Il est donc essentiel, lors du codage, de coder régulièrement les imagettes en mode intra. C'est la boucle 12,14, 13, qui permet de vérifier le codage en mode intra d'une sous-image lorsque l'image globale est codée en mode prédictif. En sortie de ce processus de décodage, on obtient une mosaïque partiellement remplie, en fonction des imagettes nécessaires. Lorsqu'une sous-image n'a pu être construite (étape 15), une solution consiste à exploiter la sous-image correspondante de la mosaïque précédente. Un perfectionnement de l'invention consiste à transmettre des imagettes de taille différente. Le procédé consiste alors, au niveau du codeur, à coder, en plus de l'image de la mosaïque, la forme du support de la mosaïque. La figure 4 représente, référencée 16, une forme de mosaïque pour laquelle les imagettes n'ont pas toutes la même forme. Dans ce cas, un codage du support de la mosaïque, référencé 17 sur la figure, est effectué. Ce codage n'est nécessaire qu'au tout début de la session vidéo. Cependant, une modification dans le temps de la disposition des différentes imagettes est possible. Il est alors nécessaire de mettre à jour ce support. Le nouveau support est transmis, en mode intra ou inter, à chaque changement de disposition des imagettes qui entraîne un changement du support. Une mise en oeuvre du procédé exploite le codage par macrobloc d'une sous-image. Il s'agit d'un exemple de réalisation et le macrobloc peut être remplacé par tout élément d'image sans pour autant sortir du domaine de l'invention. Le procédé décrit peut être étendu aux objets vidéo de forme quelconque, le support devant alors être codé à chaque instant. Une application concerne les jeux vidéo où les imagettes correspondent à différents personnages animés. On peut noter que si, au niveau de l'encodage, l'ajout de marqueurs de resynchronisation au début de chaque sous-image alourdit légèrement le flux binaire, ce surcoût est limité et permet d'autre part de disposer d'un outil de resynchronisation qui facilite le masquage des erreurs de transmission. La sélection des sous-images à partir des marqueurs de synchronisation peut se faire en affectant une numérotation aux marqueurs et aux sous-images, un numéro d'un marqueur correspondant alors à une sous-images déterminée. Elle peut également se faire en tenant compte du codage séquentiel des sous-images, le nième marqueur de synchronisation pour les données relatives à une image mosaïque correspondant alors à la nième sous-image codée de la mosaïque. Les applications concernent, entres autres, les services interactifs utilisant le système de mosaïque vidéo. Il peut s'agir, par exemple, de la consultation d'un guide électronique de programme où l'utilisateur a la possibilité d'examiner les différentes pages d'une mosaïque de programmes. REVENDICATIONS 1 Procédé de codage d'une mosaïque d'images donnant un flux de données codées, la mosaïque étant composée de sous-images, les sousimages étant composées d'éléments d'images, des marqueurs de resynchronisation dans le flux permettant une resynchronisation des données au niveau de la réception, caractérisé en ce que : - les sous-images (11... lN) sont placées les unes sous les autres dans l'image à coder pour donner une mosaïque, - la mosaïque est codée élément par élément selon un balayage de type TV pour fournir des données du flux, le premier élément de chaque sous-image étant identifié, - un marqueur de resynchronisation est placé dans le flux, avant chaque premier élément d'une sous-image, pour identifier les données relatives à la sous-image. 2 Procédé selon la revendication 1, caractérisé en ce que les marqueurs de synchronisation sont incrémentés d'une sous-image à l'autre. 3 Procédé selon la revendication 1, caractérisé en ce qu'un élément d'image est un macrobloc, en ce que le codage exploite le standard MPEG 2 et en ce que les marqueurs de resynchronisation sont des entêtes de tranches (slices en anglais). 4 Procédé selon la revendication 1, caractérisé en ce qu'un élément d'image est un macrobloc, en ce que le codage exploite le standard MPEG 4 et en ce que les marqueurs de resynchronisation sont des entêtes de groupes de macroblocs. 5 Procédé de codage selon la revendication 1, caractérisé en ce que, lorsque le codage des sous-images est en mode inter avec estimation de mouvement, l'estimation de mouvement exploite une fenêtre de recherche du vecteur mouvement qui correspond à l'emplacement de la sous-image dans l'image. 6 Procédé selon la revendication 1, caractérisé en ce que le codage d'une sous-image est forcé en mode intra si elle n'a pas été codée dans ce mode pour un nombre déterminé d'images mosaïque précédentes. 7 Procédé selon la revendication 1, les sous-images ayant des tailles différentes (16), la surface de ces images constituant un support de mosaïque (17), caractérisé en ce que le support de mosaïque est également codé et les données de codage du support transmises dans le flux en début d'une session vidéo. 8 Procédé selon la revendication 7, caractérisé en ce que le support de mosaïque varie dans le temps et en ce que les données de codage du support sont transmises dans le flux à chaque variation. 9 Procédé de décodage d'une mosaïque d'images à partir d'un flux de données comprenant des marqueurs de resynchronisation et des données de codage de mosaïques d'images constituées de sous-images, caractérisé en ce qu'un filtrage (6,7, 8) de ces données à partir des marqueurs de synchronisation et un décodage sont effectués, pour extraire du flux et décoder, parmi les données relatives aux mosaïques, les seules données relatives à des sous-images sélectionnées. 10 Procédé selon la revendication 9, caractérisé en ce que le filtrage est fonction du numéro des marqueurs de synchronisation 11 Procédé de décodage selon la revendication 9, caractérisé en ce que les sous-images décodées sont mémorisées, et en ce que, si une sous-image a été codée en mode inter, la sous-image correspondante mémorisée de la mosaïque précédente est exploitée pour le décodage. 12 Procédé selon la revendication 9, caractérisé en ce que, si une sous-image ne peut être décodée, la sous-image correspondante de la mosaïque précédente est prise en compte. 13 Décodeur pour le décodage d'une mosaïque d'images à partir d'un flux de données comprenant des marqueurs de resynchronisation et des données de codage de mosaïques d'images constituées de sousimages, caractérisé en ce qu'il comprend un circuit de filtrage (6,7, 8) à partir des marqueurs de synchronisation et un circuit de décodage (10) pour extraire du flux et décoder, parmi les données relatives aux mosaïques, les seules données relatives à des sous-images sélectionnées. 14 Lecteur d'un flux de données vidéo transportant des données de codage de mosaïques d'images composées de sous-images et des marqueurs de resynchronisation, pour l'affichage d'une image finale, comportant un décodeur pour le décodage du flux et un circuit de traitement pour la gestion du décodeur, caractérisé en ce que : - le circuit de traitement transmet au décodeur des informations sur les sous-images sélectionnées utiles pour l'affichage de l'image finale, - le décodeur comporte un circuit de filtrage (6,7, 8) à partir des marqueurs de synchronisation et un circuit de décodage (10), pour extraire du flux et décoder, parmi les données relatives aux mosaïques, les seules données relatives aux sous-images sélectionnées.