FR 2852436 A1 20040917 FR 0308830 A 20030718 L'invention concerne un procédé d'affichage d'images avec incrustation et un dispositif générant des images à afficher avec incrustation. Dans les procédés d'affichage d'images, on utilise couramment la 5 technique d'incrustation (ou insertion OSD selon lacronyme anglais pour On-Screen Display) qui permet d'insérer des motifs dans l'image affichée, généralement sur une partie limitée de l'image. Ces motifs apparaissent alors superposés à l'image principale, qui peut être une image fixe ou une séquence vidéo. Dans un appareil générant des images à afficher, tel qu'un téléviseur, un enregistreur vidéo ou un décodeur numérique, une application particulièrement importante de la technique d'incrustation est la génération de menus, et plus généralement l'affichage généré par l'interface utilisateur. Ainsi, afin de. transmettre une information à 15 l'utilisateur (par exemple une information liée au fonctionnement ou au paramétrage de l'appareil), des motifs qui signifient l'information à transmettre sont affichés par incrustation. Une autre application importante dans les dispositifs de télévision est l'affichage de sous-titres. Ces derniers ne sont en effet pas toujours 20 transmis comme partie intégrante de la séquence vidéo, mais peuvent l'être sous forme de données annexes (invisibles dans la séquence vidéo brute, d'o la dénomination anglaise clos.ped caption), qui doivent être spécifiquement décodées en chaîne de caractères pour être éventuellement affichées par incrustation. Le système connu sous le nom de " ANTIOPE " (marque déposée) utilise ce type de technique. Plus récemment, la norme DVB (de l'anglais Digital Video Broadcast) a proposé de compléter la transmission du texte des soustitres par la transmission d'une palette de couleurs (16 ou 32 couleurs). Ceci permet notamment d'afficher des 30 sous-titres de différentes couleurs, chaque couleur correspondant par exemple à un des protagonistes de la scène affichée. En général, les diverses applications (ou processus clients) qui ont recours à l'incrustation utilisent des palettes de couleurs différentes, définies dans chaque application selon ses besoins propres. Par exemple, la palette reçue du diffuseur pour l'affichage des sous-titres ne 5 correspond pas à la palette de l'interface utilisateur de l'appareil récepteur. Le pilote d'incrustation (parfois dénommé driver OSD selon l'appellation de langue anglaise) ne peut gérer quant à lui qu'une seule palette par image. Lorsque deux applications demandent simultanément l'incrustation 10 de motifs, chacune selon sa propre palette, l'une d'elles ne peut être correctement satisfaite puisqu'une des deux palettes ne sera pas prise en compte lors de l'incrustation des motifs dans l'affichage. Précisément, les motifs de l'une des deux applications seront affichés en utilisant la palette de l'autre application, avec un résultat totalement 15 aléatoire, qui pourra entraîner non seulement une modification de l'apparence souhaitée, mais aussi une perte d'informations pour l'utilisateur (motifs invisibles par le rapprochement entre couleur du symbole et couleur du fond; disparition d'une différence de couleur nette entre sous-titres des différents protagonistes). 20 L'invention vise à éviter de tels problèmes. L'invention propose un procédé d'affichage d'images avec incrustation d'un premier motif représenté par des premières données codées selon une première palette de couleurs et d'un second motif représenté par des secondes données codées selon une seconde palette 25 de couleurs, comprenant les étapes suivantes: - conversion des secondes données en troisièmes données selon une table de conversion; - affichage du premier motif par utilisation des premières données et de la première palette de couleurs; - affichage du second motif par utilisation des troisièmes données et de la première palette de couleurs. L'affichage est ainsi amélioré par rapport à la simple utilisation des secondes données avec la première palette. De préférence, le procédé comprend également une étape de définition de la table de conversion à partir de la seconde palette de 5 couleurs. Ainsi, l'affichage du second motif peut être au mieux rapproché de l'affichage souhaité défini dans la seconde palette. Selon une possibilité pratique, la table de conversion associe un indice de la première palette à chaque indice de la seconde palette. Selon un mode de réalisation, l'indice de la première palette 10 représente la couleur de la première palette la plus proche de la couleur représentée par l'indice de la seconde palette, dans un espace de couleurs approprié. Comme expliqué dans la suite, cette solution a l'avantage de pouvoir être mise en oeuvre même si la première palette ne comporte aucun emplacement libre. En général, les premières données sont reçues d'un premier processus et les secondes données sont reçues d'un second processus. Selon un autre mode de réalisation, la table de conversion peut donc associer à chaque indice de la seconde palette un indice de la première palette inutilisé par le premier processus. Par exemple, le premier motif est un motif généré par une interface utilisateur et le second motif est un motif généré par un module de génération de sous-titres. L'invention propose également un dispositif générant un signal représentant des images à afficher avec incrustation d'un premier motif 25 représenté par des premières données codées selon une première palette de couleurs et d'un second motif représenté par des secondes données codées selon une seconde palette de couleurs, comprenant des moyens de conversion des secondes données en troisièmes données selon une table de conversion et des moyens de génération d'un signal 30 représentant les premier et second motifs par utilisation des premières et troisièmes données et de la première palette de couleur. De préférence, le dispositif comprend également des moyens de définition de la table de conversion à partir de la seconde palette de couleurs. D'autres caractéristiques et avantages de l'invention apparaîtront à la lumière de la description détaillée qui suit faite en référence aux figures annexées, dans lesquelles: - la figure 1 représente un décodeur numérique qui utilise l'invention; - la figure 2 représente un exemple de palette de couleurs avec réattribution. La figure 1 représente les principaux éléments d'un décodeur numérique selon une conception possible, pris à titre d'exemple d'un appareil qui peut bénéficier de l'invention. L'invention s'applique 15 naturellement aux décodeurs numériques d'autres conceptions et à des appareils autres que les décodeurs numériques, tels que les enregistreurs numériques et les téléviseurs. Le décodeur numérique de la figure 1 reçoit sur un connecteur d'entrée 2 un ensemble de signaux électriques qui comportent des 20 informations relatives à une pluralités de canaux vidéos, par exemple relatives à l'ensemble des chaînes d'un bouquet. Pour ce faire, le connecteur d'entrée 2 est par exemple branché à une antenne de réception satellite ou à un réseau de distribution (couramment dénommé câble) - non représentés. Les signaux reçus au niveau du connecteur d'entrée 2 attaquent un ensemble tuner - démodulateur 4 qui extrait les signaux relatifs à un seul canal physique (c'est-à-dire les signaux électriques à une fréquence déterminée) et les transmet en bande de base à un démultiplexeur 6. Les signaux en bande de base reçu par le démultiplexeur 6 constituent un ensemble de flux numériques compressés selon la norme MPEG (de l'anglais Moving Picture Expert Group) et multiplexés pour leur transport. Le démultiplexeur 6 extrait un flux MPEG qui correspond en général à la chaîne sélectionnée par l'utilisateur et le transmet à un décodeur 8, ici un décodeur MPEG. Le flux MPEG reçu par le décodeur 8 comprend des données principales relatives à la séquence vidéo (et généralement audio) à reproduire et des données annexes qui comprennent notamment des informations relatives aux sous-titres à afficher par incrustation. À partir du flux MPEG reçu, le décodeur 8 génère donc d'une part 10 un flux vidéo numérique, par exemple du type YCrCb, et d'autre part des signaux de commande SubT pour l'affichage des sous-titres à destination d'un processeur d'incrustation 14. Les signaux de commande SubT qui sont ainsi reçus par le décodeur numérique comprennent la description d'une palette de 15 couleurs (c'està-dire la définition normalisée d'un nombre déterminé de couleurs Ci), la localisation du motif à afficher et la description de ce motif à partir des couleurs de la palette (à chaque pixel (x, y) du motif est associée une couleur Ci de la palette par la donnée de son indice ix, y), telles qu'elles ont été définies par le diffuseur. La description de la palette est par exemple du type Ci = (Ri, Gi, Bi) pour i allant de 0 à 31, avec Ri, Gi, Bi les niveaux (par exemple entre 0 et 65635) respectifs de rouge, vert, bleu de chaque couleur Ci. Le flux vidéo numérique YCrCb est converti en un signal analogique Vidéo correspondant au moyen d'un encodeur vidéo 10. Le signal 25 analogique Video est donc une représentation analogique (par exemple du type CVBS) de la séquence vidéo principale à afficher. En utilisant notamment les informations SubT comme il sera décrit en détail dans la suite, le processeur d'incrustation 14 génère quant à lui un signal vidéo analogique OSD en synchronisme avec le signal 30 Video grâce à une information de synchronisation Sync reçue de l'encodeur vidéo 10, ainsi qu'une information d'incrustation FBI (parfois dénommée fast blanking) qui indique à quel moment, c'est-à-dire à quelle position dans l'affichage, le signal OSD doit remplacer le signal Video. Afin de réaliser l'incrustation, un mélangeur 12 reçoit d'une part le 5 signal Video généré par l'encodeur vidéo 10 et d'autre part le signal OSD généré par le processeur d'incrustation 14. En fonction de l'information d'incrustation FBI qu'il reçoit également, le mélangeur transmet donc à destination d'un connecteur de sortie 20 soit le signal Video, soit le signal OSD. Le signal porté par le connecteur de sortie 20 est donc une représentation analogique de la séquence vidéo principale avec superposition éventuelle des sous-titres. Le décodeur numérique de la figure 1 comprend également un microprocesseur 16 qui gère notamment l'interface utilisateur du 15 décodeur numérique. Le micro-processeur 16 peut donc également émettre des signaux de commande d'affichage UI à destination du processeur d'incrustation 14. Comme précédemment pour l'affichage des sous-titres, les signaux de commande d'affichage uI générés par le micro-processeur 16 pour 20 l'interface utilisateur comprennent - la description d'une palette de couleurs (Pn - la localisation du motif sur l'affichage; - la description de ce motif à partir des couleurs de la palette par la donnée de l'indice nx, y pour chaque pixel (x, y) du motif. Ces données, et notamment la palette de couleurs, ont été définies par le concepteur de l'interface utilisateur et sont stockées dans une mémoire 18 associée au micro-processeur, par exemple du type mémoire flash. La description de la palette de couleurs contient plus précisément 30 les informations suivantes: pour chaque indice n allant par exemple de O à 255, la couleur (Pn est définie par le triplet (Pn, Ynl, fn) des niveaux de rouge, de vert et de bleu qui la composent. Lorsqu'il reçoit une requête d'incrustation d'un motif émanant du système de gestion de l'interface utilisateur (ici le micro-processeur 16), 5 le processeur d'incrustation 14 mémorise la palette p reçue parmi les informations de commande UI. Le processeur d'incrustation 14 balaie alors l'image à afficher pixel par pixel, en synchronisme avec l'encodeur vidéo 10; dès qu'un pixel (x, y) de l'image appartient au motif (conformément aux informations 10 de localisation), le processeur d'incrustation 14 lit l'indice nr, y de la couleur du pixel (au sein de la description du motif) et génère à cet instant un signal vidéo OSD avec la couleur (pnx, y. Le processeur d'incrustation 14 génère ainsi, en utilisant la palette (p, un signal OSD qui comprend, sur une trame vidéo, la 15 représentation du motif d'interface utilisateur à afficher. Lorsqu'il reçoit une requête d'incrustation d'un motif émanant du système de gestion des sous-titres (ici du décodeur 8), le processeur d'incrustation 14 ne mémorise pas la palette de couleurs C relative aux sous-titres afin de ne pas écraser la palette (p relative à l'interface 20 utilisateur. Le processeur d'incrustation 14 utilise toutefois la palette des sous-titres C pour construire une table de conversion T afin d'établir un lien entre les deux palettes. Selon une première possibilité, la table de conversion T permet de définir pour chaque couleur Ci de la palette des sous-titres la couleur (qn 25 la plus proche dans la palette de l'interface utilisateur. On peut par exemple définir la distance entre deux couleurs Ci et Pn comme la distance quadratique dans l'espace RGB, à savoir d2(Ci, (Pn) = (Pn Ri)2+(yn - Gi)2+(n3n - B1)2 Chaque élément T[i] de la table de conversion T (i allant de O à 31) 30 est donc défini comme la valeur de n (entre O et 255) qui minimise la distance d(Ci, (Pn). À réception de la description du motif à afficher générée par le gestionnaire de sous-titre (parmi les données SubT), l'information de couleur (c'est-à-dire d'indice dans la palette) ix,y relative à chaque pixel est convertie en utilisant la table de conversion T, afin de pouvoir 5 utiliser la palette de l'interface utilisateur (p pour l'affichage des soustitres. Pour chaque pixel, l'indice à utiliser pour afficher les sous-titres avec la palette de couleurs (p est ainsi: mx, y = T[ix, y]. On crée ainsi un nouveau descriptif mx, y du motif des sous-titres 10 dans la palette (p de l'interface utilisateur. Lors du balayage de l'affichage par le processeur d'incrustation 14, pour chaque pixel (x, y) du motif des sous-titres, le processeur d'incrustation 14 génère en sortie un signal vidéo OSD avec la couleur qpmx, y (qui est donc par construction proche de la couleur Cix, y). Le processeur d'incrustation 14 utilise donc également la palette qp pour afficher les sous-titres. Grâce à l'utilisation de la table T, les couleurs des sous-titres seront proches de celles souhaitées par le diffuseur et définies par la palette C. Ainsi, on peut afficher en même temps les motifs de l'interface 20 utilisateur et ceux des sous-titres en respectant pour l'essentiel les couleurs prévues pour leur affichage. On peut remarquer que la solution proposée ci-dessus permet d'afficher les motifs de sous-titre dans une couleur proche de la couleur souhaitée, même si la palette (p de l'interface utilisateur ne comporte 25 aucun emplacement libre (i.e. même si les indices n de couleur de 0 à 255 sont tous utilisés par l'interface utilisateur). Selon une seconde possibilité, les données relatives à chaque couleur C[i] sont stockées dans un emplacement d'indice N inutilisé de la palette (p de l'interface utilisateur et l'élément T[i] correspondant 30 dans la table de conversion prend donc la valeur N. Les emplacements inutilisés dans la palette cp peuvent être soit obtenus auprès du concepteur de l'interface utilisateur, soit retrouvés par le listage de l'ensemble des couleurs de la palette utilisées lors de l'affichage des menus et autres motifs de l'interface utilisateur 5 (utilisation d'un programme de test par l'implémentation d'un espion au niveau du pilote d'incrustation qui détermine l'ensemble des emplacements de la palette jamais utilisés pour l'affichage de l'interface utilisateur). Un exemple de l'utilisation de cette seconde possibilité est montré 10 en figure 2 pour une palette C de 16 couleurs C1 à C16. Le tableau de la figure 2 représente la palette (p de l'interface utilisateur, chaque cellule du tableau correspondant à une couleur (On repérée par l'octet de poids fort (MSB) de l'indice n en ligne et l'octet de poids faible (LSB) de l'indice n en colonne (en hexadécimal). Les cellules cochées par la lettre X indiquent que la couleur correspondante est utilisée par l'interface utilisateur. À réception de la palette C, le processeur d'incrustation 14 (ou pilote d'incrustation dans d'autres modes de réalisation) sauvegarde les données relatives aux couleurs C1 à C16 dans les cellules non utilisées et définit la table de 20 conversion T comme expliqué ci-dessus. Dans le cas de la figure 2, on a par exemple T[1] = 21 (en hexadécimal, soit 33 en décimal) et T[15] = 6C (en hexadécimal, soit 108 en décimal). On ré-attribue ainsi un indice dans la palette (p à chaque couleur Ci 25 de la palette des sous-titres. Comme pour la première solution décrite plus haut, à réception de la description du motif à afficher générée par le gestionnaire de soustitre (parmi les données SubT), l'information de couleur (c'est-à-dire d'indice dans la palette) ix, y relative à chaque pixel est convertie en 30 utilisant la table de conversion T, afin de pouvoir utiliser la palette de l'interface utilisateur (p pour l'affichage des sous-titres. Pour chaque pixel (x, y), l'indice à utiliser pour afficher les soustitres avec la palette de couleurs cp est ainsi: mx, y = T[ix, y]. On crée ainsi un nouveau descriptif mx, y du motif des sous-titres dans la palette (p de l'interface utilisateur. Lors du balayage de l'affichage par le processeur d'incrustation 14, pour chaque pixel (x, y) du motif des sous-titres, le processeur d'incrustation 14 génère en sortie un signal vidéo OSD avec la couleur cpmx, y (qui est donc par construction la couleur Cix, y). Le processeur d'incrustation 14 utilise donc également la palette cp 10 pour afficher les sous-titres. Ainsi, on peut afficher en même temps les motifs de l'interface utilisateur et ceux des sous-titres en respectant les couleurs prévues pour leur affichage. Selon une variante avantageuse de réalisation de la solution qui vient d'être décrite, les motifs de l'interface utilisateur peuvent être 15 conçus de telle sorte qu'ils occupent des emplacement connexes dans la palette (p, par exemple les couleurs (Pn d'indice n allant de 0 à 200. À réception de la palette C des sous-titres, les données relatives aux couleurs (par exemple C1 à C16) seront alors stockées dans les emplacements laissés libres, qui forme également une zone connexe, 20 par exemple en tant que couleurs P201 à P216. La table de conversion est alors déterminée par une formule très simple, généralement du type T[i] = E + i, o E est un entier, ici E = 200. Comme déjà indiqué ci-dessus, l'architecture donnée à titre 25 d'exemple n'est en aucun cas limitative. Par exemple, au lieu de réaliser l'incrustation au niveau des signaux analogiques (voir signaux Video et OSD ci-dessus), l'incrustation peut être réalisée par la lecture dans différents zones mémoires (plans Vidéo et OSD). De même, le processeur d'incrustation peut être réalisé sous la forme logicielle d'un 30 pilote d'incrustation. il De même, la solution décrite n'est qu'un mode de réalisation possible de l'invention. D'autres mises en oeuvre sont naturellement envisageables. On pourrait par exemple utiliser la palette des soustitres comme palette commune aux sous-titres et à l'interface utilisateur. De façon similaire, la description ci-dessus propose que l'étape de conversion des indices i dans la palette C en indices m dans la palette (p au moyen de la table T soit préalable à l'affichage avec création d'un nouveau descriptif; cette conversion peut naturellement être réalisée 10 lors de l'affichage sans création préalable d'un nouveau descriptif (c'està-dire par l'utilisation de la couleur (PT[ix,y] à la lecture de l'indice ix, y lors du balayage de l'affichage par le processeur d'incrustation). REVENDICATIONS 1. Procédé d'affichage d'images avec incrustation d'un premier motif 5 représenté par des premières données (UI) codées selon une première palette de couleurs (p) et d'un second motif représenté par des secondes données (SubT) codées selon une seconde palette de couleurs (C), comprenant les étapes suivantes: - conversion des secondes données en troisièmes données selon une 10 table de conversion (T); - affichage du premier motif par utilisation des premières données et de la première palette de couleurs ((p); - affichage du second motif par utilisation des troisièmes données et de la première palette de couleurs (cp). 2. Procédé selon la revendication 1, comprenant l'étape de - définition de la table de conversion (T) à partir de la seconde palette de couleurs (C). 3. Procédé selon la revendication 1 ou 2, dans lequel la table de conversion associe un indice (n) de la première palette (p) à chaque indice (i) de la seconde palette (C). 4. Procédé selon la revendication 3, dans lequel l'indice (n) de la 25 première palette (p) représente la couleur ((n) de la première palette (p) la plus proche de la couleur (Ci) représentée par l'indice (i) de la seconde palette (C). 5. Procédé selon la revendication 1 ou 2, dans lequel les premières 30 données sont reçues d'un premier processus (16) et dans lequel les secondes données sont reçues d'un second processus (8). 6. Procédé selon la revendication 5, dans lequel la table de conversion (T) associe à chaque indice (i) de la seconde palette (C) un indice (n) de la première palette (p) inutilisé par le premier processus (16). 7. Procédé selon l'une des revendications 1 à 6, dans lequel le premier motif est un motif généré par une interface utilisateur (16). 8. Procédé selon l'une des revendications 1 à 7, dans lequel le second 10 motif est un motif généré par un module de génération de sous-titres (8). 9. Dispositif générant un signal représentant des images à afficher avec incrustation d'un premier motif représenté par des premières données 15 (UI) codées selon une première palette de couleurs @p) et d'un second motif (SubT) représenté par des secondes données codées selon une seconde palette de couleurs (C), comprenant: - des moyens de conversion des secondes données en troisièmes données selon une table de conversion (T); - des moyens de génération (14) d'un signal (OSD) représentant les premier et second motifs par utilisation des premières et troisièmes données et de la première palette de couleur (p). 10. Dispositif selon la revendication 9, comprenant des moyens de 25 définition de la table de conversion (T) à partir de la seconde palette de couleurs (C).