Brevet FR2849323A1 — publié le 20040625

ARCHITECTURE DE TRAITEMENT D'IMAGES INTERAGISSANTES EN TEMPS REEL La présente invention se rapporte au domaine du 5 traitement de données vidéo en temps réel La présente invention se rapporte plus particulièrement aux traitements de données analogiques ou numériques provenant de plusieurs sources et traitées ensemble, en temps réel afin d'établir des interactions entre lesdites sources. 10 Les sources de ces flux vidéos peuvent provenir de supports analogiques (caméras, magnétoscopes etc) ou virtuelles (ordinateurs proches ou distants) Les données d'entrées analogiques sont constituées d'un signal vidéo ayant reçu éventuellement un pré-traitement et le système 15 fournit des données de sortie analogiques également. Cependant, les traitements des signaux se font de manière numérique. Le problème technique que l'invention se propose de résoudre est de pouvoir appliquer des 20 traitements différents aisément sur des signaux vidéo analogiques, o chaque traitement est un traitement en temps réel. L'art antérieur connaît déjà par le brevet américain US 5 857 109 une architecture similaire à celle de l'invention, mais qui ne propose pas de moyen de traitement des résultats des calculs sur les flux vidéo entrants pour modifier l'affichage et exploiter 30 l'interaction entre les différents flux Dans un système de traitement vidéo, un dispositif logique programmable est ajouté entre un tampon d'image classique et un convertisseur numérique-analogique classique afin de fournir la puissance de traitement hors-écran en temps 35 réel requise pour améliorer les capacités de sortie vidéo. Le système peut comprendre un historique premier entré premier sorti connecté de manière à fournir la ligne précédente au dispositif logique programmable, ce qui permet d'effectuer des opérations sur une ligne présente, 5 modifiée selon les besoins par l'état du pixel vertical immédiatement adjacent Le système peut également comprendre des entrées de sources vidéo multiples, ainsi que des systèmes d'entrée premier entré premier sorti qui assurent davantage d'accès aléatoires à des parties du 10 flux d'entrée Dans un autre mode de réalisation, le système comprend un commutateur à barres croisées et des dispositifs de mémoire multiples qui permettent la commutation parmi différents dispositifs tampons d'images possibles Une ou plusieurs unités de traitement peuvent 15 être ajoutées pour manipuler une mémoire qui n'est pas le tampon d'images actif L'unité de traitement peut comprendre un dispositif logique programmable, ainsi que des dispositifs de programmation du dispositif logique programmable. La présente invention entend remédier aux inconvénients de l'art antérieur en proposant des solutions programmables de traitement de données vidéo analogiques en temps réel combinant une architecture 25 matérielle de traitement de données avec une solution logicielle Cette solution permet de traiter rapidement les données grâce à un traitement matériel facilement personnalisable par programmation sur site, celui-ci étant suivi d'un traitement logiciel facilement adaptable La 30 partie matérielle traite les flux au niveau du signal et peut travailler simultanément sur l'ensemble des variables A cet effet, l'invention concerne dans son acception la plus générale une architecture de traitement de flux vidéos comprenant: une pluralité d'entrées, chaque entrée étant 5 reliée à une source vidéo analogique ou numérique et o toutes les sources vidéo ont le même format d'image; une pluralité de convertisseurs, chaque convertisseur transformant une trame d'une source vidéo analogique en un ensemble de pixels constituant une trame 10 vidéo numérique, chaque convertisseur étant connecté à une desdites entrées; un ensemble logique réalisant des calculs sur lesdits pixels, ledit ensemble logique produisant des données de sortie à la fin visible de la trame ou de 15 l'image courante; un moyen de traitement des données de sortie permettant l'affichage d'un flux vidéo; caractérisée en ce que ledit ensemble logique: est composé d'au moins une unité logique; est relié en entrée aux dits convertisseurs et prend en entrée un pixel de chaque source et l'ensemble des variables de commande qui interviennent dans l'application; met en oeuvre au moins une fonction portant 25 sur l'ensemble des variables vidéo représentant un pixel de chacune des images et des variables de commande; est relié à au moins une mémoire, chaque mémoire contenant au moins un résultat du traitement de toute la trame vidéo numérique par une desdites fonctions; 30 toutes lesdites mémoires étant reliées à un moyen de calcul qui en fonction des résultats desdites fonctions contenues dans les dites mémoires, calcule les informations permettant de composer la trame suivante des vidéos de sortie. Selon une première variante, ledit ensemble logique est composé d'unités logiques configurables ou programmables et l'architecture comprend en outre une interface entre ledit ensemble logique et l'utilisateur pour permettre à celui-ci de configurer ledit ensemble. Selon une autre variante, ledit ensemble logique est composé d'unités logiques non-reconfigurables lASICl. Avantageusement, l'architecture comporte une 10 étape d'affichage desdits flux vidéo générés et de fourniture d'au moins un desdits flux vidéo générés aux dits convertisseurs. L'invention concerne également un procédé de traitement d'images vidéo dans une architecture 15 précédemment décrite caractérisé en ce qu'il est composé de: une étape de fourniture d'une pluralité de signaux vidéo analogiques aux dits convertisseurs; pour chaque signal vidéo fourni, une étape de 20 conversion d'une trame vidéo analogique en un ensemble de pixels par un desdits convertisseurs; une étape d'envoi desdits ensembles de pixels des convertisseurs vers ledit ensemble logique, lesdits ensembles de pixels étant envoyés pixel par pixel, de telle 25 sorte que ledit ensemble logique reçoive un pixel d'entrée de chaque convertisseur simultanément, quelque soit le nombre d'entrées vidéo; une étape d'application de fonctions logiques implantées dans ledit ensemble logique aux dits pixels 30 d'entrée; pour chaque fonction logique, une étape de stockage du résultat de ladite fonction logique des opérations sur une valeur stockée dans une desdites mémoires; consécutivement à la fin du traitement des signaux vidéo d'entrée par répétition des étapes d'application de fonctions logiques et de stockage du résultat pour tous les pixels desdits ensembles de pixels, 5 une étape de lecture des valeurs stockées dans lesdites mémoires spécifiques par un moyen logiciel; une étape de traitement par un moyen logiciel desdites valeurs et de génération d'informations permettant de créer au moins un flux vidéo réalisé en fonction du 10 résultat dudit traitement et d'au moins un desdits signaux vidéo d'entrée. On comprendra mieux la présente invention à l'aide de la description, faite ci-après à titre purement 15 explicatif, d'un mode de réalisation de l'invention, en référence aux figures annexées: la figure 1 illustre un exemple d'architecture du dispositif selon l'invention; dans cet exemple, l'architecture utilise quatre sources vidéo en entrée et produit deux images différentes; la figure 2 représente la partie de visualisation; les figures 3 et 4 montrent deux représentations différentes de l'architecture permettant de calculer simultanément des relations entre plusieurs images et de réaliser les évaluations à la 30 fréquence pixel. Il est possible de distinguer deux parties dans l'invention: la première permettant de réaliser les évaluations à la fréquence pixel, et la seconde permettant 35 de générer les sorties vidéos. L'architecture de la première partie est basée sur un principe qui consiste à établir directement des relations entre des signaux qui représentent un ensemble d'images La configuration minimale étant de deux images, 5 le nombre maximum d'images étant limité par le nombre d'entrées physiques du système Ces relations étant modifiées ou sélectionnées par un ensemble de variables dites variables de commandes Ces variables pouvant être issues de calcul sur les signaux images (variables 10 internes) ou pouvant être contrôlées par des éléments extérieurs (variables externes), ces dernières étant en général synchronisées avec la fréquence image L'ensemble de ces relations sont calculées à la fréquence pixel sur l'ensemble des images et des variables de commande internes 15 ou externes. La seconde partie permet de créer des signaux image à des fins de visualisation, ces derniers étant issus de la commutation de signaux entrants directement ou apres 20 transformation par des machines dites de " visualisation " chacune étant spécifique à une application ou à un ensemble d'applications. Cette partie utilise les entrées vidéo numériques synchronisées et des fonctions calculées sur 25 l'ensemble des variables vidéo et de commande qui permettent de gérer la commutation des sources Dans le cas le plus simple, cette logique gère à la fréquence pixel l'ensemble des entrées vidéo synchronisées et d'une palette interne Il s'agit en fait d'une incrustation généralisée. 30 Par exemple, si le spectre 3 de la source vidéo 2 est en coincidence avec le spectre 2 de la source vidéo 1 et en concidence avec le spectre 4 de la source vidéo 3, alors les pixels validés par cette fonction sont de couleur (vert 4) dans l'image de sortie 1 et sont la copie de l'entrée 35 vidéo 2 dans l'image de sortie 2 Cette partie contient aussi un ensemble d'automates de visualisation spécifiques à une application ou à un ensemble d'applications Par exemple, un automate permet de gérer la représentation d'un utilisateur à l'écran en fonction de sa performance. Les images considérées dans la présente invention sont: * définies dans le même format: les fréquences, pixel, ligne, et images seront identiques De plus, 10 l'ensemble des pixels lignes et images devront se succéder dans le même ordre. * synchronisées: les pixels (n) des lignes (p) de l'ensemble des images seront présents au même instant. L'ensemble des signaux numériques définissant les images seront simultanément présents aux entrées de la machine. Par exemple, si une architecture utilise: 4 images dont deux sont définies sur 24 bits, 2 sur 16 bits, 20 et 10 variables de commande internes ou externes, la machine va traiter 86 variables donc résoudre simultanément en parallèle (m) équations de la forme E= f(des 86 variables binaires). Le dispositif selon l'invention, illustré figure 1, comporte une pluralité de moyens de production de flux vidéo, ces flux de production pouvant être des caméras, ordinateurs, etc Les flux générés par ces moyens peuvent avoir subi un pré-traitement destiné à extraire des 30 caractéristiques du signal: par exemple, si une caméra filme une scène dans laquelle on désire déterminer des spectres de couleur, un pré- traitement sera chargé de créer un flux vidéo o tout ce qui n'appartient pas au dit spectre est représenté en noir et ce qui appartient au 35 spectre est représenté en blanc De même, un des flux vidéo d'entrée peut résulter des calculs précédemment appliqués sur les flux d'entrée de telle sorte que le dispositif forme une boucle. Chaque flux vidéo d'entrée analogique est relié à un convertisseur analogique-numérique qui génère une séquence de bits correspondant aux données analogiques d'entrée échantillonnées selon des critères prédéfinis par l'utilisateur Chaque séquence de bits est stockée au fur 10 et à mesure dans des mémoires qui comportent notamment des files d'attente d'entrée et de sortie Les bits sont lus dans chaque mémoire un par un et simultanément de telle sorte que si l'on dispose de 3 sources d'entrée, un bit de chaque source est lu à chaque fois soit trois bits en tout. 15 Les bits lus en sortie des mémoires sont transmis à une architecture matérielle comportant au moins un processeur Chaque processeur réalise une fonction préalablement choisie par l'utilisateur sur tout ou partie de l'ensemble de bits entrants Tous les calculs sont 20 effectués en temps réel, quelque soit le nombre d'entrées. Par exemple, une fonction est chargée de compter les intersections entre les bits répondant au spectre (s) de l'image 1, au spectre (p) de l'image 2 et au spectre (q) de l'image 3, le tout à l'intérieur d'une fenêtre programmée 25 pour couvrir une zone donnée et en fonction de variables permettant de déterminer si la luminosité permet ou non cette évaluation Le résultat de cette fonction et de chaque fonction est booléen: vrai ou faux. chaque fonction est associé un accumulateur 30 qui contient et peut permettre de modifier le résultat et qui est remis à zéro au début de chaque trame ou image Le contenu de l'accumulateur est modifié à chaque fois que la fonction renvoie le résultat " VRAI " Ainsi, à la fin du traitement d'une trame vidéo, chaque accumulateur contient 35 une valeur entière A chaque nouvelle trame, l'accumulateur est remis à zéro A la fin de chaque événement image (trame ou image), l'ensemble des données calculées par les accumulateurs sont transmises à une machine hôte pour les formats image les plus courants toutes les 20 ou 40 ms. 5 L'architecture peut convenir pour des fréquences d'images différentes. Selon un mode préféré de réalisation, le dispositif comprend des banques contenant chacune 40 fonctions et donc 40 accumulateurs D'autre part, ces 10 fonctions logiques peuvent être réalisées par des éléments logiques programmables de type FPGA ou SOPC Ainsi, en fonction de l'application désirée par l'utilisateur, celuici peut programmer les éléments logiques de façon à réaliser ses propres banques de fonctions utilisateur Pour 15 cela, le dispositif comprend un système d'interfaçage standard entre l'utilisateur et les éléments logiques programmables. Les fonctions logiques peuvent alternativement être implémentées dans des puces non programmables de type 20 ASIC Les fonctions disponibles ne sont plus modifiables, ce qui limite forcément le nombre d'applications En revanche, ce mode de réalisation permet de réduire les cots de production à grande échelle et d'implanter un nombre plus important de banques. A la fin de chaque trame, le résultat contenu dans chaque accumulateur est envoyé à un moyen de traitement logiciel qui est programmé pour prendre des décisions en fonction des résultats de chaque fonction Les décisions sont envoyées à une architecture dite de 30 visualisation qui détermine le flux vidéo sortant On génère ainsi une ou plusieurs image(s) Ainsi, si la main de l'utilisateur déterminée sur le flux provenant d'une caméra intersecte une zone du flux provenant de l'ordinateur correspondant à une zone d'une balle graphique 35 commandant un rebondissement à droite dont l'intensité dépendra de la valeur contenue dans les accumulateurs associés aux fonctions, le moyen logiciel commandera le déplacement de la balle et la mise à jour d'un score affiché en haut à droite de l'écran par exemple. De nombreuses applications du dispositif selon l'invention sont réalisées et envisagées Concernant la représentation d'une performance en cours d'application, on 10 peut par exemple estimer les différences entre un multifenêtrage et un mono-fenêtrage polysémique à l'aide de l'architecture décrite ci-dessus Chacune des applications est implantée dans la machine sous la forme d'automates spécifiques, ces derniers étant commandés par la machine 15 hôte. L'invention est décrite dans ce qui précède à titre d'exemple Il est entendu que l'homme du métier est à même de réaliser différentes variantes de l'invention sans 20 pour autant sortir du cadre du brevet. REVENDICATIONS 1 Architecture de traitement de flux vidéos comprenant: une pluralité d'entrées, chaque entrée étant reliée à une source vidéo analogique ou numérique et o toutes les sources vidéo ont le même format d'image; une pluralité de convertisseurs, chaque convertisseur transformant une trame d'une source vidéo 10 analogique en un ensemble de pixels constituant une trame vidéo numérique, chaque convertisseur étant connecté à une desdites entrées; un ensemble logique réalisant des calculs sur lesdits pixels, ledit ensemble logique produisant des 15 données de sortie à la fin visible de la trame ou de l'image courante; un moyen de traitement des données de sortie permettant l'affichage d'un flux vidéo; caractérisée en ce que ledit ensemble logique: 20 est composé d'au moins une unité logique, est relié en entrée aux dits convertisseurs et prend en entrée un pixel de chaque source et l'ensemble des variables de commande qui interviennent dans l'application; met en oeuvre au moins une fonction portant sur l'ensemble des variables vidéo représentant un pixel de chacune des images et des variables de commande; est relié à au moins une mémoire, chaque mémoire contenant au moins un résultat du traitement de 30 toute la trame vidéo numérique par une desdites fonctions; toutes lesdites mémoires étant reliées à un moyen de calcul qui en fonction des résultats desdites fonctions contenues dans les dites mémoires, calcule les informations permettant de composer la trame suivante des 35 vidéos de sortie. 2 Architecture selon la revendication 1, caractérisée en ce que ledit ensemble logique est composé d'unités logiques configurables ou programmables et en ce 5 que l'architecture comprend en outre une interface entre ledit ensemble logique et l'utilisateur pour permettre à celui-ci de configurer ledit ensemble. 3 Architecture selon la revendication 1, 10 caractérisée en ce que ledit ensemble logique est composé d'unités logiques non-reconfigurables lASICl. 4 Architecture selon la revendication 1, caractérisée en ce qu'elle comporte une étape d'affichage 15 desdits flux vidéo générés et de fourniture d'au moins un desdits flux vidéo générés aux dits convertisseurs. Procédé de traitement d'images vidéo dans une architecture selon la revendication 1, caractérisé en 20 ce qu'il est composé de: une étape de fourniture d'une pluralité de signaux vidéo analogiques aux dits convertisseurs; pour chaque signal vidéo fourni, une étape de conversion d'une trame vidéo analogique en un ensemble de 25 pixels par un desdits convertisseurs; une étape d'envoi desdits ensembles de pixels des convertisseurs vers ledit ensemble logique, lesdits ensembles de pixels étant envoyés pixel par pixel, de telle sorte que ledit ensemble logique reçoive un pixel d'entrée 30 de chaque convertisseur simultanément, quelque soit le nombre d'entrées vidéo; une étape d'application de fonctions logiques implantées dans ledit ensemble logique aux dits pixels d'entrée; pour chaque fonction logique, une étape de stockage du résultat de ladite fonction logique des opérations sur une valeur stockée dans une desdites mémoires; consécutivement à la fin du traitement des signaux vidéo d'entrée par répétition des étapes d'application de fonctions logiques et de stockage du résultat pour tous les pixels desdits ensembles de pixels, une étape de lecture des valeurs stockées dans lesdites 10 mémoires spécifiques par un moyen logiciel; une étape de traitement par un moyen logiciel desdites valeurs et de génération d'informations permettant de créer au moins un flux vidéo réalisé en fonction du résultat dudit traitement et d'au moins un desdits signaux 15 vidéo d'entrée.