Brevet FR2757297A1 — publié le 19980619

Procédé et dispositif d'étiquetage de région L'invention concerne le traitement d'image et en particulier l'étiquetage, "labeling" en anglosaxon, de zones préalablement déterminées dans une image. Ce type d'opération est par exemple utilisé pour le traitement de données vidéo, pour l'identification de zones d'image par segmentation ou extraction de régions. Le domaine peut être celui de l'inspection industrielle pour déterminer par exemple des anomalies sur des objets à partir d'une image de cet objet provenant d'une caméra vidéo. Il peut alors s'agir d'une comparaison à un modèle donné ou une évaluation de surface de zone. Les anomalies sont identifiées et extraites en tant que régions spécifiques. Elles sont considérées comme majeures ou mineures selon la taille, le nombre de 1 5 régions. La décision de rejet de l'objet ou la pièce inspectée est effectuée en fonction de ces critères. L'opération d'étiquetage consiste en l'obtention d'une image de gris dont chaque niveau de gris correspond à un numéro de zone. Pour une exploitation de type contrôle industriel, de tels traitements de l'image nécessitent un fonctionnement quasi temps réel ou tout au moins très rapide. Ils doivent être performants dans la détection de défauts, c'est à dire dans le traitement de zones de très faible surface. Les procédés et dispositifs connus sont généralement mal adaptés et longs à mettre en oeuvre du fait de l'exploitation d'algorithmes complexes nécessitant un nombre important de calculs et des accès multiples aux mémoires. Ceci est particulièrement vrai lorsque le traitement est effectué au niveau du pixel. Le but de l'invention est de remédier aux inconvénients précités. A cet effet, I'invention a pour objet un procédé d'étiquetage de régions d'une image vidéo définies par la juxtaposition de segments qui sont des portions de lignes de l'image, caractérisé en ce que, lors du balayage ligne de l'image, il incrémente, puis attribue un label à chaque segment rencontré sur la ligne courante lorsque ce segment n'est connecté à aucun segment de la ligne précédente. Il attribue le même label que celui affecté au segment de la ligne précédente lorsqu'il est connecté à ce segment. Il attribue le même label que celui affecté au premier des segments de la ligne précédente auquel il est connecté lorsqu'il est connecté à plus d'un segment de la ligne précédente et en ce que, dans ce dernier cas, il mémorise le lien entre les labels des segments successifs connectés à un même segment de la ligne courante. Elle a également pour objet un dispositif mettant en oeuvre le précédant procédé. Le procédé décrit permet d'exploiter des circuits programmables précâblés et ainsi de réduire d'une manière très importante le temps de calcul, les algorithmes mis en oeuvre étant très rapides. L'invention permet le traitement d'images de grande surface avec une définition au niveau du pixel. 1 0 L'implémentation en est simplifiée, d'un coût réduit et de grande flexibilité. D'autres particularités et avantages de l'invention apparaîtront clairement dans la description suivante donnée à titre d'exemple non limitatif et faite en regard des figures annexées qui représentent - la figure 1, un dispositif selon l'invention; i15 - la figure 2a, un exemple d'image lors de la première phase de traitement; - la figure 2b un exemple d'image lors de la deuxième phase de traitement. La figure 1 représente un dispositif selon l'invention. L'entrée du dispositif est l'entrée d'un compteur de segment 1. La sortie de ce compteur est reliée à l'entrée d'une mémoire FIFO 2 et à l'entrée d'un circuit de comparaison, mémorisation et séquencement 3 appelé CMS. La sortie FIFO est reliée à une première entrée d'un multiplexeur 5 et à une deuxième entrée du circuit CMS. Une première sortie du circuit CMS est reliée à la deuxième entrée du multiplexeur 5. Une première et une deuxième sortie de ce multiplexeur sont reliées respectivement au bus adresse d'une mémoire 3 et au bus adresse d'une mémoire 4. Ces deux mémoires aussi appelées A et B sont dénommées mémoires de connectivité. Une deuxième sortie du circuit CMS est reliée à un compteur de zone 7, la sortie de ce dernier étant reliée, quant à elle, à un première entrée d'un deuxième multiplexeur 9. Les bus données des mémoires de connectivité sont reliés respectivement à deux entrées/sorties d'un premier multiplexeur bidirectionnel 8. Une sortie de ce multiplexeur est reliée à une mémoire de stockage image 10, a une deuxième entrée du multiplexeur 9 ainsi qu'à une troisième entrée du circuit CMS. Une entrée de ce multiplexeur 8 est reliée à la sortie du multiplexeur 9. Une troisième et quatrième sortie du circuit CMS sont respectivement reliées à une première entrée d'un deuxième multiplexeur de type bidirectionnel 12 et d'un troisième multiplexeur unidirectionnel 13. La sortie du multiplexeur 13 est reliée à un bus adresse d'une mémoire des synonymes 11 et l'entrée/sortie côté mémoire du multiplexeur 12 est reliée au bus données de cette mémoire. Une deuxième entrée du multiplexeur 13 provient de la sortie de la mémoire de stockage image 10 et une troisième entrée d'une unité de traitement centrale ou circuit CPU non représentée sur la figure. Une entrée/sortie du multiplexeur 12 est également reliée au circuit CPU et une sortie de ce multiplexeur correspond à la sortie du dispositif. Les informations transmises à l'entrée du dispositif sont des informations binaires, le fond de l'image correspondant par exemple à une valeur zéro et les éléments pertinents ou à identifier dans l'image correspondant à une valeur unité. Ces informations sont obtenues à partir de traitements connus tels que le "seuillage" de l'image vidéo sur des informations de luminance, de chrominance, etc. Par la suite, la succession de pixels ayant la valeur unité sur une ligne sera appelée segment. Un segment est donc délimité par deux pixels à la valeur zéro et la longueur d'un segment peut varier de un pixel à une ligne. Les informations sont reçues ligne par ligne, un bit par pixel, sur l'entrée du dispositif qui est l'entrée d'un circuit programmable logique dont les différentes fonctions sont explicitées ci-après. Ces informations sont transmises à l'entrée d'un compteur 1 qui va être incrémenté à chaque fois qu'il reçoit un bit unité qui suit un bit à la valeur zéro ou qui est le premier de la ligne. Il s'agit d'un compteur de numérotation intra-lignes ou compteur segment qui est initialisé à chaque démarrage ligne. L'entrée horloge du compteur est l'entrée horloge du circuit programmable logique qui alimente également les différents circuits décrits par la suite, généralement par l'intermédiaire d'un circuit comparaison, mémorisation et séquencement décrit plus loin. Cette horloge est par exemple à la fréquence de 40 MHz. La valeur disponible en sortie du compteur est transmise à la cadence pixel dans une mémoire FIFO 2 qui mémorise les numéros de segments correspondant à une ligne image. Cette mémoire a pour but de retarder d'une période ligne les informations reçues en entrée pour les transmettre ensuite simultanément sur le bus données d'une mémoire de connectivité 3 ou 4 aussi appelée table des correspondances, via un multiplexeur 5, et sur l'entrée d'un circuit de comparaison, mémorisation et séquencement appelé CMS 6. La table de correspondance est constituée des deux mémoires 3 et 4. Un comparateur du circuit CMS 6 va comparer les informations disponibles en sortie du compteur segments aux informations fournies en sortie FIFO, c'est à dire le numéro affecté à un pixel de la ligne courante au numéro affecté au pixel correspondant de la ligne supérieure (aussi appelée précédente). Le circuit CMS, après avoir rentré toutes les informations correspondant à un segment complet de la ligne courante, vérifie si ce segment est en correspondance avec au moins un segment de la ligne précédente, c'est à dire s'il y a chevauchement ou inclusion de segments lorsque les deux lignes sont superposées. Dans la négative, c'est à dire dans le cas o, pour tous les pixels du segment de la ligne courante, une valeur zéro de la ligne précédente est mise en correspondance, un signal d'incrémentation est transmis en sortie du circuit CMS vers un compteur de zone 7. Fonctionnement de la table des correspondances Les mémoires A et B sont montées en dispositif FLIP-FLOP. Lorsqu'une des mémoires est en écriture, I'autre mémoire est en lecture et inversement. Explicitons le fonctionnement du mode écriture de zone pour le segment de la ligne courante qui correspond à la phase un de fonctionnement du dispositif. Supposons la mémoire A en mode lecture et la mémoire B en mode écriture. Sur le bus adresse de la mémoire A est transmis le numéro de segment de la ligne précédente sortant de la mémoire FIFO et sur le bus adresse de la mémoire B est transmis le numéro du segment de la ligne courante provenant du circuit CMS. La mémoire A fournit sur son bus données le numéro de zone correspondant au numéro de segment de la ligne précédente, numéro transmis vers le circuit CMS. La mémoire B reçoit sur son bus données le numéro de zone provenant du compteur de zones ou le numéro de zone correspondant au numéro de segment de la ligne précédente et provenant de la mémoire A, selon la commande du multiplexeur 9. Le segment courant est entré dans le circuit CMS. Deux cas se présentent: Premier cas Il y a correspondance du segment de la ligne courante avec au moins un segment de la ligne précédente. Alors aucune information d'incrémentation n'est transmise au compteur de zone. La mémoire B enregistre à l'adresse correspondant au numéro du segment de la ligne courante, le numéro de zone provenant de la mémoire A pour le premier segment mis en correspondance de la ligne précédente et dont le numéro est présenté sur le bus adresse de la mémoire A. Si un deuxième segment de la ligne précédente est mis en correspondance, une mémoire des synonymes 1 O est exploitée comme explicité plus loin. Deuxième cas Il n'y a pas correspondance du segment de la ligne courante avec un segment de la ligne précédente. Alors une information d'incrémentation est envoyée au compteur de zone et ce nouveau numéro de zone disponible en sa sortie est transmis sur le bus données de la mémoire B (le multiplexeur 9 est commuté en conséquence). En même temps un ordre d'écriture est transmis à cette mémoire dont le bus adresse reçoit du circuit CMS et à travers le multiplexeur 5, le numéro du segment de la ligne courante. En d'autres termes, si un segment à l'intérieur d'une ligne n'est "connecté" à (c'est à dire mis en relation avec) aucun segment de la ligne précédente, un nouveau label de zone est généré et affecté au segment par l'intermédiaire de la mémoire des correspondances. Si un segment est connecté à un segment déjà numéroté de la ligne précédente, il lui sera attribué le même label de zone que le premier segment rencontré de la ligne précédente. Pour la première ligne de l'image, on se trouve systématiquement dans ce deuxième cas, la mémoire FIFO étant initialisée à zéro à chaque image. Fonctionnement de la table des synonymes Une sortie du circuit CMS est transmise sur l'entrée de commande lecture/écriture d'une mémoire des synonymes 11. Lorsque le circuit CMS traitant un segment de la ligne courante détecte que ce segment relie deux segments de la ligne précédente, toujours en superposant ces deux lignes, il transmet à la mémoire des synonymes 11 une information d'écriture. Cette mémoire reçoit sur son bus données et via le circuit CMS et un multiplexeur 12, le numéro de zone correspondant au premier segment de la ligne précédente provenant de la mémoire de connectivité et mémorisé dans un tampon du circuit CMS. Elle reçoit sur son bus adresses via le multiplexeur 13, le numéro de zone correspondant au deuxième segment provenant de la mémoire de connectivité lorsque l'adresse reçue par cette mémoire correspond à ce deuxième segment. Si, toujours lors du balayage de ce même segment de la ligne courante, un nouveau numéro de zone (donc un nouveau segment de la ligne 1 O précédente) apparaît en sortie de la mémoire de connectivité, le circuit CMS transmet un nouvel ordre d'écriture à la mémoire des synonymes qui cette fois reçoit sur son bus données le numéro de zone correspondant au deuxième segment de la ligne précédente mémorisé dans un tampon du circuit CMS et sur le bus adresses le numéro de zone provenant de la mémoire de connectivité et correspondant au troisième segment rencontré sur cette ligne précédente. Et ainsi de suite pour tous les segments rencontrés sur la ligne précédente et correspondant au segment courant traité de la ligne courante. Au démarrage, la table des synonymes est initialisée de façon linéaire, c'est à dire que le contenu de la mémoire est initialisé à la valeur y=x, x étant l'adresse et y le contenu de la mémoire. Le circuit CMS est réalisé d'une manière connue en soi, qu'il n'est pas nécessaire de rappeler ici, à partir de circuits logiques de type classique. La ligne courante et la ligne précédente sont comparées pixel par pixel et les informations sont mémorisées pour chaque segment de la ligne courante. Un séquenceur transmet alors les éventuelles commandes d'incrémentation du compteur de zone, les ordres de lecture et d'écriture des mémoires et les commandes des multiplexeurs permettant de sélectionner la mémoire en mode écriture et la mémoire en mode lecture ainsi que les adresses et les données à prendre en compte. Durant cette première phase, les mémoires A et B mémorisent alternativement les informations de chaque ligne d'image et ces mémoires transmettent alternativement ces informations, ligne par ligne, lors du mode lecture, à une autre mémoire appelée mémoire de stockage image 10 qui va enregistrer les numéros de zone sortant de A et B à la fréquence ligne, pour I'image complète. La phase un est terminée lorsque toutes les lignes de l'image ont été traitées et mémorisées dans la mémoire de stockage 10. La phase deux va alors effectuer une mise en ordre et une renumérotation des zones pour cette image. Une fois l'ensemble des lignes de l'image passé en revue, un traitement du contenu de la mémoire des synonymes est effectué pour réaliser cette nouvelle numérotation en fonction de ces synonymes. Ainsi par exemple, si la zone 5 (adresse) est synonyme de la zone 3 (donnée) et si la zone 8 (adresse) est synonyme de la zone 5 (donnée), un réordonnancement mémorise aux adresses 3, 5 et 8 de la mémoire, la seule donnée 3. Les valeurs de zone 5 et 8 laissées libres sont utilisées pour la renumérotation des zones supérieures, la décrémentation des zones supérieures étant ainsi rendue possible. Ce réordonnancement est par exemple effectué par une unité centrale de traitement ou CPU pour "Control Processing Unit" en anglo-saxon. Les multiplexeurs 12 et 13 relient, pendant cette phase, les bus adresses et données de la mémoire des synonymes aux bus de l'unité centrale de traitement qui va se charger du réordonnancement, transférant les nouvelles données vers la mémoire des synonymes une fois ce traitement effectué. Le réordonnancement terminé, le CPU transmet un ordre de lecture de la mémoire de stockage image. Le bus données de cette mémoire est alors relié au bus adresses de la mémoire des synonymes par l'intermédiaire du multiplexeur 13 et le bus de données de cette mémoire est relié à la sortie du dispositif par l'intermédiaire du multiplexeur 12. Ces multiplexeurs, comme la mémoire de stockage et la mémoire des synonymes reçoivent donc des signaux de commande du circuit CPU, non représentés sur la figure. Un exemple de fonctionnement est explicité ci-après à l'aide des figures 2a et 2b. Lors du balayage des premières lignes de l'image courante, ces lignes étant constituées de pixels à la valeur zéro, aucune mémorisation ou incrémentation de compteur n'est effectuée par le dispositif. Lorsque la première ligne possédant au moins un pixel à la valeur unité est transmise, ligne que l'on appellera n, est reçue en entrée du dispositif, le segment correspondant incrémente le compteur segment à la valeur un. Une succession de zéros est ensuite reçue en entrée du dispositif toujours sur cette même ligne avant qu'une deuxième succession de bits au niveau un apparaisse, incrémentant le compteur segment à la valeur deux correspondant au numéro du deuxième segment sur cette ligne. La ligne précédente ayant tous ses pixels à la valeur zéro, la comparaison entre les numéros attribués aux pixels de la ligne courante (valeurs sortant du compteur de segment) et ceux attribués aux pixels de la ligne précédente (valeurs sortant de la mémoire FIFO) entraine une incrémentation du compteur zone à la valeur un pour le premier segment reçu en entrée puis à la valeur deux pour le deuxième segment reçu de la ligne courante. La sortie du compteur zone incrémentée est mémorisée après chaque incrémentation dans la mémoire des connectivités, par exemple B, à l'adresse reçue du circuit CMS et correspondant au numéro de segment de la ligne courante, la numéro de zone un est mémorisé à l'adresse segment un et le numéro de zone deux à l'adresse segment deux. Ainsi à chaque numéro de segment est associé un numéro de zone. Lorsque le premier segment de la nouvelle ligne courante n+1 est reçu, étant en correspondance avec le segment de la ligne précédente n, aucun signal d'incrémentation de zone n'est transmis au compteur de zone. Le circuit CMS transmet un ordre d'écriture à la mémoire de connectivité qui est maintenant A et qui reçoit sur son bus adresses le numéro du segment de la ligne courante. L'information enregistrée à cette adresse est la sortie de la mémoire B dont l'adresse est la sortie FIFO c'est à dire le numéro de segment de la ligne précédente n. Sur ce bus donné est donc transmis le numéro de zone du segment de la ligne précédente mis en correspondance. Cette valeur est retransmise via le multiplexeur 9 sur le bus données de la mémoire A à l'adresse précédemment indiquée. De cette manière, au numéro de segment de la ligne courante est associé le numéro de zone du segment de la ligne précédente mis en correspondance. Cette valeur est simultanément enregistrée dans la mémoire de stockage 10. La même opération est ensuite effectuée pour le segment numéroté deux auquel est associé le numéro de zone deux. A la nouvelle ligne courante n+p, les deux segments se confondent en un seul. Une information d'écriture est transmise à la mémoire des synonymes lorsque un deuxième segment de la ligne précédente est mis en correspondance avec toujours le même segment de la ligne courante. Cette mémoire reçoit sur son bus données le numéro de zone provenant de la mémoire des connectivités et mis dans une mémoire tampon du circuit CMS lorsque le premier segment de la ligne précédente est mis en correspondance. Sur le bus adresses est reçu le numéro de zone provenant de la mémoire des connectivités et correspondant au numéro du deuxième segment de la ligne précédente mis en correspondance. Ainsi, lors du traitement de cette ligne n+p, à l'adresse deux de la mémoire des synonymes est mémorisée la valeur un. A la ligne n+p+q est rencontré un segment correspondant à une nouvelle zone. Aucune correspondance n'existant avec un segment de la ligne précédente, le compteur de zone est incrémenté à la valeur trois. La mémoire des synonymes n'est pas affectée par cette zone. La deuxième phase du procédé d'étiquetage est représenté par la figure 2b. Une renumérotation des zones est effectuée. A l'adresse un et deux de la mémoire des synonymes correspond la valeur un. Ainsi, le numéro de 1 O zone deux devient disponible et est exploité pour renuméroter la zone initialement numérotée trois. Pour ce faire, la valeur deux est enregistrée à l'adresse trois, qui contenait initialement la valeur trois. La mémoire de stockage est ensuite lue, sa sortie étant connectée sur l'entrée adresses de la mémoire des synonymes. A la valeur de zone un et 1 5 deux sont transmises en sortie de la mémoire des synonymes les valeurs un. A la valeur de zone trois est transmis le numéro deux suite à renumérotation des zones. Il s'agit là d'un exemple de réalisation d'un dispositif mettant en oeuvre le procédé d'étiquetage et cet exemple n'est pas limitatif. Excepté les circuits mémoire et CPU, tous les circuits décrits peuvent être réalisées à partir d'un circuit logique programmable plus connu sous l'appellation anglo-saxonne de "Programmable Logic Device" (PLD). REVENDICATIONS 1. Procédé d'étiquetage de régions d'une image vidéo définies par la juxtaposition de segments qui sont des portions de lignes de l'image, caractérisé en ce que, lors du balayage ligne de l'image, il incrémente puis attribue un label à chaque segment rencontré sur la ligne courante lorsque ce segment n'est connecté à aucun segment de la ligne précédente, il attribue le même label que celui affecté au segment de la ligne précédente lorsqu'il est connecté à ce segment, il attribue le même label que celui affecté au premier des segments de la ligne précédente auquel il est connecté lorsqu'il est connecté a plus d'un segment de la ligne précédente et en ce que, dans ce dernier cas, il mémorise le lien entre les labels des segments successifs connectés à un même segment de la ligne courante. 2. Dispositif mettant en oeuvre le procédé selon la revendication 1, caractérisé en ce qu'il comporte un compteur de segment (1) recevant les données relatives à l'image vidéo selon un balayage ligne et dont la sortie, qui fournit un numéro de segment, est transmise à l'entrée d'une mémoire ligne FIFO (2) et d'un comparateur (6) pour déterminer la connexion d'un segment avec un segment de la ligne précédente, ce comparateur recevant sur une entrée la sortie du compteur de segment et sur une autre entrée la sortie de la mémoire FIFO (2), la sortie du comparateur (6) déclenchant, lorsque le segment rencontré sur la ligne courante n'est connecté à aucun segment de la ligne précédente, un compteur de zone (9) fournissant le label et ce label étant mémorisé dans une mémoire de connectivité (3, 4) à l'adresse correspondant au numéro du segment rencontré. 3. Dispositif selon la revendication 2, caractérisé en ce que la mémoire de connectivité (3, 4) est constituée d'une première mémoire A (3) et d'une deuxième mémoire B (4) fonctionnant en mode flip-flop et en ce que, lorsque le segment rencontré sur la ligne courante est connecté à au moins un segment de la ligne précédente, la première mémoire (3) reçoit sur son bus adresse le numéro du premier segment connecté de la ligne précédente provenant de la mémoire FIFO pour fournir en sortie le numéro de zone correspondant, et la deuxième mémoire (4) mémorise ce numéro de zone transmis sur le bus données de la deuxième mémoire à l'adresse correspondant au numéro du segment rencontré fourni par le compteur de segment (1), le rôle des mémoires étant inversé à la ligne suivante. 4. Dispositif selon la revendication 2, caractérisé en ce qu'il comporte une mémoire des synonymes (11) qui reçoit, lorsque le segment rencontré sur la ligne courante est connecté à plus d'un segment de la ligne précédente, sur le bus données, I'information de la mémoire de connectivité (3, 4) contenue à l'adresse correspondant au numéro du premier segment de la ligne précédente mis en correspondance et, sur le bus adresse, I'information de la mémoire de connectivité (3, 4) contenue à l'adresse correspondant au numéro du segment suivant de la ligne précédente mis en correspondance, pour mémoriser la donnée à l'adresse reçue, et ainsi de suite pour tous les segments mis en correspondance avec le segment rencontré, le premier segment devenant le segment suivant. 1 5 5. Dispositif selon la revendication 4, caractérisé en ce qu'une renumérotation de zones est effectuée en fonction des contenus identiques à des adresses différentes de la mémoire des synonymes. 6. Dispositif selon l'une des revendications 2 à 5, caractérisé en ce que les données relatives à l'image vidéo correspondent à au moins un bit attribué à chacun des pixels de l'image, un segment étant défini par un ou une succession de pixels à l'état 1 encadrés par des pixels à l'état zéro sauf en début et fin de ligne.