FR 2818053 A1 20020614 FR 0015901 A 20001207 L'invention concerne un procédé et dispositif de codage et de décodage compatible de la norme MPEG2 pour l'affichage d'un zoom d'une image transmise. Effectuer un zoom d'une image consiste à dilater ou réduire une partie de cette image. Il s'agit donc d'une modification des tailles horizontales et verticales de la partie d'image sélectionnée pour un affichage en mode zoom. Aujourd'hui, les applications basées sur l'interactivité nécessitent de pouvoir visualiser des images sous une forme réduite ou agrandie. Par exemple les guides de programmes électroniques exploitent des images de dimensions réduites afin de permettre un affichage sur l'écran d'informations annexes sous forme OSD (acronyme de l'anglais On Screen Display). Un agrandissement peut également être nécessaire dans le cas où l'on souhaite focaliser l'affichage sur une partie de l'image source. Le procédé proposé peut être utilisé par tout type d'appareil exploitant un flux de données codées selon la norme MPEG2, par exemple un décodeur, un lecteur/enregistreur DVD, un boîtier Internet etc. La transmission des données peut être une transmission par satellite, par câble, terrestre, etc. La compression MPEG2 n'est pas un traitement basé objet et l'image décodée affichée est généralement une copie de l'image source codée. Pour réaliser un affichage spécifique en mode zoom, il est donc nécessaire de coder l'image source telle qu'elle doit être affichée, c'est à dire après avoir effectué le zoom sur cette image source. Ainsi, l'image source, provenant par exemple d'un studio fournissant une séquence vidéo, est traitée avant le codage et la transmission des données vidéo. Les opérations de zoom sont effectuées sur cette image source et c'est la nouvelle image "zoomée"qui est codée comme les autres images de la séquence vidéo. L'inconvénient d'un tel procédé provient du manque de souplesse qu'il impose. Il doit être décidé, dès le codage, des zooms à réaliser. Ceux-ci ne peuvent plus alors être modifiés à la réception des données, au niveau du décodeur, par exemple en fonction de données ou paramètres sélectionnés par le spectateur. L'invention a pour but de pallier les inconvénients précités. A cet effet, l'invention a pour objet un procédé de codage permettant l'affichage d'un zoom d'une image codée selon la norme MPEG2, l'image zoomée étant définie par son rapport d'homothétie en horizontal et en vertical par rapport à l'image codée, caractérisé en ce qu'il effectue les étapes suivantes : - calcul des dimensions horizontales et verticales d'un rectangle d'affichage initial à partir duquel on obtiendrait les dimensions du rectangle d'affichage cible tel que défini par les informations de profil et niveau en appliquant les rapports d'homothétie horizontal et vertical, - mémorisation dans les champs"dimension horizontale d'affichage" (display ~horizontal ~size) et "dimension verticale d'affichage" (display ~vertical ~size) d'un flux de données vidéo MPEG2 des dimensions horizontales et verticales du rectangle d'affichage initial. Selon une variante, l'image zoomée étant définie par son emplacement dans l'image affichée s'il s'agit d'un rétrécissement ou par la partie de l'image codée à afficher s'il s'agit d'un agrandissement, le procédé précédent est caractérisé en ce qu'il effectue également les étapes suivantes : - calcul de la position correspondante du centre du rectangle d'affichage initial par rapport au centre de l'image codée pour définir un décalage horizontal et vertical, - mémorisation d'une information définissant le décalage horizontal et vertical dans les champs "décalage horizontal du centre de l'image" (frame ~centre ~horizontal ~offset) et "décalage vertical du centre de l'image" (frame ~centre ~vertical ~offset) du flux de données vidéo MPEG2, Elle a également pour objet un dispositif de codage pour la mise en oeuvre du procédé de codage précédent, caractérisé en ce qu'il comprend un modificateur de syntaxe relié à un codeur MPEG pour modifier les champs"dimension horizontale d'affichage" (display ~horizontal ~size) et "dimension verticale d'affichage" (display ~vertical ~size) et les champs "décalage horizontal du centre de l'image" (frame ~centre ~horizontal ~offset) et "décalage vertical du centre de l'image" (frame ~centre ~vertical ~offset) du flux de données MPEG2 provenant du codeur, respectivement en fonction de l'amplitude et de la position du zoom souhaité. Selon une variante, le dispositif précédent est caractérisé en ce qu'il comprend un synchroniseur d'application relié au codeur et au modificateur de syntaxe pour commander la modification de syntaxe entre deux instants de code temporel tcO et tc1 du flux de données MPEG2 correspondant aux images pour lesquelles la fonction zoom est souhaitée. L'idée de l'invention est de transporter un certain nombre de paramètres relatifs au zoom de l'image dans des champs définis dans la syntaxe du flux binaire de données vidéo codées selon la norme MPEG2 vidéo. Les champs sont choisis parmi les extensions prévues dans la norme. Ainsi, le codeur peut gérer d'une manière dynamique les paramètres relatifs au zoom, c'est à dire la taille de l'image à visualiser, son emplacement dans l'image affichée, la partie de l'image codée à visualiser en mode zoom et cela sans changer les paramètres de codage tels que la taille horizontale et la taille verticale de l'image codée. Les différents champs existants, dans la norme MPEG2 vidéo (norme ISO/CEI 13818-2), relatifs à la dimension des images à coder et à afficher sont rappelés ci-après : La taille de l'image codée ou plus exactement de l'image affichable est définie dans l'en-tête de séquence (sequence header) du flux de données MPEG2 (paragraphe 6.3. 3 de la norme MPEG2 vidéo) et éventuellement dans l'extension de séquence (paragraphe 6.3. 5 de la norme MPEG2 vidéo). Il s'agit des champs"dimension horizontale" (horizontal ~size), "dimension verticale" (vertical ~size) ainsi que des champs "valeur de la dimension horizontale" (horizontal ~size ~value), "valeur de la dimension verticale" (vertical ~size ~value) et "extension de dimension horizontale" (horizontal ~size ~extension), "extension de dimension verticale" (vertical size extension) auxquels les premiers champs font référence. Ces champs définissent en fait la largeur de la partie affichable de la composante de luminance en pels (pixels) et la hauteur, en nombre de lignes, de la partie affichable de la composante de luminance de l'image complète (bi-trame) en pels. La partie d'image affichable, qui est la partie d'image contenant de la vidéo et qui ne comprend donc pas forcément un nombre entier de macroblocs, est alignée sur le bord gauche et le bord supérieur des images codées. La taille de l'image affichée est, quant à elle, définie dans l'extension d'affichage de séquences (paragraphe 6. 3. 6 de la norme MPEG2 vidéo : sequence ~display extension). On notera que cette extension ne définit pas le processus d'affichage. Les informations de cette extension n'ont pas d'incidence sur le processus de décodage et peuvent être négligées par les décodeurs conformes à la spécification MPEG2. Les deux structures"dimension horizontale d'affichage" (display ~horizontal ~size) et "dimension verticale d'affichage" (display ~vertical ~size) définissent ensemble un rectangle que l'on peut considérer comme étant la région active de l'affichage prévu. Si ce rectangle d'affichage est plus petit que l'image bitrame codée, on peut s'attendre à ce que le processus d'affichage n'affiche qu'une partie de cette image. Inversement, si le rectangle d'affichage est plus grand que l'image bi-trame codée, on peut s'attendre à ce que le processus d'affichage n'affiche les images bi-trames reconstruites que sur une partie du dispositif d'affichage au lieu de la totalité. La norme MPEG2 prévoit une structure d'extension d'affichage de l'image (picture ~display ~extension), objet du paragraphe 6.3. 12 du document ISO/CEI 13818-2. L'extension d'affichage d'image permet de déplacer, image par image, la position du rectangle d'affichage, dont les dimensions sont spécifiées par la structure précédemment décrite "sequence ~display ~extension". Une application concerne le recadrage des images. Les champs "décalage horizontal du centre de l'image" (frame ~centre ~horizontal ~offset) et "décalage vertical du centre de l'image" (frame ~centre ~vertical ~offset) indiquent le décalage horizontal et vertical du centre de l'image reconstruite par rapport au centre du rectangle d'affichage. Les décalages de centre d'image peuvent servir à mettre en oeuvre le procédé de recadrage en plein écran, par lequel on définit une zone rectangulaire correspondant au plein écran, qui est déplacée panoramiquement sur toute l'image reconstruite. Ce procédé est utilisé en particulier pour passer d'une image codée au format 16/9 en une image affichée au format 4/3. La zone définie par le format 4/3 peut ainsi contenir la partie la plus intéressante de l'image d'origine au format 16/9. On notera que les champs qui sont définis dans la norme pour une séquence (en-tête de séquence, extension d'affichage de séquence) peuvent en fait être transmis par image (cf. valeurs réservées dans le tableau 6.2 de la norme"codes d'identification des codes de déclenchement d'extension"). Amplitude du zoom. L'idée proposée ici est de considérer les informations contenues dans les champs"display ~horizontal-size"et"display ~vertical-size" comme définissant l'amplitude d'un zoom. Au lieu de définir, à l'aide de ces champs, la taille du rectangle d'affichage ou image affichée, comme le propose la norme MPEG2, on définit une taille d'un"rectangle d'affichage initial"ou image d'origine à partir duquel serait effectué le zoom. La taille de ce rectangle d'affichage initial est telle que le zoom appliqué sur ce rectangle donne une image dont les dimensions sont celles du rectangle d'affichage cible, c'est à dire de la taille de l'écran, tel que défini par le choix du profil et niveau par le codeur. Ainsi un rectangle d'affichage initial de dimensions supérieures à celles du rectangle d'affichage cible correspond à un rétrécissement de l'image et un rectangle de dimensions inférieures correspond à un agrandissement. L'amplitude du zoom est donc obtenue en calculant le rapport entre la taille du rectangle d'affichage cible qui est déduite des informations de niveau et profil et la taille du rectangle d'affichage initial qui est transportée dans les champs"display ~horizontal~size"et"display yertical ~size". Bien sûr, ces derniers champs ne devront pas être utilisés pour la transmission d'informations redondantes concernant la conversion du format 16/9 en format 4/3. Un exemple d'utilisation des champs précédemment décrits est donné ci-dessous et schématisé à la figure 1. Considérons une image décodée ou reconstruite référencée 1 sur la figure dont la taille est de 480 pixels sur 576 lignes (il s'agit en fait de la taille de l'image encodée au niveau du codeur MPEG), un rectangle d'affichage cible ou taille d'écran référencé 2 de 720 pixels sur 576 lignes. Le tableau suivant indique les différentes amplitudes de zoom en fonction des informations transportées dans les champs "display ~horizontal ~size"et"display ~vertical~size". Les valeurs h~zoom et vzoom correspondent aux homothéties horizontales et verticales. Une amplitude de zoom inférieure à 1 veut dire que la taille de l'image obtenue relative à l'image reconstruite, par rapport à la taille de l'image codée, est inférieure à 1 et une amplitude de zoom supérieure à 1 indique que la taille de l'image obtenue par rapport à celle de l'image codée est supérieure à 1. Si cette valeur est égale à 1, alors l'image obtenue est l'image reconstruite. "Display~horizontal"Displaverf/cal Affichage Amplitude du zoom size" ~size" cible h~zoom, v~zoom (pixels) (lignes) 14401t52720x576hzoom = 720/1440 = 0. 50 vzoom = 576/1152 = 0. 50 *note1 2880 2304 720x576 h~zoom = 720/2880 = 0. 25 vzoom = 576/2304 = 0. 25 *note1 720 576 720x576 h~zoom = 1 vzoom = 1 480 576 720x576 h~zoom = 720/480 = 1.50 vzoom = 576/576 = 1.00 * note3 360288720x576hzoom = 720/360 = 2. 00 vzoom = 576/288 = 2.00 *note2 180 144 720x576 h~zoom = 720/180 = 4. 00 vzoom = 576/144 = 4. 00 *note2 note 1 : rétrécissement de l'image note 2 : agrandissement de l'image note 3 : l'image obtenue à partir de l'image codée, dont les dimensions sont supérieures à celles de l'image codée, remplit l'écran. Le rectangle d'affichage cible (ou affichage cible) déduit des informations de profil et niveau et de l'information de format d'image (16/9), est supérieur à la taille de l'image codée. Les images référencées 3, 4, 5, 6 correspondent respectivement aux valeurs : zoom = vzoom = 0, 50 h~zoom = vzoom = 1, 00 h~zoom = 1, 50, vzoom = 1, 00 h~zoom = vzoom = 2, 00 Les champs display ~horizontal ~size et display ~vertical ~size sont des champs de 14 bits. La valeur décimale maximale, égale à 16383, correspond à un rétrécissement maximum de 720/16383 en horizontal et de 576/16383 en vertical, dans notre exemple. Emplacement de l'image zoomée. Les champs "décalage horizontal du centre d'image" (frame ~centre ~horizontal ~offset) et "décalage vertical du centre d'image" (frame ~centre ~vertical ~offset) de la structure d'extension d'affichage de l'image sont exploités pour transporter les informations d'emplacement de l'image zoomée. Il correspondent au décalage du centre de l'image codée par rapport au centre du rectangle d'affichage initial. Le centre de l'image codée (en fait de l'image affichable) est le centre de la région définie par les champs "horizontal ~size" et "vertical ~size" de l'en-tête de séquence. Le centre du rectangle d'affichage initial est le centre de la région définie par les champs"display ~horizonta)size"et"display ~vertical~size", comme indiqué précédemment. La figure 2 donne l'exemple d'un rétrécissement d'image et représente un rectangle d'affichage initial 8 dans lequel se trouve l'image codée 7 correspondant à l'image codée 1. Les flèches horizontales et verticales visualisent le décalage horizontal et vertical du centre de l'image codée par rapport au centre du rectangle d'affichage initial. Considérons par exemple une image décodée ou reconstruite de dimensions 480 pixels x 576 lignes, des champs"display-horizontal-size"et"display ~vertical~size" transportant respectivement les valeurs 1440 (pixels) et 1152 (lignes) et une taille du rectangle d'affichage cible de 720 (pixels) x 576 (lignes). h~zoom = 720/1440 = 0, 50 v~zoom = 576/1152 =0, 50 Si l'on souhaite positionner une image zoomée dans la partie supérieure gauche du rectangle d'affichage initial, par exemple à une distance de 400 pixels en horizontal et de 300 lignes en vertical, du coin supérieur gauche du rectangle d'affichage initial, les informations d'offset auront les valeurs suivantes : frame ~centre ~horizontal ~offset = (400-1440/2) x 16 frame-centre-vertical-offset = (300-1152/2) x16 Les deux valeurs sont négatives conformément au standard MPEG. Les valeurs sont multipliées par 16 car les décalages sont spécifiés en unités de 1/16éme de pel. Les valeurs 400 et 300 correspondent aux valeurs avant zoom de l'image. Ces valeurs doivent être corrigées de l'amplitude de zoom si l'on souhaite définir le positionnement de l'image zoomée dans l'image effectivement visualisée sur l'écran. Dans le cas d'un agrandissement d'image, la position du rectangle d'affichage initial (8) dans l'image codée (7) définit la zone de l'image codée agrandie que l'on souhaite visualiser. Une mise en oeuvre particulière de l'invention concerne le formatage dynamique de la vidéo à partir d'une application interactive. La figure 3 représente un schéma simplifié d'un dispositif pour une telle mise en oeuvre. Les différentes images source vidéo sont reçues par des codeurs vidéo MPEG2 91 à 9n. Les images sont codées selon une taille d'image constante, par exemple 720 pixels sur 576 lignes. Des circuits de modification de syntaxe vidéo 10j à 10n faisant ou non partie des codeurs vidéo fournissent des interfaces pour modifier des champs de la syntaxe vidéo MPEG2 pour les codeurs i à n associés. Une boîte à outil pour l'application 12 est composée de : - un injecteur d'application, par exemple au format Open TV, Media Highway, Java, qui sont des marques déposées, -un synchroniseur d'application qui synchronise l'application sur la vidéo pour l'exécution de cette application selon l'information de code temps (time code) du flux élémentaire MPEG 2. Cette boîte à outils 12 reçoit des informations provenant des différents codeurs i à n et transmet des données pour la modification des champs aux circuits de modification de syntaxe 101 à 1 On- Elle est reliée à un circuit de multiplexage 11 pour transmettre des données privées avec leur PID (Packet IDentififier), sous forme de sections. Les différents codeurs 91 à 9n, à travers les circuits de modification de syntaxe vidéo 10j à 10n la cas échéant, sont également reliés au circuit de multiplexage 11 qui, à partir des différents flux élémentaires et des données privées, fournit un flux transport. Ce flux transport est ensuite exploité pour être transmis à un récepteur IRD (acronyme de l'anglais Integrated Receiver/Decoder). Ce récepteur, non représenté sur la figure, comprend, entre autres, un décodeur pour le décodage des données audio/vidéo et un moteur d'application pour la mise en oeuvre du programme applicatif. Il peut également s'agir d'un simple moyen de stockage numérique tel que disque dur, DVD ou autre pour une exploitation ultérieure des données enregistrées. Le circuit de modification de syntaxe 10 modifie des champs de base de la syntaxe vidéo MPEG2 permettant de réaliser des zooms d'images selon le procédé précédemment décrit. Dans le flux vidéo, ces champs sont modifiés sur un espace temps correspondant à la durée d'exécution de l'application. Les codes temps relatifs à l'image initiale et à l'image finale entre lesquelles l'application doit être mise en oeuvre au niveau du récepteur sont transportés par l'application (données privées). Il s'agit des informations"start time code" (tcO) et"stop time code" (tc1) qui correspondent donc au début et à la fin de l'application. Au récepteur, le moteur d'application extrait les informations "time code"des différents flux de données et l'application se déclenche, pour un flux donné, dés la lecture du code temps correspondant à tcO, jusqu'à l'instant tc1 où elle s'arrête. Entre ces deux instants, l'affichage se fait en mode zoom. Le synchroniseur d'application 12 reçoit les codes temps des différents codeurs. Il modifie, par l'intermédiaire des circuits de modification de syntaxe, les champs de la syntaxe vidéo MPEG2, entre des instants start time code qui correspond au démarrage de l'application et stop time code qui correspond à la fin de l'application, permettant ainsi de réduire (ou d'augmenter) les dimensions de l'image vidéo selon le procédé précédemment décrit, pour les images se trouvant entre ces instants. Ces infos"start time code"et"stop time code"peuvent provenir de données extérieures. Elles sont par exemple obtenues à partir de l'identification d'une séquence d'images pendant laquelle on souhaite pouvoir effectuer un zoom, séquence définie par l'intermédiaire de ces codes temps. Dans un exemple, l'application complète l'affichage de l'image rétrécie par un affichage en mode OSD interactif, en insérant des informations dans l'image. Ce mode interactif permet de revenir en mode normal, en interrompant l'application. La figure 4 représente, sur une première ligne, l'image 13 telle que construite par le codeur entre les instants tcO et tc1 pendant lesquels tourne l'application ainsi que les images précédant le démarrage de l'application et succédant à la fin de l'application. Sur une deuxième ligne sont représentées l'image 14 telle que visualisée par le décodeur lorsque l'application tourne, l'image précédant et l'image succédant à l'application. Entre les instants tcO et tc1, l'application, au récepteur, tourne et réduit la taille de l'image en fonction des données lues dans les champs définis précédemment. Le décodeur MPEG reçoit le flux de données qu'il décode d'une manière classique. En particulier, les images pour lesquelles une opération de zoom est possible du fait du remplissage des champs relatifs à l'amplitude du zoom et à la position de l'image zoomée sont décodées pour fournir dans un premier temps une image reconstruite de dimensions celles indiquées dans les champs "dimension horizontale" et "dimension verticale". Cette image reconstruite est ensuite sur-échantillonnée ou sous- échantillonnée puis filtrée en fonction de l'amplitude du zoom pour obtenir la taille de l'image que l'on souhaite afficher. La position de l'imagette (rétrécissement) ou la sélection de la partie d'image à visualiser (agrandissement) sont calculées en fonction des données relatives au décalage. Un exemple d'utilisation peut être l'insertion d'une publicité. La taille image est réduite afin de faire apparaître du texte. Un autre exemple est relatif à un guide de programmes. Dans l'art antérieur, le téléspectateur effectue un choix sur une mosaïque construite au niveau du codeur et la sélection d'une imagette se traduit par un zapping vers un autre service vidéo (flux élémentaire vidéo). Dans l'invention, la sélection d'un programme, par exemple à partir d'un affichage OSD, déclenche le démarrage de l'application pour le flux de données MPEG correspondant au programme sélectionné. La chaîne sélectionnée est ainsi visualisée en"live" (en temps réel) dans une fenêtre. REVENDICATIONS 1 Procédé de codage permettant l'affichage d'un zoom d'une image codée selon la norme MPEG2, l'image zoomée étant définie par son rapport d'homothétie en horizontal et en vertical par rapport à l'image codée (1,7), caractérisé en ce qu'il effectue les étapes suivantes : - calcul des dimensions horizontales et verticales d'un rectangle d'affichage initial (8) à partir duquel on obtiendrait les dimensions du rectangle d'affichage cible (2) tel que défini par les informations de profil et niveau en appliquant les rapports d'homothétie horizontal et vertical, - mémorisation dans les champs"dimension horizontale d'affichage" (display ~horizontal ~size) et "dimension verticale d'affichage" (display ~vertical ~size) d'un flux de données vidéo MPEG2 des dimensions horizontales et verticales du rectangle d'affichage initial. 2 Procédé selon la revendication 1, l'image zoomée étant définie par son emplacement dans l'image affichée s'il s'agit d'un rétrécissement ou par la partie de l'image codée à afficher s'il s'agit d'un agrandissement, caractérisé en ce qu'il effectue les étapes suivantes : - calcul de la position correspondante du centre du rectangle d'affichage initial (8) par rapport au centre de l'image codée (7) pour définir un décalage horizontal et vertical, - mémorisation d'une information définissant le décalage horizontal et vertical dans les champs"décalage horizontal du centre de l'image" (frame ~centre ~horizontal ~offset) et "décalage vertical du centre de l'image" (frame ~centre ~vertical ~offset) du flux de données vidéo MPEG2, 3 Procédé selon la revendication 1, caractérisé en ce que la modification de syntaxe du flux correspondant à la mémorisation des valeurs dans les champs est effectuée entre deux instants de code temporel tcO et tc1 du flux de données MPEG2 correspondant aux images pour lesquelles la fonction zoom est souhaitée. 4 Dispositif de codage pour la mise en oeuvre du procédé de codage selon la revendication 2, caractérisé en ce qu'il comprend un modificateur de syntaxe (12) relié à un codeur MPEG (9) pour modifier les champs"dimension horizontale d'affichage" (display-horizontal-size) et "dimension verticale d'affichage" (display ~vertical ~size) et les champs "décalage horizontal du centre de l'image" (frame ~centre ~horizontal ~offset) et "décalage vertical du centre de l'image" (frame ~centre ~ventical ~offset) du flux de données MPEG2 provenant du codeur, respectivement en fonction de l'amplitude et de la position du zoom souhaité. 5 Dispositif selon la revendication 4, caractérisé en ce qu'il comprend un synchroniseur d'application (12) relié au codeur (9) et au modificateur de syntaxe (10) pour commander la modification de syntaxe entre deux instants de code temporel tcO et tc1 du flux de données MPEG2 correspondant aux images pour lesquelles la fonction zoom est souhaitée. 6 Procédé de décodage d'un flux de données MPEG2, caractérisé en ce qu'il effectue les opérations suivantes : - lecture des données dans les champs "décalage horizontal du centre de l'image" (frame ~centre ~horizontal ~offset) et "décalage vertical du centre de l'image" (frame ~centre ~vertical ~offset) du flux de données vidéo MPEG2, - lecture des données dans les champs"dimension horizontale d'affichage" (display ~horizontal ~size) et "dimension verticale d'affichage" (display ~vertical ~size) d'un flux de données vidéo MPEG2, - calcul du rapport d'homothétie du zoom en fonction des dimensions horizontales et verticales choisies de l'image zoomée correspondant à ces données de dimensions, - sur-échantillonnage ou sous échantillonnage ou filtrage ou interpolation de l'image codée reçue en fonction de ce rapport d'homothétie, - positionnement dans l'image à afficher, de l'image ainsi échantillonnée en fonction des données relatives au décalage. 7 Récepteur comprenant un décodeur de flux de données MPEG2 codées selon le procédé de la revendication 3, un moteur d'application interactive, caractérisé en ce que le moteur d'application met en oeuvre l'application relative à la fonction zoom pour les images (14) dont les codes temporels sont compris entre les valeurs tcO et tc1.