FR 2656486 A1 19910628 FR 9014683 A 19901116 SYSTEME DE TRAITEMENT DES IMAGES A GRANDE VITESSE Le système de traitement des images qui est proposé, vient satisfaire certains besoins du marché - traitement à grande vitesse : 6 à 10 MHz ; - flexibilité d'exécution des algorithmes-par hardware; - traitement d'image et extraction des caractéristiques par hardware ; - algorithmes hardware facilement programmables ; - hardware tres simple ; - coût réduit Ceci permet d'intégrer le système de traitement des images dans les procédés de production, et de résoudre des applications "en direct" qui exigent des cadences très élevées, et même un coût réduit. La présente invention préconise un systeme de traitement des images à grande vitesse, de ceux qui reçoivent d'entrée un signal de vidéo capté en lignes d'images (1) et chaque ligne par des pixels de coordonnée (x), caractérisé en ce qu'il comporte: a) un bloc de fond qui comprend al) un dispositif ASIC avec des moyens pour diriger le signal d'entrée de vidéo et un signal synchronique provenant d'une mémoire de ligne ML qui mémorise une ligne d'image, vers a2) une mémoire d'opération Bilut avec des moyens pour faire correspondre à chaque couple de données provenant du signal vidéo et de la mémoire de ligne ML, le résultat d'une opération programmée ;; b) un bloc filtre qui reçoit le signal provenant du bloc de fond et qui comprend bl) un groupe de n fifos en cascade de sorte que si (x) est la coordonnée du pixel entrant dans la ligne d'image (1), les pixels d'image qui sont formés sont : (x - im) (1 - jm), m variant entre 1 et n ; b2) un dispositif ASIC qui reçoit les signaux de sortie tour du groupe de n fifos et a des moyenSTAFenir les comptes de la coordonnée du pixel qui entre dans le bloc filtre et pour diriger avec les valeurs provenant du groupe de n fifos vers b3) une mémoire opérationnelle OPLUT avec des moyens pour faire correspondre à chaque ensemble de valeurs d'image des pixels qui la dirigent, le résultat d'y appliquer une opération programmée en disposant à sa sortie une fifo de données;; c) un microprocesseur qui contrôle le système. Elle se caractérise également en ce qu'elle comporte un bloc d'affichage d'image qui comprend a) une fifo de stockage qui reçoit le signal vidéo, en connexion avec b) une mémoire d'affichage qui reçoit à son tour la sortie d'une fifo de données et communique avec c) un écran de visualisation. Elle est également caractérisé en ce que le bloc filtre comprend des moyens pour a) appliquer un opérateur bidimensionnel sur l'image qui lui parvient, la forme de cet opérateur étant définie par le programme de groupe de n fifos et leurs poids par le programme de la mémoire opérationnelle OPLUT, qui s'appliquent à leur sortie b) des moyens de sélection de caractéristiques définies par le programme de la mémoire opérationnelle OPLUT. La figure 1 représente un schéma des blocs généraux du système objet de l'invention. La figure 2 représente un schéma sur lequel les blocs généraux de la figure 1 sont décomposés en leurs composants. La figure 3 représente un schéma des blocs généraux du systeme sur lequel les blocs de la figure 2 sont décomposés en leurs composants. La figure 1 représente l'idée générale à laquelle répond le système objet de l'invention, le signal de vidéo (1), émis par une caméra placée sur le produit dont le systeme va traiter l'image, est traité par les moyens physiques du système (2) (niveau hardware) et les résultats de ce traitement sont mémorisés dans un bloc fifo d'image (3) et un bloc fifo de données (4). Par le bus (6) du systeme, l'unité centrale (5) accède à ces fifos (3) (4) pour recueillir les résultats et procéder à leur interpretation. Les lignes en pointillés représentent un bloc d'affichage d'image (7) dont la fonction est d'aider au déroulement des applications concrètes, comme on l'expliquera plus loin. Le bloc de traitement de l'image (2) (niveau hardware) répond à une structuration fixe des éléments, mais la configuration de ces éléments est programmable. Cette programmation fait que le traitement de l'image à ce niveau peut être très varié et donc ses applications également. Le succès d'une application dépend du bon choix de ce niveau avec les moyens physiques et de sa programmation, le bloc "affichage d'image" (7) étant celui qui facilite cette tâche, puisqu'il offre la possibilité de traiter un signal de vidéo (1) quelconque avec le bloc de traitement (2) préalablemment programmé, d'observer sur le bloc d'affichage de l'image (7) les résultats et donc de vérifier l'efficacité de ce traitement proposé. La figure 2 représente l'organisation de blocs à un niveau plus bas. Le bloc de traitement de l'image (2) (niveau hardware) est divisé en deux blocs aux fonctions indépendantes, le bloc de FOND (8) et le bloc FILTRE (9). Dans la fifo image (3), on mémorise les résultats que le bloc FOND (8 doit appliquer au signal d'entrée vidéo (1). Dans la fifo de données (4), on mémorisera les résultats que le bloc filtre (9) doit appliquer au signal de sortie (10) du bloc de fond (8). Le bloc affichage d'image (7) est formé d'une fifo de stockage (11) qui permet de rendre indépendantes les vitesses de traitement des signaux du bloc affichage d'image (7) et du bloc de traitement (2), d'une mémoire d'affichage (12) et d'un écran de visualisation (13). Comme on représente les cheminements dans ce bloc d'affichage d'image (7), il est possible de visualiser sur l'écran (13) le signal vidéo (1) d'entrée au système, les résultats du traitement avec le bloc de traitement (2) de ce signal d'entrée (1), du traitement d'une image quelconque, d'une façon générale, toute image préparée par l'unité centrale (5). De même, le signal d'entrée au bloc de traitement (2) présente ces mêmes possibilités. La figure 3 représente la disposition concrète des éléments qui configurent la conception du systeme. Le bloc de fond (8) est formé d'une mémoire de ligne (14) (ML), d'un dispositif ASIC (15) qui est un circuit intégré d'application spécifique et d'une mémoire d'opération (16) (BILUT). La mémoire de ligne (14) (ML) est une mémoire qui stocke une ligne d'image, normalement produite par l'unité centrale (5) et qui dépendra du traitement ou de l'application concrète qui est poursuivie. Lorsqu'une image vidéo (1) arrive au système, la ML (14) fournit au dispositif ASIC (15), de façon synchrone, l'image qu'elle contient. C'est le dispositif ASIC (15) qui est chargé de diriger la ML (14) pour arriver à ce synchronisme. Le résultat est qu'il arrive au dispositif ASIC (15) deux images (1) (17) simultanées et synchrones, le signal vidéo (1) et le signal (17) contenu dans la ML (14). En supposant qu'on utilise une caméra vidéo linéaire, le produit dont l'image va être traitée par le système est capté par des lignes et chaque ligne se compose de n points qui, dans le signal vidéo (1) sont appelés pixel. S'il s'agit de blancs-gris, on donne à chaque ton une valeur. X étant la coordonnée d'un pixel d'image, l'entrée au dispositif ASIC (15) est alors formée par les signaux vidéo (x) (1) et ML (x) (17). D'autre part, le dispositif ASIC (15) agit de façon transparente sur l'entrée, de façon à ce que la mémoire d'opération (16) bilut reste dirigée par les signaux vidéo (x) (1) et ML (x) (17). La mémoire d'opération (16) bilut est une mémoire RAM à grande vitesse, dont la fonction dans le système est de faire correspondre à chaque couple de données d'entrée (1), (17), le résultat d'une opération quelconque entre elles qui aura été programmée au préalable, ce qui permet de faire des "fenêtres" et de transformer le signal conformément à un tableau de transformation à programmer. Dans ce cas, les données d'entrée à la bilut (16) sont vidéo (1) et ML (17) ; Entrée Sortie (vidéo, ML) Bilut f (vidéo, ML) (Ex.1) où f représente chaque fonction, avec la limitation que le résultat est représenté par un nombre programmable de bits, par exemple, en 8 bits. La sélection de la fonction est réalisée par programme, comme on l'a déjà dit, et, sur la base de cette fonction (f), la bilut (17) est chargée pour effectuer la transformation indiquée dans Ex.1. Cette même expression donne une idée du fait que la transformation est fonction des valeurs d'entrée (1), (17) et non du point (x) auquel on se réfère. Cependant, le signal ML (17) est programmable et donc est une fonction de point contrôlée par l'utilisateur. En définitive, le bloc de fond (8) agit sur le signal d'entrée vidéo (1) suivant vidéo (x) fond f' (vidéo, x) Le résultat, une nouvelle image a, par exemple, 8 bits, est mémorisé en fifo image (3) d'où cette image peut être lue par l'unité centrale (5). De même, les 6 bits les plus significatifs de cette image sont acheminés au bloc d'opération appelé filtre (9). Les deux blocs de fond (8) et filtre (9) communiquent avec l'unité centrale (5) par l'intermédiaire du bus (6) et des mémoires tampon (18) (18'). Le bloc filtre (9) est formé d'un groupe de n fifos, dans ce cas quatre (201), (202), (203), (204), d'un dispositif ASIC (151), et d'une mémoire d'opération (19) (OPLUT). Ce dispositif ASIC (151) peut être le même ASIC (15) que celui du bloc de fond (8). La fonction du groupe de n fifos (20) est de présenter au ASIC (151) les valeurs d'image d'un groupe de pixels. Ce groupe peut être formé - soit de deux pixels (la valeur de pixel sera à 6 bits); - soit de 5 pixels (la valeur sera alors à 3 bits). Soit x la coordonnée du pixel entrant au bloc filtre (9) et 1 la ligne d'image à laquelle appartient ce pixel, les pixel s d'image qui forment ce groupe sont alors a) le (x.1) et le (x-i, l-j) s'il y a 2 pixels, avec i et j programmables ; b) le (x, 1), (x-i1, l-j1), (X-i2 l-i2), (x-i3, l-j3) et (x-14, 1-j4) s'il y a 5 pixels, avec im et j, programmables. Les combinaisons de valeurs i, j sont telles qu'elles doivent faire référence à des pixels antérieurs au pixel actuel. De plus, il y aura des valeurs limites selon la capacité des fifos. Les fifos (20) sont celles qui sont chargées du stockage de toute cette information des images engendrées, nécessaire pour présenter à tout moment cette combinaison de pixels. Finalement, les fifos (20) agissent comme des éléments de déphasage programmables: par exemple, en se référant à la figure 3 et å la combinaison (x, 1) et (x-i, 1-j), la fifo (201) doit engendrer un déphasage de j lignes + i pixels. Le dispositif ASIC (151) a une double fonction, d'un côté il dirige la mémoire d'opération (19) OPLUT avec les valeurs des 2 ou 5 pixels que lui fournissent les fifos (20). D'autre part, il se charge de tenir les comptes de la coordonnée du pixel qui entre dans le bloc filtre (9), c'est à-dire qu'il fournit la valeur de x. La OPLUT (19) est une mémoire opérationnelle RAM dont la fonction est de faire correspondre, à chaque ensemble de valeurs d'image des pixels qui la dirigent le résultat d'une opération quelconque entre eux. Cette opération (f) est programmable. Ainsi, si on représente les valeurs d'image des pixels mentionnés par P1, P2 ... P5 (s'il y a 5 pixels à 3 bits) ou par P1, P2 (s'il ya 2 pixels à 6 bits), alors Entrée Sortie (P1, Pg) - ---P5) f (pl ----P5) ou (P1, P2). PLUT f (P1 P2) ou f représente toute fonction, avec la limitation que le résultat (22) reste représenté, dans ce cas, en 4 bits. Sur ces 4 bits, 3 concernent le résultat de l'opération (f) en soi et un l'intérêt de ce résultat, c'est-à-dire définit si le résultat est une donnée significative ou non. La sortie du bloc filtre (9) est donc formée par la coordonnée (21) du pixel le plus récent parmi ceux qui ont été traités dans ce bloc, par le résultat (22) à 3 bits de l'opération et par un bit d'intérêt qui détermine si cette information va être stockée ou non dans la fifo de données (4). Dans ce sens, il remplit une tâche de filtrage des caractéristiques interessant l'image. En résumé, on peut dire que le bloc filtre (9) remplit deux fonctions a) il applique un opérateur bidimensionnel sur l'image qui lui parvient. La définition de la forme de cet opérateur s'effectue en programmant les fifos de déphasage (20). Les poids de cet opérateur sont définis au moment de programmer la mémoire OPLUT (19) ; b) il applique au résultat un critère de sélection des caractéristiques. Ce critere est défini au moment de programmer la mémoire OPLUT (19). Une fois le traitement concret du bloc de traitement (2) défini (voir figure 1) qui sera réalisé sur l'image de vidéo (1), le travail de la programmation est de produire les contenus des mémoires ML (14) bilut (16) et oplut (19) qui rendront possible ce traitement concret. L'unité centrale (5) va placer ces contenus dans le bus (6) au moment où les dispositifs ASIC (15), (151) se chargent de diriger de façon appropriée les mémoires afin que ces contenus se chargent correctement REVENDICATIONS -5- Système de traitement des images à grande vitesse, de ceux qui reçoivent d'entrée un signal vidéo capté en lignes d'image (1) et chaque ligne par pixels de coordonée (x > , caractérisé en ce qu'il comporte a) un bloc (8 > de fond qui comprend al) un dispositif ASIC (15) avec des moyens pour diriger le signal d'entrée de vidéo (1) et un signal (17) synchronique provenant d'une mémoire de ligne ML (14) qui mémorise une ligne d'image, vers a2) une mémoire d'opération Bilut (16) avec des moyens pour faire correspondre à chaque couple de données provenant du signal vidéo et de la mémoire de lignes, le résultat d'une opération programmée b) un bloc filtre (3) qui reçoit le signal provenant du bloc de fond (8) et qui comprend b1) un groupe de n fifos (20) en cascade de sorte que si (x) est la coordonnée du pixel entrant dans la ligne d'image (1), les pixels d'image qui sont formés sont :Cx im) ( - jm), m variant entre 1 et n b2) un -dispositif ASIC (15. i) qui reçoit les signaux ae sortie du groupe de n fifos et à des moyens pour tenir les comptes de la coordonnée du pixel qui entre dans le bloc filtre et pour diriger avec les valeurs provenant du groupe de n fifos vers b3) une mémoire opérationnelle OPLUT (19) avec des moyens pour faire correspondre a chaque ensemble de valeurs d'image des pixels qui la dirigent5 le résultat d'y appliquer une opération programmée c) un iaicroprocesseur qui contrôle le système. -2- Systéne de traitement d'images à grande vitesse suivant la revendication 1, caractérisé en ce qu'il camprend une fifo d'image (3 > dans laquelle est stockée la sortie du bloc de fond (8) et une fifo ae donnée (4) dans laquelle est stocké le signal de sortie du bloc filtre (9), les deux fifcs communiquant avec le microprocesseur par le bus (6) du système. -3- Système de traitement d'images à grande vitesse, suivant es revendications 1 et 2 ensemble, caractérisé en ce qu'il comprend un bloc d'affichage (7) d'image qui comprend a) une fifo de stockage (11) qui reçoit le signal vidéo avec connexion a b) une mémoire d'affichage (12) qui reçoit à son tour la sortie d'une fifo de données (4) et qui communique avec c)- un écran de visualisation (13). -4- Système de traitement d' images à grande vitesse, suivant les revendications 1. 2 et 3 ensemble, caractérisé en ce que le bloc filtre (9) comprend des moyens pour a) appliquer un opérateur bidimensionnel sur l'image qui lui parvient, la forme de cet opérateur étant définie par le programme du groupe de n fifos et leurs poids par le programme de la mémoire opérationnelle OPLUT, s'appliquant e ma ortie Le moyens ce sélection des caractéristiques définies par le programme de la mémoire opérationnelle OPLUT. -5- Système de traitement d'images à grande vitesse, suivant la revendication 1, caractérisé en ce que la ligne d'image à stocker à la mémoire de ligne N1 est engendrée par le microprocesseur. -6- Système de traitement d'images à grand vitesse, suivant la revendication 1 caractérisé en ce que toutes les mémoires du système peuvent être programmées depuis le microprocesseur -7- Système de traitement d'images à grande vitesse, suivant la revendication 1, caractérisé en ce que le signal d'entrée au bloc filtre (9) comprend les 6 bits les plus significatifs du signal de sortie du bloc de fond (8), -8- Système de traitement d'images à grande vitesse. suivant la revendication 4, caractérisé en ce que la fifo de données reçoit du dispositif ASIC la coordonnée au pixel ie plus récent parmi ceux traités par le bloc filtre et reçoit de la mémoire opérationnelle OPLUT le résultat à 3 bits de l'opération appliquée et un bit d'intérêt qui détermine si cette information va ou non être stockée par la fifo de données.