Brevet FR2877482A1 — publié le 20060505

-1- PROCEDE D'INCRUSTATION D'UNE SEQUENCE D'IMAGES VIDEO DE FORME QUELCONQUE SUR UNE INTERFACE D'AFFICHAGE D'ORDINATEUR A FENETRES. La présente invention concerne la superposition d'images vidéo sur un écran d'affichage d'ordinateur. Elle s'applique notamment, mais non exclusivement à la restitution d'une 10 séquence d'images vidéo sur une interface d'affichage d'ordinateur à fenêtres. Les principaux systèmes d'exploitation actuels gèrent une interface graphique d'affichage à fenêtres, chaque fenêtre généralement de forme rectangulaire, permettant à un programme applicatif respectif exécuté par l'ordinateur de recevoir des commandes et d'afficher les résultats de ces commandes. Lorsqu'un programme applicatif affiche une séquence vidéo dans un environnement à fenêtres traditionnel, les images affichées présentent une forme rectangulaire et sont présentées dans une fenêtre rectangulaire. Lorsque la séquence vidéo représente un ou plusieurs personnages animés, il est souhaitable de retirer l'arrière-plan de cette séquence pour n'afficher que les personnages, dans une fenêtre dont la forme épouse celle des personnages. Ainsi, le système d'exploitation Windows 95 de Microsoft prévoit une fonction d'interface de programmation "SetWindowRgn" permettant d'afficher une fenêtre non rectangulaire. Si la fenêtre change fréquemment de forme et/ou de position sur l'écran, le système d'exploitation doit restituer en temps réel l'arrière plan de l'affichage qui n'est plus recouvert par la fenêtre non rectangulaire. Un tel traitement s'avère très coûteux en ressources de calcul et de mémoire. Pour résoudre ce problème, les systèmes d'exploitation Windows NT, 2000 et XP présentent en outre des fonctions d'affichage de fenêtre par couche. Ainsi les fonctions "SetLayeredWindowAttributes" et "UpdateLayeredWindow" permettent de définir une couleur de transparence, les pixels des images affichées ayant cette couleur n'étant pas affichés, laissant apparaître l'image affichée en arrière-plan qui peut inclure plusieurs fenêtres. La demande de brevet US 2004/0109014 décrit un procédé qui exploite ces 2877482 -2- fonctions, en calculant pour chaque image d'une séquence vidéo, les zones de l'image qui doivent être transparentes, sur la base d'une couleur de transparence et d'un seuil de tolérance. Pour chaque pixel de chaque image, le procédé calcule dans l'espace à trois dimensions des couleurs une "distance" du pixel par rapport à la couleur de transparence et si cette distance est inférieure au seuil de tolérance, le pixel est transparent. Comme chaque image présente une forme et une position dans l'image qui peut être différente de celles de l'image précédente, il est nécessaire d'effacer l'image précédente en affichant l'image d'arrière- plan à la place de l'image précédente. Pour effectuer cette opération, le procédé décrit dans ce document exploite la fonction de rafraîchissement de l'affichage du système d'exploitation. Or, la fonction de rafraîchissement prévue par les systèmes d'exploitation actuels n'est pas conçue pour afficher des séquences vidéo en dehors de fenêtres classiques, et n'est pas du tout conçue pour être exécutée à la cadence de 25 images par seconde qui est la vitesse au delà de laquelle l'oeil humain ne distingue plus les images affichées (affichage saccadé) et donc ne perçoit plus qu'une image animée avec fluidité. Il en résulte que le procédé décrit dans ce document ne permet pas d'afficher des images animées avec une fluidité suffisante. La présente invention a pour but de supprimer cet inconvénient. Cet objectif est atteint par la prévision d'un procédé d'incrustation d'un objet animé apparaissant dans une séquence vidéo, sur un écran d'affichage d'ordinateur, la séquence vidéo comportant une séquence d'images, comprenant pour chaque image à afficher de la séquence vidéo des étapes de: définition d'une fenêtre d'affichage dont la forme est définie en fonction de contours de l'objet à incruster figurant dans l'image, insertion de l'image dans la fenêtre d'affichage, affichage de la fenêtre d'affichage sur une image d'arrière-plan affichée par 30 l'écran d'ordinateur. Selon l'invention, la fenêtre d'affichage définie pour chaque affichage d'une image épouse les contours de l'objet dans l'image à afficher et dans l'image affichée de la séquence vidéo, le procédé comprend en outre des étapes de: capture d'une zone d'image d'arrière-plan où est affichée la fenêtre d'affichage, et insertion dans les parties de la fenêtre d'affichage non occupées par l'objet 2877482 -3- de la zone d'image d'arrière-plan capturée correspondante pour effacer l'image affichée. Selon un mode de réalisation préféré de l'invention, les images de la séquence vidéo sont obtenues à partir d'une séquence vidéo d'origine en extrayant de chacune des images de la séquence vidéo d'origine une zone d'image rectangulaire la plus petite possible incluant l'objet à incruster, chaque image de la séquence vidéo regroupant la zone d'image extraite et la position de la zone d'image extraite dans l'image d'origine. Selon un mode de réalisation préféré de l'invention, l'ordre dans lequel sont affichées les images de la séquence vidéo est défini dans un script associé à la séquence vidéo. Selon un mode de réalisation préféré de l'invention, la cadence des images dans la séquence vidéo est supérieure ou égale à 25 images par seconde pour obtenir une animation fluide de l'objet incrusté. Selon un mode de réalisation préféré de l'invention, la séquence vidéo comporte 20 une séquence audio qui est restituée en synchronisme avec l'affichage des images de la séquence vidéo. Selon un mode de réalisation préféré de l'invention, la balance de restitution audio entre plusieurs hauts-parleurs de l'ordinateur est ajustée en fonction de la 25 position de l'objet incrusté sur l'écran d'affichage. Selon un mode de réalisation préféré de l'invention, un traitement de suppression de crénelage est appliqué aux contours de l'objet, préalablement à l'affichage de la fenêtre d'affichage de l'objet à incruster. Selon un mode de réalisation préféré de l'invention, si l'image d'arrièreplan est modifiée à proximité de la fenêtre d'affichage, l'affichage de la fenêtre est bloqué temporairement pour capturer la zone d'image d'arrière-plan située à l'emplacement de la fenêtre, et une commande de rafraîchissement d'affichage est envoyée à d'autres applications en cours d'exécution par l'ordinateur. Selon un mode de réalisation préféré de l'invention, l'image d'arrièreplan est capturée périodiquement pour détecter un changement. 2877482 4 Avantageusement, seule la zone de l'image d'arrière-plan dans laquelle l'objet est susceptible d'être incrusté est capturée pour détecter un changement. Un mode de réalisation préféré de l'invention sera décrit ci-après, à titre d'exemple non limitatif, avec référence aux dessins annexés dans lesquels: La figure 1 représente schématiquement un dispositif selon l'invention; La figure 2 représente schématiquement un écran d'ordinateur affichant des fenêtres ainsi qu'un personnage animé à l'aide du dispositif montré sur la figure 1; La figure 3 illustre sous la forme d'un organigramme une procédure de prétraitement d'une séquence vidéo selon 15 l'invention; Les figures 4 et 5 illustrent sous la forme d'organigrammes des procédures d'affichage exécutées par le dispositif représenté sur la figure 1. La figure 1 représente un dispositif 1 selon l'invention d'incrustation d'images vidéo sur un écran d'ordinateur, les images vidéo provenant d'une séquence vidéo de préférence incluant une séquence audio qui est synchronisée avec la séquence d'images. Avantageusement, la séquence vidéo présente une définition suffisante et comprend au moins 25 images par secondes pour que l'animation produite par l'affichage de la séquence vidéo soit fluide et sans à- coups. Le dispositif 1 est conçu pour traiter un fichier de séquence vidéo 2 incluant une séquence d'images et une séquence audio compressée synchrone de la séquence vidéo, celles-ci étant éventuellement compressées, et un script définissant la manière de restituer les séquences audio et vidéo. Le dispositif 1 comprend quatre modules 11, à 14 de traitement qui fonctionnent d'une manière asynchrone, à savoir, un module 11 qui assure la décompression des images et de la séquence audio associée à la séquence d'images dans la séquence vidéo et l'exécution du script, un module 12 qui effectue les traitements nécessaires à 2877482 -5- l'affichage d'une image de la séquence vidéo, un module 13 qui effectue la restitution de la séquence audio, et un module 14 qui analyse la zone d'image d'arrière-plan 4 affichée à l'écran, qui est susceptible d'être recouverte par les images affichées par le module d'affichage 12. Le module de décompression I 1 décompresse la séquence audio figurant dans le fichier de séquence vidéo 2 et stocke le résultat de la décompression dans un fichier audio 16. Il lit également le script dans ce fichier pour déterminer l'image suivante à afficher, décompresse cette image, mémorise le résultat de cette décompression dans une zone mémoire image temporaire 15, et commande le module d'affichage 12 pour qu'il affiche l'image située dans la zone mémoire image 15. Il commande également le module de restitution sonore 13 pour qu'il restitue le fichier audio 16 en synchronisme avec l'affichage des images. Le module 11 gère également une base de temps de cadencement par exemple à 25 images par seconde pour cadencer l'affichage des images de la séquence vidéo, la restitution de la séquence audio étant synchronisée sur ce cadencement. Le module d'affichage 12 traite l'image à afficher pour l'adapter à la résolution de l'écran d'affichage, compte tenu de la taille de l'image, détermine la position de l'écran où l'image doit être affichée et commande au système d'exploitation de l'ordinateur l'affichage de l'image dans une fenêtre dont la forme épouse celle du personnage de l'image. Le module 14 est conçu pour effectuer périodiquement une capture de la zone d'écran où sont affichées les images de la séquence vidéo et pour analyser l'image capturée pour déterminer si elle a été modifiée par rapport à une image d'arrière-plan 17 de zone d'écran préalablement capturée. Si cette zone a été modifiée, le module 14 met à jour l'image 17 et commande le rafraîchissement de l'écran. Le dispositif d'affichage représenté sur la figure 1 permet d'afficher un objet 41 animé, détouré (un personnage dans l'exemple de la figure 2), constitué par exemple d'un ou plusieurs personnages, en incrustation sur un écran d'ordinateur pouvant afficher plusieurs fenêtres 42, 43, et par exemple une barre de tâches 44. Le personnage 41 est par exemple animé comme s'il marchait sur la barre de tâches et en synchronisme avec une séquence audio reproduisant par exemple les sons produits par le personnage (voix et rebondissements du ballon). Pour pouvoir être traitée par le dispositif 1, une séquence vidéo 6 doit subir un prétraitement tel qu'illustré par la figure 3. Cette séquence vidéo est obtenue en filmant dans un champ fixe (sans mouvement de caméra, et sans modification du facteur de zoom) un ou plusieurs personnages sur un fond de préférence de couleur uniforme. La cadence des images dans la séquence est avantageusement choisie au moins égale à 25 images par seconde pour obtenir une animation fluide. Cette procédure comprend une première étape 21 d'extraction et de compression de la séquence audio entrelacée avec la séquence d'images dans la séquence vidéo 6. Aux étapes 22 à 26 suivantes, toutes les images de la séquence vidéo 6 sont successivement lues et traitées. On choisit préalablement un référentiel comportant un axe vertical et un axe horizontal permettant de définir la position du personnage dans le champ des images. Si le personnage est débout, l'axe horizontal peut être choisi passant le plus proche possible des deux pieds du personnage. L'axe vertical peut par exemple être choisi parmi les bords verticaux des images. A l'étape 23, on extrait de l'image une zone rectangulaire la plus petite possible contenant le personnage (et quelques pixels autour du personnage) et on mémorise en association avec l'image extraite la position de celle-ci par rapport au référentiel. A l'étape 24, on détoure le personnage dans l'image extraite, en plaçant tous les pixels de l'image extraite correspondant au fond de l'image à une valeur de transparence totale. A l'étape 26 suivante, l'image extraite est compressée. Avant ou après le traitement des images de la séquence vidéo 6, on définit un script d'affichage (étape 27) qui détermine notamment l'ordre d'affichage des images, leur cadence d'affichage, à partir de quelle image la séquence audio doit être restituée, et éventuellement le volume de restitution du son qui peut varier durant la restitution de la séquence audio. Enfin, à l'étape 28, le fichier de séquence vidéo 2 est généré en regroupant la séquence audio compressée, les images extraites et compressées, associées à leur position dans le référentiel, et le script. Comme la taille de chacune des images de la séquence est ajustée à la taille de l'objet (personnage) à afficher, la taille du fichier 2 et la bande passante nécessaire pour restituer la séquence vidéo sont réduites au minimum. La figure 4 illustre une procédure de traitement par le module de décompression 11 de la séquence vidéo 2 obtenue. Cette procédure comprend une première étape 31 de décompression de la séquence audio figurant dans le fichier de 2877482 -7- séquence vidéo 2, pour obtenir une séquence audio 16 susceptible d'être restituée par une carte son 5 d'ordinateur personnel. A l'étape suivante 32, le module 11 lit le script figurant dans le fichier 2, détermine à partir du script l'image à afficher (étape 33), et décompresse à l'étape 34 l'image ainsi déterminée qu'il mémorise dans la mémoire image temporaire 15. Parallèlement, le module 11 déclenche à la cadence définie par le script l'affichage de l'image stockée dans la mémoire temporaire 15, en envoyant à l'étape 35 une commande à cet effet au module d'affichage 12. En fonction du script, le module 11 peut également commander au module de restitution audio 13, la restitution de la séquence audio 16. Les étapes 32 à 35 sont répétées à l'étape 36 pour afficher l'image suivante, tant qu'une commande d'arrêt de la restitution de la séquence vidéo n'a pas été envoyée au dispositif 1, par exemple par l'utilisateur au moyen d'un clic de souris sur l'image. La figure 5 illustre la procédure 50 d'affichage d'une image exécutée par le module d'affichage d'image 12. Cette procédure est déclenchée par le module de décompression 1l à l'étape 35. A la première étape 51 de cette procédure, le module 12 calcule les dimensions de l'image à afficher compte tenu des caractéristiques (résolution) de l'écran d'affichage de l'ordinateur, des caractéristiques de l'image à afficher et de paramètres prédéfinis par l'utilisateur. Si le nombre de pixels en ligne et en colonne de l'image à afficher ne correspondent pas à celles de la zone d'affichage, le module 12 procède à des calculs d'interpolation pour déterminer chacun des pixels de l'image à afficher pour dilater ou réduire l'image à afficher 15. Le module 12 détermine également la position de l'image sur l'écran de l'ordinateur, en fonction du référentiel de la séquence d'images, de la position de ce référentiel sur l'écran d'affichage, de la position de l'image dans ce référentiel, associée à l'image, et des paramètres prédéfinis par l'utilisateur. Par exemple, l'utilisateur a la possibilité de retourner les images par effet de miroir. Dans ce cas, le référentiel de la séquence vidéo est également inversé entre la gauche et la droite de l'écran d'affichage. A l'étape suivante 52, l'image subit un traitement de suppression du crénelage (anti-aliasing) au niveau de ses contours. Pour définir ce traitement, la séquence d'images est associée à une profondeur en nombre de pixels pour chacune des quatre directions gauche-droite, droite-gauche, haut-bas et bas-haut, le long de laquelle les pixels de l'image doivent présenter une transparence croissante en allant de l'intérieur de l'image vers l'extérieur. Les paramètres ajustables par l'utilisateur peuvent également comprendre un coefficient de transparence affecté à toutes les images de la séquence. 2877482 8 A l'étape suivante 53, le module d'affichage 12 génère une fenêtre ayant une forme délimitée en cumulant les contours des zones de pixels non totalement transparentes de l'image à afficher, c'est-à-dire les contours du personnage de l'image, et les contours des zones de pixels non totalement transparentes de l'image affichée. Une telle définition de fenêtre peut être effectuée par la juxtaposition de fenêtres rectangulaires d'un pixel de hauteur. A l'étape suivante 54, le module 12 remplit la fenêtre en utilisant les pixels de l'image à afficher, calculés aux étapes 51 et 52, les pixels de l'image d'arrière- plan, pour définir la valeur des pixels de la fenêtre (occupés par l'image précédente) qui ne sont pas occupés par l'image à afficher, et les pixels situés sur les contours de l'image à afficher (anti-aliasing), en tenant compte du coefficient de transparence affecté à chaque pixel de l'image à afficher. Si l'image à afficher est affectée d'un coefficient de transparence supérieur à 0 (non totalement opaque), l'image d'arrière- plan est également utilisée pour déterminer la valeur des pixels de l'image à afficher. Une fois que la fenêtre est remplie, le module 12 déclenche l'affichage de la fenêtre à la position sur l'écran déterminée à l'étape 51. Du fait que la fenêtre d'affichage inclut la forme de l'image précédente et de l'image à afficher, on est assuré que l'image précédente est totalement effacée par l'affichage de la nouvelle image, et ce que quelle que soit la cadence d'affichage des images de la séquence vidéo. Sur ordre du module de décompression 11, le module de restitution audio 13 envoie la séquence audio à la carte son 5 et commande la balance (niveau d'amplification relatif des deux haut-parleurs de l'ordinateur) en fonction de la position horizontale sur l'écran de l'image affichée. Sur ordre du module de décompression 1l, il peut également commander l'arrêt de la restitution du son, par exemple progressivement. Pour disposer d'une image d'arrière plan toujours à jour, le module 14 d'analyse de l'image d'arrière-plan effectue périodiquement une capture d'écran avantageusement limitée à la zone d'affichage de la séquence vidéo englobant les zones rectangulaires d'affichage de toutes les images de la séquence vidéo, en excluant les pixels non totalement transparents de l'image à afficher. Avantageusement, cette capture est effectuée en plusieurs fois, par exemple 10% de la zone d' arrière-plan étant capturée à chaque affichage 2877482 -9- d'image. Si la zone d'arrière-plan capturée (excluant la silhouette du personnage) présente, par rapport à l'image capturée précédente une différence supérieure à un seuil prédéfini, par exemple 10% en nombre de pixels différents, le module 14 bloque temporairement l'affichage de la prochaine image pour capturer la zone d'image d'arrière-plan située à l'emplacement de la fenêtre, et commande le rafraîchissement des fenêtres d'autres applications éventuellement actives sur l'ordinateur, et de préférence uniquement les fenêtres présentant une partie située dans la zone d'affichage de la séquence vidéo. Le dispositif d'incrustation 1 décrit est avantageusement conçu pour être restituer simultanément plusieurs séquences vidéo. Dans ce cas, seule la séquence audio de la dernière séquence vidéo activée est restituée, et les images de cette séquence vidéo sont affichées au premier plan, éventuellement sur les images des autres séquences vidéo actives. A cet effet, la zone d'arrière-plan 17 mémorisée pour chaque séquence vidéo en cours de restitution est stockée dans une zone mémoire partagée accessible à tous les programmes d'affichage en cours d'exécution. É 2877482 - 10-REVENDICATIONS 1. Procédé d'incrustation sur un écran d'affichage d'ordinateur (40), d'un objet animé (41) apparaissant dans une séquence vidéo comportant une séquence d'images, le procédé comprenant pour chaque image à afficher de la séquence vidéo des étapes de: définition (53) d'une fenêtre d'affichage dont la forme est définie en fonction de contours de l'objet à incruster figurant dans l'image, insertion (54) de l'image dans la fenêtre d'affichage, affichage (54) de la fenêtre d'affichage sur une image d'arrière-plan affichée par l'écran d'ordinateur, caractérisé en ce que la fenêtre d'affichage définie pour chaque affichage d'une image épouse les contours de l'objet dans l'image à afficher et dans l'image affichée de la séquence vidéo, le procédé comprend en outre des étapes de: capture d'une zone d'image d'arrière-plan (17) où est affichée la fenêtre d'affichage, et insertion (54) dans les parties de la fenêtre d'affichage non occupées par l'objet de la zone d'image d'arrière-plan capturée correspondante pour effacer l'image affichée. 2. Procédé selon la revendication 1, caractérisé en ce que les images de la séquence vidéo sont obtenues à partir d'une séquence vidéo d'origine en extrayant (23) de chacune des images de la séquence vidéo d'origine une zone d'image rectangulaire la plus petite possible incluant l'objet à incruster, chaque image de la séquence vidéo regroupant la zone d'image extraite et la position de la zone d'image extraite dans l'image d'origine. 3. Procédé selon la revendication 1 ou 2, 30 caractérisé en ce que l'ordre dans lequel sont affichées les images de la séquence vidéo est défini dans un script associé à la séquence vidéo. 4. Procédé selon l'une des revendications 1 à 3, caractérisé en ce que la cadence des images dans la séquence vidéo est 35 supérieure ou égale à 25 images par seconde pour obtenir une animation fluide de l'objet incrusté. 5. Procédé selon l'une des revendications 1 à 4, 2877482 -11- caractérisé en ce que la séquence vidéo comporte une séquence audio qui est restituée en synchronisme avec l'affichage des images de la séquence vidéo. 6. Procédé selon la revendication 5, caractérisé en ce que la balance de restitution audio entre plusieurs hauts-parleurs de l'ordinateur est ajustée en fonction de la position de l'objet incrusté sur l'écran d'affichage. 7. Procédé selon l'une des revendications 1 à 6, caractérisé en ce que préalablement à l'affichage de la fenêtre d'affichage de l'objet à incruster, un traitement (52) de suppression de crénelage est appliqué aux contours de l'objet. 8. Procédé selon l'une des revendications 1 à 7, caractérisé en ce que si l'image d'arrière-plan est modifiée à proximité de la fenêtre d'affichage, l'affichage de la fenêtre est bloqué temporairement pour capturer la zone d'image d'arrière-plan située à l'emplacement de la fenêtre, et une commande de rafraîchissement d'affichage est envoyée à d'autres applications en cours d'exécution par l'ordinateur. 9. Procédé selon l'une des revendications 1 à 8, caractérisé en ce que l'image d'arrière-plan est capturée périodiquement pour détecter un changement. 10. Procédé selon la revendication 9, caractérisé en ce que seule la zone de l'image d'arrière-plan dans laquelle l'objet est susceptible d'être incrusté est capturée pour détecter un changement.