FR 2586120 A1 19870213 FR 8512120 A 19850807 2586 120 Procédé et dispositif de transformation séquentielle d'image L'invention concerne le domaine du traitement d'images définies par des points élémentaires ou pixels présentant chacun une caractéristique, telle qu'une brillance, définie par la valeur numérique d'une fonc- tion. Elle concerne plus particulièrement un procédé de transformation séquentielle d'images, suivant lequel on définit un mode d'exploration de tout ou partie de l'image et on modifie la valeur de chaque point en fonc- tion d'un jeu de points associés prenant leurs valeurs dans une ou plusieurs images et se situant à l'intérieur d'une fenêtre linéaire ou surfacique glissante liée au point à transformer, identique pour tous les pixels et constituant élément structurant. Elle est susceptible d'application dans tous les domaines de l'analyse d'image et notamment dans ceux de la reconnaissance des formes et de la visualisation de produits industriels, en robotique en particulier. Les transformations séquentielles d'image sont connues depuis longtemps. On pourra par exemple en trouver une description dans l'article de A. Rosenfeld et Coil. "Sequential operations in digital picture processing" 3. ACM, Vol. 13, No. 4, 1966, pp. 471-494. Pour faciliter la compréhension de l'invention, on définira tout d'abord les transformations séquen- tielles et la terminologie qui sera adoptée et qui est celle couramment utilisée dans le domaine du traitement numérique d'image. Une image numérisée est constituée par une ma- trice de pixels à m lignes et n colonnes. Chaque pixel a une valeur ai.. appartenant à une famille finie de va- leurs v1..., vk. Dans la pratique, on adopte en général k = 2, s étant un nombre entier, (ce qui signifie que l'on représente chaque valeur par un nombre de s bits et 2 5 8 6 1 2 0 qu'on dispose de 2s niveaux de quantification). On définira les pixels voisins de chaque pixel donné par un graphe de voisinage, dont des exemples seront donnés plus loin, et qui sera naturellement dif- férent suivant que la trame utilisée est carrée ou hexa- gonale et que l'on étend plus ou moins loin la notion de voisinage. Une opération sur une image numérisée sera cons- tituée par une fonction transformant la matrice de l'image en une autre matrice. La fonction la plus géné- rale de ce type a donc m x n arguments si chaque pixel constitue un argument et si la matrice est à m lignes et n colonnes. On réduit le nombre d'arguments en effec- tuant des opérations dites "locales" ou "de voisinage". - t15 U__ne-ta_-_--de voisinage définit la valeur du pixel transformé en fonction uniquement de la valeur du pixel d'origine et des valeurs de pixels associés, pris dans un arrangement constant autour du pixel considéré. Cet arrangement constant constitue une fenêtre glissante liée au point à transformer. Les points peuvent prendre leur valeur dans une ou plusieurs images. Cette valeur peut être la valeur des points avant que la transforma- tion ait été mise en oeuvre: il s'agit alors d'une transformation parallèle. L'élément constituant n'est pas constitué forcément des voisins immédiats du point à transformer. La notion de voisins immédiats étant elle- même définie grâce à un graphe de voisinage, dont les différents types vont maintenant être examinés. A titre d'exemple, on donnera maintenant les principaux graphes de voisinage que l'on rencontre en pratique. Trame carrée: Deux graphes de voisinage sont couramment utili- sés. Ils correspondent respectivement à une connexité quatre et une connexité huit. Dans le cas de la connexité quatre, chaque pixel x a quatre voisins x1, x2, x3, x4, répartis comme suit: x2 x x x1 x x4 Les distances d entre le pixel considéré x et chacun des pixels voisins sont toutes égales. Dans le cas d'une connexité huit, chaque pixel x a huit voisins, x1,..., x8 et la répartition est la suivante: x4 x3 2 x x x 1 x6 x7 x8 Dans ce cas, la distance entre: - le pixel considéré x d'une part, chacun des pixels x1, x2, x5, x7, d'autre part, vaut dl = 5, - le pixel x d'une part, chacun des pixels x2, x4, x6, x8 d'autre part, vaut d2 = 7. Ces distances sont dans le rapport 7/5 = 1,4. peu différent de f2. Trame hexaqonale: On peut dans ce cas adopter une connexité six ou douze. Dans le premier cas, chaque pixel a six voisins x1i...., x6, tous à la même distance du pixel considéré x: x3 x2 x4 x x1 x5 x6 X5 6 Dans le cas de la connexité douze, chaque pixel a douze voisins x1..., x12 présentant la répartition x4 x6 X5 X3 x2 x7 x x1 x8 x9 x11 x12 x Dans ce cas, les distances entre x et tous les ]5 points d'indice impair sont égales et valent dl = 4, les distances entre x et tous les points d'indice pair va- lant d2 = 7. De cette manière, le rapport entre ces deux distances est de 1,75, proche de f3. Lors de la description de l'invention, on se contentera, pour des raisons de simplicité, de donner des exemples correspondant uniquement à des connexités particulières, particulièrement représentatives. Mais on verra que l'invention est dans tous les cas transposable aux diverses trames et diverses connexités possibles. Les transformations de voisinage sont classique- ment effectuées par traitement parallèle. La trans- formation est effectuée sur tous les points de l'image, indépendamment les uns des autres. Les arguments (aj-1 _-1...) pris en compte dans la transformation du pixel a.ij sont toujours les valeurs des pixels de voisinage dans l'image d'origine. On stocke chacune des nouvelles valeurs de pixel, c'est-à- dire la valeur a*.i pour le pixel a.., mais aucun pixel 2586 120 transformé n'est utilisé avant que la transformation n'ait été effectuée pour tous les m x n pixels. Ce mode de transformation présente un avantage qui, jusqu'à ce jour, a conduit l'homme du métier à l'adopter de façon quasi exclusive: les algorithmes sous-jacents sont conceptuellement simples et il est aisé de réaliser un dispositif pour les mettre en va- leur. De plus, le résultat de la transformation est indépendant du mode d'exploration de l'image, ce qui permet d'utiliser le mode usuel d'exploration des images ainsi que des générateurs d'adresse classiques. Mais il n'avait pas été pleinement apprécié que chaque trans- formation prise isolément est peu efficace et il faut généralement un grand nombre de passes successives avant d'obtenir le résultat final. Pour atteindre des vitesses élevées, il faut multiplier les processeurs dans un meme appareil, ce qui le rend complexe et très coûteux. Les transformations séquentielles, décrites dans l'article de Rosenfeld et Coll. déjà mentionné, présen- tent par contre la caractéristique de fournir un résul- tat qui dépend du mode et du sens de balayage de l'image d'origine. Si par exemple l'image numérique d'origine est explorée selon un balayage video classique qu'on ap- pellera "balayage video direct", c'est-à-dire ligne par ligne, de gauche à droite et de haut en bas, une trans- formation séquentielle donne, à partir du pixel d'ori- gine aij, le pixel transformé a*ij: a*i,j = f [ (a*k)k E P En clair, chaque fois qu'un pixel est transfor- mé, c'est sa nouvelle valeur, et non plus sa valeur dans l'image de départ, qui est utilisée comme argument pour transformer les points suivants qui le contiennent dans leur élément structurant. La formule (1) correspond au balayage dans le sens video direct. Dans cette formule, (a*k)k P(ij) est la famille des points du voisinage de ai.. qui ont déjà été rencontrés, lors du balayage de l'image avant le pixel a.ij et ayant de ce fait déjà acquis leur nou- velle valeur. kPar contre (a)kEF(i,j) désigne l'ensemble Fi, famille des points du voisinage du pixel considéré a.ij non encore rencontrés lors du balayage de l'image au moment du traitement du pixel aij.. L'algorithme correspondant à la transformation séquentielle dans le sens du balayage video inverse, c'est-à-dire. am am,...,. ami,am,.. ama amn' am,n-1' am1amln aM...1 a... 2n,.... a12, a11 découle directement de la formule (1). L'invention utilise notamment la constatation qu'il est possible, en effectuant une série de trans- formations séquentielles, et en inversant le sens du balayage à chaque nouvelle transformation, d'arriver à un résultat équivalent à celui d'une séquence bien plus longue de transformations parallèles. Mieux: dans la plupart des cas, le résultat est obtenu après un nombre fixe de balayages indépendant du contenu de l'image: le nombre fixe est le plus souvent égal à 2 (un aller- retour) ou 3. L'invention propose en conséquence un procédé de transformation d'image définie par des pixels présentant chacun une caractéristique, telle qu'une brillance, dé- finie par une valeur numérique, les pixels étant répar- tis suivant une matrice et leurs relations et distances fixées par un graphe de voisinage prédéterminé, procédé suivant lequel on explore tout ou partie de l'image sui- vant un mode d'exploration prédéterminé et on modifie la valeur de chaque pixel en fonction des valeurs d'un jeu 2586 120 de pixels associés, prenant leur valeur dans au moins une image et se situant à l'intérieur d'une fenêtre glissante liée au pixel à transformer, identique à tous les pixels et constituant élément structurant, caractérisé en ce que la transformée de chaque pixel est immédiatement substituée à la valeur précédente dans une mémoire d'image et en ce que, après symétrie ou rotation de l'élément structurant, la même transformation est répétée en utilisant un balayage en sens inverse du précédent. Il sera souvent avantageux de stocker temporairement les pixels transformés dans une mémoire locale en vue de les utiliser pour effectuer la transformation de voisinage sur au moins un point suivant du balayage. On peut qualifier le procédé qui vient d'être défini comme impliquant une ré-écriture immédiate de la nouvelle valeur a*i.. immédiatement après son calcul. Le procédé qui vient d'être défini peut être incorporé à de nombreuses transformations plus complexes et à des types de balayage autres que le balayage clas- sique par ligne et trame (balayage video), notamment de balayages suivant des diagonales de l'image. Le procédé de transformation à ré-écriture peut notamment être incorporé à des procédés d'érosion d'image, de détermi- nation de maxima régionaux, de reconstruction de grain et de squelettisation. Il est également applicable dans le cas o l'image numérique se limite à une image bi- naire, les niveaux de quantification de chaque pixel étant uniquement O et 1. L'invention sera mieux comprise à la lecture de la description qui suit de modes particuliers d'exécu- tion, donnés à titre d'exemples non limitatifs. La description se réfère aux dessins qui l'accompagnent. dans lesquels: - la Figure 1 est un synoptique montrant l'ar- chitecture générale d'un analyseur d'image permettant de mettre en oeuvre l'invention et comportant un processeur à ré-écriture, - la Figure 2 est un dispositif de stockage local et de ré-écriture en trame carrée, pouvant être incorporé dans le dispositif de la Figure 1 pour réali- ser la fonction ERODE et la reconstruction de grains, - la Figure 3 est un schéma destiné à faire apparaître la différence entre distance euclidienne et distance géodésique, - - les Figures 4 et 5 montrent, à titre d'exemples et pour le même ensemble X, la fonction ERODE euclidienne et la fonction ERODE géodésique condition- nellement à un ensemble particulier Y, - la Figure 6 est un synoptique d'un processeur permettant d'obtenir la fonction ERODE géodésique, - la Figure 7 est un synoptique d'un processeur permettant la reconstruction de grains avec ré-écriture, - la Figure 8 est un schéma d'un dispositif de stockage local pour des transformations parallèles en maille hexagonale, la Figure 8A est un synoptique montrant la modification à apporter au dispositif de la Figure 8 pour effectuer un stockage local et une triple réécri- ture, en vue de transformations séquentielles hexago- nales, - les Figures 9A à 9E sont des schémas illus- trant successivement une image binaire initiale, la fonction ERODE associée, la fonction RELIEF associée, le marquage de lignes de crête pour obtenir une ébauche de squelette et la remontée vers l'amont à l'issue de trois transformations séquentielles, la première dans le sens video direct, la deuxième dans le sens video inverse et la dernière encore dans le sens video direct, - la Figure 10 est un synoptique montrant une constitution possible d'un dispositif de détection des points crètes du squelette, 2586 120 - la Figure 11, similaire à la Figure 10, montre une constitution possible du dispositif de remontée vers l'amont du squelette, - la Figure 12 est un synoptique montrant un exemple de processus de traitement direction par direction. L'invention peut notamment être mise en oeuvre dans un analyseur d'image ayant une constitution géné- rale classique, telle que celle montrée en Figure 1, mais ayant un processeur morphologique à ré-écriture. L'analyseur de la Figure 1 comporte un organe 10 d'acquisition d'image (caméra ou enregistrement), dont les signaux de sortie sont numérisés dans un circuit 12, chaque pixel étant représenté par un nombre constitué de plusieurs éléments binaires ou "bits" (image numérique). Les signaux sont appliqués sur un bus d'écriture 14 re- lié à une mémoire de visualisation 16 ayant un contenu correspondant au nombre de pixels d'une image à fournir sur un organe de visualisation 18 tel qu'un tube cathodique. L'analyseur comporte deux bus de lecture ayant la même constitution, pouvant être reliés à d'autres parties, telles que des enregistreurs sur bande, etc. Les données circulant sur ces bus d'entrée sont appli- quées à une unité arithmétique et logique 24 pouvant réaliser des opérations d'addition, de soustraction, de recherche de minimum et de recherche de maximum entre pixels. La sortie de l'unité 24 est reliée à un pro- cesseur morphologique de voisinage 26 permettant de réaliser des transformations de voisinage parallèles. Les bus de lecture 20 et 22 sont également re- liés à un processeur morphologique 28. La sortie des processeurs 26 et 28 est appliquée, par un bus commun, a un circuit 32 dont le rôle est de fournir un critère d'arrêt du processeur à ré-écriture. Ce circuit effectue une mesure d'intégrale. Mais un critère d'arrêt plus avantageux peut être implanté dans le processeur lui- meme, pour toutes les transformations qui ne conduisent pas au résultat en un nombre fixe de transformations. En effet, il suffit d'un comparateur qui compare la valeur initiale et la valeur transformée de chaque pixel à son tour. Tant qu'un couple de transformation en sens direct puis en sens inverse modifie un seul pixel, un nouveau couple de transformations doit être mis en oeuvre. Le comparateur a comme entrées les valeurs des pixels a. et a..* (ancienne valeur et valeur transformée). La J sortie du comparateur constitue l'entrée d'une porte OU. La sortie de la porte OU est reliée à l'entrée d'une bascule capable de stocker un bit. Cette bascule, mise à zéro au début d'un couple de transformation, bascule à 1 dés que deux pixels ai.. et a. ij.* ont des valeurs dif- férentes. La sortie de la bascule est réinjectée dans la porte OU de manière à ce que la bascule reste bloquée à 1 jusqu'à la fin. Enfin, les bus sont reliés à une mémoire vive 30 ayant une capacité suffisante pour stocker deux ou trois images complètes et qu'on peut considérer comme en trois parties A, B et C. Afin que l'analyseur de la Figure 1 puisse mettre en oeuvre le procédé suivant l'invention, le pro- cesseur morphologique 28 est constitué de deux modules et 42. Le module 40 constitue dispositif de ré- écriture et a pour fonction de présenter au module 42, constituant processeur, tous les arguments dont il a besoin pour effectuer la transformation (1). De façon à minimiser le nombre d'appels à la mémoire d'image 30, le dispositif de ré-écriture 40 comporte avantageusement une mémoire locale 41 o sont stockés tous les pixels ayant déjà servi à la trans- formation des pixels rencontrés avant le pixel ai.. lors du balayage et qui vont encore servir pour transformer les pixels qui suivent le pixel aij. Dans d'autres ap- plications, la mémoire locale 41 est prévue pour rece- voir également des pixels à la fois avant et après a... Dès qu'elle est calculée par le processeur 42, la nouvelle valeur a*.. est inscrite dans la mémoire d'image 30 ainsi que dans la mémoire locale 41 du dis- positif 40 afin de servir d'argument pour la transfor- mation des pixels suivants Le processeur de ré-écriture 28 et sa mémoire auront une constitution qui dépend du type de trame et du graphe de voisinage adoptés. La Figure 2 montre' une constitution du processeur 28 utilisable lorsque le balayage est du type video, en sens direct et en sens inverse, correspondant à une trame rectangulaire. Mais, comme cela a déjà été indiqué, une trame hexagonale est utilisable. Dans le cas du balayage video direct, les va- leurs présentées au processeur 42 doivent être: a*i-1'j-1 a*ili a* i-,ja (2) a i,j-1 ai,j Dans le cas de la reconstruction de grains, on présente aussi la valeur bij issue de la mémoire B, au processeur 42. La mémoire locale 41 montrée en Figure 2 doit rendre simultanément disponibles, pour le processeur 42, le pixel sur lequel s'effectue la transformation et quatre pixels déjà transformés. Pour cela, elle comporte une mémoire vive 34, ayant une capacité correspondant à n-1 pixels. Cette mémoire est adressable en lecture et en écriture par le bus d'adresse 35. La sortie de don- nées de la mémoire 34 attaque deux éléments de mémori- sation 36 et 38 montés en cascade, ayant chacun une capacité d'un seul pixel (bascules en général). La 258 6 120 sortie du processeur 42 est reliée à l'entrée de la mémoire 34 et à l'entrée d'un élément de mémoire 44 ayant une capacité d'un seul pixel, ainsi qu'au bus d'écriture de la mémoire 30. Par ailleurs, la mémoire 30 est également re- liée, dans le cas représenté, à des éléments 46 et 48 de mémorisation dont la capacité est d'un seul pixel. On voit que les sorties de la mémoire 34, et des- éléments de mémorisation 36, 38, 44, 46 et 48 permettent de présenter simultanément au processeur 42 les valeurs de six pixels. Ces six valeurs sont appliquées sur des entrées El, E2,... E6. La transformation à effectuer détermine la constitution du processeur 42, la réparti- tion de pixels stockés dans les éléments de mémorisation et celle appliquée au processeur 42. Le montage représenté permet notamment d'obtenir la fonction érosion en trame carrée et la reconstruction de grains, comme on le verra plus loin de façon plus détaillée. On peut notamment disposer simultanément, à la sortie des divers éléments: - pour l'élément de mémorisation 46, du pixel aij, en même temps qu'il y a lecture du pixel a.ij dans la partie A de la mémoire et transfert en 46, - pour l'élément de mémorisation 48, du pixel b.ij, en même temps qu'il y a lecture du pixel b. dans la partie B de la mémoire. Quant aux autres éléments, ils fournissent, lorsque a*i. est appliqué à 34 et 44: - - pour l'élément de mémorisation 44, du pixel déjà transformé a* - pour la mémoire 34, la valeur déjà transformée ai-l.j+1; - pour l'élément de mémorisation 36, la valeur déjà transformée a*i1j - pour l'élément de mémorisation 38, la valeur 2586 120 déjà transformée a*. I-li,j-l' Les opérations sont synchronisées par un signal d'horloge H provenant de la base de temps du système. Lors du balayage en sens contraire, l'élément structurant associé à ai.. subit une symétrie par rapport au point aij. Ainsi, l'élément de mémorisation du dis- positif 41 qui contenait le pixel als pendant le bala- yage direct contient à présent le pixel a2il,2j'.. On décrira maintenant divers dispositifs permet- tant chacun de réaliser une transformation particulière, parmi les plus importantes. Fonction ERODE La fonction ERODE est déjà connue. On pourra consulter J. SERRA, "Image analysis and mathematical morphology", Academic Press, 1982, pp. 43-45 pour la définition de l'érosion et l'article de Rosenfeld déjà mentionné pour une définition de la fonction ERODE sous le nom "distance transformation". Il suffit ici de garder en mémoire que la fonc- tion ERODE d'une image binaire X, conditionnellement à une image binaire Y, est une fonction numérique, qu'on désigne par ERODEy(X) et qui est parfaitement définie par ses seuils successifs. Soit Sn le seuil de niveau n de la fonction ERODEy(X), il est défini par la relation de récurrence: So = X U Y Sn- = (S OE H) U Y, o 0 H représente la n-I plus petite érosion par un élément isotrope surfacique. Lorsque Y n'est pas vide, ERODEy(x) représente la longueur du plus court chemin allant de x à X et contournant Y, réalisé dans la Figure 3 par le chemin allant de x à z. Un cas particulier est celui o l'ensemble Y est vide. La distance géodésique se réduit alors à la dis- tance euclidienne xz0 de x (Figure 3). Les Figures 4 et 5 montrent, à titre d'exemple sur la trame carrée et pour le même ensemble X, la fonction ERODE euclidienne (Figure 4) et la fonction ERODE géodésique conditionnellement à un ensemble Y comportant quatre pixels suivant une disposition carrée (Figure 5). Avant de décrire la mise en oeuvre du procédé à l'aide d'un dispositif ayant la constitution montrée en Figures 1 et 2, on détaillera le procédé de traitement dans le cas particulier d'une trame carrée, en connexité huit et avec des distances vraies entre pixels, l'adap- tation à une autre trame ou à une autre connexité étant immédiate. Dans le cas le plus général, le procédé doit permettre de déterminer la fonction ERODE géodésique d'un ensemble binaire X conditionnellement à un ensemble binaire Y. Dans un mode avantageux, mais non exclusif, de mise en oeuvre du procédé, permettant de simplifier les calculs, on effectue une initialisation consistant à coder l'image initiale pour créer une image numérique transformée de départ F telle que: F(x) = Max si xE Y F(x) = Max-1 six E Xnl yC c c F(x) = O si x X C Y Max désignant la valeur maximum disponible 2 et YC étant le complément de Y. La partie courante du processus consiste à mettre en oeuvre, de façon répétitive, un groupe de deux passes successives, la première passe étant dans le sens video direct et la seconde dans le sens video inverse. Dans le cas euclidien, il suffit de deux passes successives pour obtenir le résultat. Dans le cas géodésique, il faut au contraire répéter la succession jusqu'à stabilité, c'est-à-dire 2586 120 jusqu'à ce que deux passes supplémentaires ne modifient plus aucun point, ce qui implique un test. Au cours de chaque passe, la configuration de voisinage est supposée etre, en trame carrée: a. 1 -i, j - i, j-1 ai+1,j-1 a. i-1, j a. 1,j 3.+1,j a. i-1, j+1 ai,j+l ai+,1j*+l Les règles de transformation de chaque point sont alors, pour le balayage video direct: si a.. = Max a*.. = Max L,3 1.-j sinon, a*. 1 ij = Min [aij. 5 + Min(ai_1, aijl) + Min(ai_ lj+1, ailj-1] Lors d'un balayage video inverse, on a par contre: si a.. = Max 1,] a*.. = Max j sinon, a* j = Min [aij, 5 + Min(a*ij+l' a*i+ljl + Min(a*. a* 7 + Min lorsque ai. n'est pas égal à Max, est diffé- on peut adopter: a*i È= Min [aij. 1 + Min (d*,e*,g*)] ou bien 2586 12O ai -Min [ai,, 4 + Min (d*,e*,g*), 7 + Min (c*,b*,f*)] o b, c, d, e, f, g ont la disposition suivante, lors du balayage direct, b c d e f 9 ai. a,j la disposition étant inversée pour le balayage video inverse. Il faut remarquer que, par rapport à l'article de Rosenfeld mentionné plus haut, l'introduction de deux distances différentes entre deux points adjacents sur les lignes horizontales et verticales d'une part, et sur les lignes diagonales d'autre part, constitue une inno- vation importante, car elle permet d'obtenir une repré- sentation des distances beaucoup plus fidèle. * Le processus peut alors être mis en oeuvre à l'aide du dispositif montré en Figures 1 et 2, le dispo- sitif 40 présentant au processeur 42 le voisinage sui- vant lors du balayage video direct (El à E5 désignant les entrées de 42): a*i aj1 a'i_ j a E5 E4 E3 a*i',j- aiîj i E2- E1E a*ij 1 j 52 51 et, lors du balayage video inverse: 2586 120 aij a*. E1 2 = a* a* a*i+1,j-1 a*i+1,j ai+1,j+1 E3 E4 E5 La constitution du processeur 42 peut alors être celle montrée en Figure 6, l'entrée E6 montrée en Figure 2 n'étant pas affectée. Le dispositif 42 de la Figure 6 comporte deux branches d'entrée. La première branche comporte un opé- rateur 52, constitué par un comparateur contrôlant un multiplexeur à deux voies d'entrée, fournissant sur sa sortie le minimum des deux valeurs appliquées sur son entrée. Ces deux entrées sont celles identifiées par E2 et E4 sur la Figure 2. La sortie F1 de l'opérateur 52 est envoyée dans une table de correspondance 54 qui transforme F1 en F'1 défini par: si F1 sinon, F'2 = Max. Les valeurs F'1 et F'2 sont appliquées sur les deux entrées d'un opérateur 56 qui fournit sur sa sortie le minimum G de F'1 et F'2 et l'applique sur l'une des entrées d'un comparateur 58 et d'un multiplexeur 64. La seconde entrée du comparateur 58 constitue l'entrée E1 du dispositif de ré-écriture 42. Ce compa- rateur a une constitution telle qu'il fournit, sur sa sortie, un signal J égal à: 1 si E1 est plus faible que G 0 dans le cas contraire. Le signal 3 est appliqué sur l'une des entrées d'une porte OU 60. L'autre entrée de la porte 60 est reliée à la sortie d'un comparateur d'égalité 62. Le signal de sortie H du comparateur 62 est égal à 1 si E1 = Max. Dans le cas contraire. H = O. On voit en conséquence que la sortie I de la porte 60 est égale à 3 si H vaut 0, donc si E1 n'est pas égal à Max. Le signal de sortie de la porte 60 est appliqué à l'entrée de commande du multiplexeur 64 dont la seconde entrée de données reçoit le signal El. Laporte détermine donc celle des entrées du multiplexeur 64 qui est reliée à sa sortie, qui constitue -la sortie S du processeur 42 relié au bus d'écriture en vue de l'écri- ture en partie B de la mémoire 30, dans la mémoire vive 34 et dans le registre 44. La fonction ERODE par traitement en ré-écriture selon des lignes d'orientation quelconque Il peut être avantageux de concevoir une archi- tecture d analyse d'image à l'aide de circuits intégrés du commerce ayant, dans le même bottier, une partie processeur et une partie mémoire. Il est alors intéres- sant de décomposer le traitement d'une image en tâches indépendantes à effectuer en parallèle, chaque tâche indépendante se voyant dédier un processeur. La fonction ERODE se prête bien à une telle décomposition en trans- formations séquentielles linéaires, c'est-à-dire qui n'utilisent et ne modifient que l'information contenue dans une ligne d'orientation donnée de l'image. Le traitement comprendra alors plusieurs passes, chacune modifiant le résultat de la passe précédente et tra- vaillant dans une direction différente. Pour une direc- tion donnée, le traitement de chaque ligne de l'image 2586 120 1 S est indépendant du traitement de toutes les autres lignes. Ainsi, le traitement de chaque ligne peut-il être confié à un processeur différent, tous ces pro- cesseurs travaillant en parallèle. Un autre avantage de cette façon de faire est de permettre de générer des éléments structurants beaucoup plus isotropes, en introduisant des directions non usuelles (telles que w/2 en maille hexagonale). La prise en compte de ces directions en balayage video conven- tionnel serait très coûteuse car elle exigerait l'emploi d'éléments structurants très grands. On va maintenant montrer comment peut s'effec- tuer un traitement ERODE en ré-écriture ligne par ligne, en se limitant pour simplifier au cas euclidien en trame carrée. L'image de départ sera codée comme suit (les notations étant celles déjà utilisées): F(x) = Max si x iE x F(x) = O sinon On traite alors l'une après l'autre chacune des directions: O, w/4, i/2, 3w/4, w, 5r/4, 3w/2, 7w/4 et, pour chaque direction, on exécute l'algorithme suivant: a* = Min(a* + k. a.) k. représentant la distance entre deux pixels consécu- tifs pour la direction d'exploration j, c'est-à-dire par exemple k = 5 pour les directions O, u/2, w, 3w/2; k = 7 pour les directions i/4, 3w/4, 5ff/4, 7w/4 en trame carrée. Pour réaliser cette transformation, on peut uti- liser un processeur du genre représenté en Figure 12 pour chaque ligne. Ce processeur comprend un microprocesseur 114 d'exploration et une mémoire vive d'image 116 accessible 2586 120 d'exploration et une mémoire vive d'image 116 accessible pixel par pixel, reliée au microprocesseur par un bus d'adresses 118. Etant donné que l'exploration des lignes d'orientation quelconque nécessite un générateur d'adresses plus élaboré que ceux qui sont utilisés ha- bituellement, une bonne solution consiste à utiliser un microprocesseur 114 en tranches microprogrammé. Le pro- cesseur comporte encore des blocs de porte ET 120 et 122 attaquant chacun un registre 124 ou 126. Le registre 126 est relié à une table de lecture 128 ayant un rôle simi- laire à celui des tables montrées en Figures 10 et 11. Enfin, un processeur 130 reçoit les sorties de 128 et 114 et fournit le minimum des valeurs reçues. Une entrée d'initialisation, non représentée, permet d'introduire la valeur MAX dans les registres 124 et 128. En fonctionnement permanent,. la mémoire 116 est lue selon une ligne dans la direction choisie pour le traitement et les valeurs des pixels a, a2...,. ai,... a sont présentées au processeur. n Lorsque la mémoire 116 présente la valeur a au registre 124, ce dernier présente la valeur a. au processeur 130. La sortie du processeur 130 a*. est écrite dans la mémoire d'image 116 ainsi que dans le registre 126 par le bus 132. La sortie a* du registre i-i 126 subit, dans la table 128, une addition: si a* i-1 Max-k, bi_ = a* i-+ k i-1 ' 1 i i- sinon, bi1 Max avec k = 5 lorsqu'on traite les directions: 0, n/2, a, 3r/2 k = 7 dans les directions: 1T/4, 3Ji/4, 51T/4, 7if/4 La valeur bi1 constitue la deuxième entrée du i-1 2586 120 processeur 130. On voit qu'on met ainsi en oeuvre l'al- gorlthme mentionné plus haut. Reconstruction de grains avec ré-écriture La reconstruction de grains constitue une transformation en elle-même connue, dont on pourra no- tamment trouver une description dans le livre de Serra déjà cité, pp. 401-403. Le résultat recherché par l'invention est d'ef- fectuer une reconstruction de grains numérique d'une image numérique A à partir d'une image numérique B. On répète pour cela, dans l'algorithme clas- sique, jusqu'à obtention de la stabilité, la mise en oeuvre de l'algorithme: A' = Min [A H, B] A' étant substitué à A pour l'opération suivante et H étant l'hexagone (ou le carré) élémentaire dans la trame. L'algorithme en réécriture ci-dessous permet d'atteindre le même résultat avec un nombre de passes bien plus faible qu'avec l'algorithme classique. Le dispositif de mise en oeuvre pourra encore être celui montré en Figures 1 et 2, mais avec un pro- cesseur 42 de constitution différente de celle montrée en Figure 6. Dans le cas particulier d'une trame carrée en connexité huit, le processeur 42 peut avoir la consti- tution montrée en Figure 7. Le voisinage étant celui déjà défini en (2) ci-dessus, il faut effectuer la transformation: a*i3 = Min[bi3, Max(ai, a*ij_1 a*ij+1 a*i-,, a*)]............................. (3) en balayage video direct. En balayage video inverse, le voisinage est in- versé et la transformation à effectuer sur chaque pixel de l'image numérique A s'effectue suivant l'algorithme: a*.. = Min[bi. Max(a. a* a * a* i3 j' zj' x.j+1 i+,j+l ' i+1,j' a*i+l.j 1)]............................ 3bis a*... (3bis> Pour cela, le processeur 42 doit recevoir, en balayage video direct, les entrées b.. sur E6 z3 (b désignant un pixel en partie B de la mémoire conte- nant l'image B) a*. 1 j sur E5 a*-.. sur E4 a* i-1,j+ sur E3 i-i1,j+1i a*. . sur E2 "1, j- a.. sur E1 I3 La présentation en balayage video inverse se dé- duit de la précédente par symétrie de l'élément structu- rant autour de a.ij Le processeur 42 comprend deux opérateurs d'en- trée 66 dont chacun est constitué par un comparateur suivi 'd'un multiplexeur. Le premier opérateur 66 par exemple reçoit les entrées E2 et E3 et fournit sur sa sortie un signal numérique représentatif de la plus grande des deux valeurs E2 et E3. Le second opérateur 66 a la même constitution mais reçoit les entrées E4 et E5. Les sorties des deux opérateurs 66 sont reliées aux deux entrées d'un second opérateur ayant la même constitution que les premiers, fournissant donc sur sa sortie un signal numérique représentatif du maximum de E2,..., E5. Un autre opérateur 70, identique au précédent, comporte une entree reliée à la sortie de l'opérateur 68 et une seconde entrée qui reçoit El. En conséquence, la sortie F de l'opérateur 70 représente le maximum de toutes les valeurs E1 à E5. Un dernier opérateur 72 reçoit la sortie de l'opérateur 70 et le signal E6, représentatif de b.. quel que soit le sens de balayage. La sortie S de z3 ce dernier comparateur, constituée par Min (F. E6) est écrite dans la mémoire d'image par le bus d'écriture et est réinjectée dans les mémoires 44 et 34 pour servir au traitement des pixels suivants. Squelettisation La squelettisation d'un ensemble de pixels re- présentés par des nombres binaires ou des fonctions numériques constitue l'une des transformations les plus utiles en analyse d'image. Elle permet de détecter l'axe médian d'un ensemble de pixels codés en binaire ou les "lignes de crête" d'un ensemble de pixels que l'on peut considérer comme représentant une fonction numérique. On trouvera une description de la squelettisation et des dispositifs classiquement utilisés à ce jour dans l'ouvrage de Serra mentionné plus haut, en pages 373 à 401 et 450 à 456. Les méthodes de squelettisation antérieures partent toutes du même principe: on enlève, par passes successives, des points du contour de chaque particule de l'image dont on recherche le squelette, ce qui cor- respond à des amincissements successifs de la particule. Des critères de voisinage permettent d'éviter de faire disparaître une particule, constituée par un ensemble de pixels, ou un trou ou de scinder la particule ou le trou. On fait de même, pour un ensemble représentable par une fonction numérique, en veillant à ce que le meme critère soit vérifié pour tous les seuils. Toutes les méthodes connues exigent un nombre de passes qui augmente avec la dimension des plus grandes particules à squelettiser dans l'image. Le procédé et le dispositif suivant l'invention qui vont maintenant être décrits permettent de simpli- fier considérablement l'opération: ils permettent de déterminer le squelette d'une particule en une séquence qui comprend: - une préparation rapide de l'image, - une squelettisation en trois passes (effec- tuées par exemple la première en balayage video direct, la seconde en balayage video inverse et la troisième en balayage video direct). On décrira maintenant tout d'abord la séquence générale de squelettisation puis, de façon détaillée, le cas de la construction du squelette euclidien d'un ensemble de pixels binaires. Procédé général Le procédé peut être regardé comme comportant au moins trois étapes (a) on génère un relief sans plateau, (b) on code éventuellement le relief du voisinage de chaque pixel de l'ensemble à squelettiser suivant un ai- gorithme de codage prédéterminé, (c) on marque les points crête sur le relief éventuellement codé et (d) on génère, sur ce même relief, l'amont des points crêtes par un procédé à ré-écriture tel que défini plus haut. A titre d'exemple, le procédé général sera dé- crit en supposant d'abord les pixels répartis suivant une trame non plus carrée comme dans les cas précédents, mais hexagonale. Le procédé sur trame carrée se fait de manière très semblable. Le passage d'une répartition en maille carrée à une maille hexagonale peut être effectué par transformation parallèle qui conduit à réaliser les voisinages suivants: - sur une ligne paire: 2586 120 ai-1 j 1-1, j a. 1,j-1 ai-1,j+1 a.. ai+1 j 1+1,j ai.+ 1 ai+1,j+1 - sur une ligne impaire: ai. - 13-1 a i-.,j-1 1-1,j-1 ai-1,j a. a. 1 5 ai, j.+ 1, j+ aj+l,j-1 ai+1,j et, pour avoir une présentation indépendante de la parité, on désignera également le voisinage par a b c d e f g Cette transformation peut être réalisée en uti- lisant le dispositif montré en Figure 8, qui comporte deux voies fonctionnant en alternance. Le dispositif montré en Figure 8 reçoit de la mémoire centrale 30, sur l'entrée E, la valeur de chaque pixel et il la stocke jusqu'à ce qu'elle ne soit plus utilisée par aucun élément structurant. Il décale ces valeurs à l'intérieur de la mémoire locale à chaque coup d'horloge de manière à présenter au processeur 42 (Fi- gure 1) le voisinage correct (a, b, c, d, e, f, 9) du point central et quelle que soit la parité de la ligne traitée. On constate en effet sur les deux voisinages de a..ij illustrés plus haut que, lorsque la ligne i est paire, les voisins a et f (respectivement b et g) ont le rang j (respectivement j+1) alors que, pour une ligne impaire, ils ont le rang j1 (respectivement j). Pour opérer un tel décalage une ligne sur deux, le dispositif comporte trois montages identiques 74-76, 82-84, 96-98. A titre d'exemple, la constitution du montage 74-76 sera détaillée. Il reçoit de la mémoire 30, la valeur ai1, j.2, au moment o a.ij est point central de 1,j l'élément structurant. Cette entrée est appliquée simul- tanément sur l'entrée d'un registre 74 et sur l'une des entrées d'un multiplexeur 76. La sortie du registre 74 constitue l'autre entrée du multiplexeur. Le multi- plexeur lui-même est commandé par un signal de parité sur son entrée 104. Dans une ligne paire, le multi- plexeur présente sur sa sortie l'entrée appliquée sur E. soit ai+1,j+2 alors que, dans une ligne impaire. il prend le contenu du registre 74, soit ai,j+1 La sortie du multiplexeur 76 alimente deux registres 78 et montés en cascade, permettant chacun de retarder d'un temps d'horloge la valeur du pixel qu'il reçoit en entrée. Ainsi, dans une ligne paire, les registres 78 et présenteront-ils sur leur sortie les valeurs des pixels ai+j+1 et ai+ j et, sur une ligne impaire, les valeurs des pixels ai+l, et ai+ j_1' On constate qu'on a bien les valeurs correctes des points f et g, voisins du point central d, sur ces sorties. Le montage doit présenter, à l'entrée d'une mémoire vive 86, la valeur du pixel ai+l, 1 quelle que soit la parité de la ligne. Pour cela, le montage 82-84 fonctionne en opposition avec le montage 74-76: lorsque le multiplexeur 76 choisit l'entrée du registre 74, le multiplexeur 84 choisit la sortie du registre 82. Ainsi leurs effets s'annulent. La mémoire vive opère comme un registre à déca- lage introduisant un retard de n-3 pixels. La sortie de la mémoire vive 86, soit a.j-2' est injectée dans une cascade de trois registres 88, 90 et 92 permettant de retarder chacun d'un temps d'horloge la valeur du pixel qu'il reçoit en entrée. Les sorties de ces trois registres constituent les points du voisi- nage e: ai j+1, d = aij, c = a. 1,j+1 1.3 z,3-l' La sortie du registre 92, soit aij_, est éga- lement reliée à l'entrée d'une mémoire 94 identique à la mémoire 86. La sortie de la mémoire vive 94, soit ai j+2 constitue l'entrée du dernier des trois montages registre-multiplexeur 96-98. L'ensemble du dispositif 96-98-100-102 est identique au dispositif 74-76-78-80 et fonctionne de manière synchrone avec ce dernier. Les sorties des registres 100 et 102 constituent ainsi les derniers points du voisinage b et a, valant respecti- vement ailj et ailj_1 lorsque la ligne traitée est impaire. Ce dispositif est légèrement plus compliqué que celui qu'on utilise habituellement pour le stockage local des transformations hexagonales parallèles. Mais, tel qu'il a été présenté, il a l'avantage de pouvoir se transformer aisément en un dispositif à ré-écriture, par une modification simple des connexions, comme le montre la Figure 8A. Dans le dispositif de la Figure 8, les pixels g, f, d, lus respectivement à la sortie des re- gistres 78, 80 et 90, sont réinjectés dans les registres suivants 80, 82 et 92. Dans le dispositif à réécriture de la Figure 8A au contraire, on injecte à l'entrée des registres 80, 82 et 92, les valeurs transformées g*, f* et d* qui auront été calculées par le processeur 42. On peut d'ores et déjà remarquer que l'on peut passer du dispositif montré en Figure 8 à un dispositif à ré-écriture, montré en Figure 8A, par une modification simple des connexions. Pour résoudre correctement les problèmes de bord de champ, l'image utile sera une sous-matrice M 2 2 n-2, n-2 commençant au point a22 de manière à laisser un cadre complet autour de l'image que l'opérateur peut configu- rer à son gré en fonction de la transformation et des effets de bord qu'il souhaite obtenir. Après avoir ainsi décrit le passage de la trame carrée à la trame hexagonale, on va décrire la séquence générale du procédé d'obtention de squelette, avant de s'attacher en détail au cas particulier de divers sque- lettes euclidiens binaires. La première étape consiste à effectuer une pré- paration de l'image par génération d'un relief. Cas d'une image binaire: On crée tout d'abord, par le procédé décrit plus haut sous la rubrique "Fonction érosion", la fonction ERODE de l'ensemble binaire X à squelettiser conditionnellement à l'ensemble binaire Y éventuel (si on est dans le cadre géodésique). Cette fonction ERODE permet de coder le relief au voisinage du pixel a de l'ensemble X à transformer. Dans le cas du voisinage suivant: a4 a3 a5 a a2 a6 a7 Il s'agit là uniquement d'un codage local: le pixel a, ainsi que tous ses voisins dont l'altitude est égale à celle de a dans la fonction ERODE seront codés à 1. Ceux dont l'altitude est supérieure à celle de a sont codés à 2. Ceux dont l'altitude est inférieure sont codés à 0. Cas d'une image numérique: Sur la fonction ERODE de l'image numérique, chaque pixel appartenant à l'ensemble Xn Y possède des pixels voisins plus bas que lui-même. Mais cette propriété n'est pas vraie pour une - fonction quelconque, qui peut présenter des plateaux. Pour pouvoir construire le squelette, il faut tout d'abord générer sur ces plateaux un relief compatible avec le relief de la fonction représentant l'ensemble de pixels numérique. La manière la plus simple pour atteindre ce ré- sultat consiste à construire le graphe d'écoulement du relief. Les sommets de ce graphe sont constitués par des pixels, et les arcs (au sens d'un graphe) partant d'un pixel a indiquent quels sont les voisins de a vers les- quels s'écoulerait une goutte d'eau placée en a. Ces arcs sont attribués de la manière suivante: - pour chaque pixel, on crée une flèche allant de ce pixel vers chacun de ses voisins plus petit que lui, - on complète le graphe d'écoulement, pour tenir compte de ce que les pixels n'ayant pas reçu de flèche au cours de la première étape sont ceux de l'intérieur des plateaux, en itérant jusqu'à stabilité l'opération de création d'une flèche de a vers tout pixel voisin b si la valeur de la fonction est la même pour a et b, b est déjà l'origine d'une flèche alors que a ne l'est pas. Au terme du fléchage, on a codé le relief au voisinage de chaque pixel, comme dans le cas binaire. Le pixel central et tous ses voisins non reliés par un arc au pixel central sont codés à 1. Ceux des voisins vers lesquels existe une flèche partant du pixel central sont codés à 0. Ceux des voisins dont part une flèche vers le pixel central sont codés à 2. Une fois le codage du relief effectué au voisi- nage de chaque pixel, la squelettisation proprement dite va s'effectuer en deux étapes sur le relief généré dans 2586'120 l'image, d'abord le marquage des points crêtes, puis le marquage de l'amont des points crêtes dans la fonction ERODE ou le graphe d'écoulement (cet amont appartenant lui aussi au squelette). Suivant une variante de réalisation on génère le relief sans plateau au cours de l'étape (a) par cons- truction d une fonction numérique équivalente au graphe d'écoulement en au moins un couple de deux passes: (al) on effectue en balayage video direct la transformation suivante sur chaque pixel d du relief de départ B: B*(d) = Min (l[B (d), 1 + Min [C(a), C(b), C(c)]} o la disposition des points a, b, c, d est celle donnée lors de l'exposé du procédé général. en page 25, B est une image auxiliaire initialisée à la valeur maximale possible pour les pixels, C(x) = Max - 1 si A(x) > A(d) C(x) = B(x) si A(x) = A(d) C(x) = -1 si A(x) A(y) ou A(x) = A(y) et, en même temps, B(x) > B(y). Marauaqe des points crêtes On utilise, pour cette opération, une mémoire binaire contenant initialement des 1 et en mettant à zéro tous les pixels qui appartiennent à une crête de l'image, et cela en une seule passe à travers l'image. Pour cela. on code les points de la façon suivante: (bl) le pixel x et les voisins d'altitude supé- rieure à x sont codés à 2, les pixels voisins de x d'altitude inférieure à x sont codés à 0, les pixels voisins du pixel x d'altitude égale à x prennent toutes les combinaisons possibles de valeur 0 et 2 de manière à obtenir une famille (Vi) de voisi- nages, et considère, au cours de l'étape c, un pixel x comme un point crète s'il existe un voisinage Vj appar- tenant à la famille (Vi) de x pour lequel un des trois cas suivants est réalisé: tous les voisins du pixel central valent 0 et la mise à zéro du pixel central supprimerait une particule constituée de. 2, la mise à zéro du pixel central crée un pont entre deux particules constituées de 0 qui n'avaient aucune connexion entre elles dans le voisinage de x, la mise à zéro du pixel central supprime la seule connexion existant entre deux particules consti- tuées de 2 qui n'ont plus d'autre connexion dans le voisinage de x. Cela signifie qu'on considérera un pixel a comme un point crête s'il entre dans une des catégories sui- vantes dans le cas d'une trame hexagonale: (i) a possède au moins quatre voisins égaux à 0 dans le codage du relief de son voisinage, (ii) a possède trois voisins égaux à 0, mais son voisi- nage ne peut pas être superposé, directement ou par rotation, à la configuration: a 0 O O un point (.) désignant soit un "un", soit un "deux". (iii) a possède deux voisins égaux à 0, mais son voisi- nage ne peut pas être superposé, directement ou par rotation, à la configuration: 2 2 a 0 0 (iv) a possède un voisin égal à 0, mais son voisinage ne peut pas être superposé, directement ou par rotation, à la configuration: 2 2 a o0 Dans le cas particulier euclidien binaire, les configurations de points crétes sont équivalentes aux suivantes: z x y 1 - x, y, z, t pris à rotation près t z 2 x y 1 1 - x et y pris à rotation près t 2 o 2 signifie que le pixel correspondant vaut 1 ou 0 mais pas 2 Y3 Y2 x y1 = 0 Y5 Y6 0 0 1 0 -x pris à rotation près O O qui sont plus concises et, dans certains cas, plus avan- tageuses. Dans le cas de connexité tera comme points crête tous les aucune des configurations: 0. 2. 2 2 2 2 0. 2 . 2 0 0 0 a.. 0. 2 2 0 0. O D 2 2 2 2 0 0 0 0. 0 2. 0 0 0 .. 2 2 2 huit et huit, on détec- pixels qui ne vérifient 0 0 0 0.. 0. 2 O 0. 0. 2 (o les pixels marqués par. valent 1 ou 2) ni aucune des configurations qui s'en déduisent par ro- tation ou symétrie. Aux points crête définis ci-dessus, on peut ajouter les extrémités des barbules. Dans le cas par exemple d'une trame carrée, on peut ajouter, aux configurations de points crête détectées les extrémités de barbules, c'est-à-dire les pixels qui vérifient, à une rotation près, au moins une des configurations: Y4 2 2 0 0 0 0 000 000 Les moyens de détermination de tronçons du sque- lette en trame carrée découlent directement de ce qui précède. Lorsque la trame est carrée et en connexité 4 pour le fond et l'image, la matrice étant carrée et le voisinage en connexité 4 pour la forme et en connexité 4 pour le fond, on code le voisinage de chaque pixel au cours de l'étape (b) de la façon suivante: le pixel central et ses voisins de même altitude sont codés à 1, les voisins d'altitude supérieure sont codés à 2, les pixels d'altitude inférieure sont codés à O, et en ce qu'au cours de l'étape (c) on détecte, comme points crête, tous les pixels qui ne vérifient aucune des configurations: 0..0 0 000 0 0 000 000 *22 2. . 0. 2 0.. 0. 0 222 222 222 22 22 2 (o les signes. signifient que la valeur du pixel vaut 1 ou 2) ni aucune des configurations qui s'en déduisent par rotation ou symétrie. Dans le cas de connexités huit pour la forme et quatre pour le fond, on détecte comme points crête tous les pixels qui ne vérifient aucune des configurations: 0. 0o. O 0 0 0 000 2.2. 2 0. 2. . 0.. 2 2 2 2. 0. 2 (o les signes. signifient que la valeur du pixel est indifférente) ni aucune des configurations qui s'en déduisent par ro- tation. Dans tous les cas, pour chacun des pixels de crête, la position correspondante en mémoire est mise à zéro. On obtient ainsi une ébauche de squelette, qui sera généralement en plusieurs fragments. Mais tout l'amont de ces fragments dans la fonction ERODE ou dans le graphe d'écoulement appartient également au sque- lette. Cet "amont" se définit pratiquement selon les mêmes principes dans tous les cas (binaire euclidien, binaire géodésique ou numérique). En trame hexagonale, on considère les douze pixels les plus proches du pixel considéré à partir duquel on veut déterminer le relief (ce pixel étant un point crête de départ ou un point amont au cours d'une remontée ultérieure). La disposition est alors la suivante: v4 v6 v5 v3 v2 v a v 7 v8 v9 vll v12 v10 Pour chacun des vecteurs av.i, on détermine la pente en divisant la différence de relief entre v. et a i par la distance a v.. Comme on l'a déjà vu plus haut à l'occasion de l'examen de la trame hexagonale, la distance av. vaut: i 1 pour les voisins immédiats v, v3, V5, V7 9, v v, il I3 pour les autres voisins, v2, v4, v6, v8, v10, v12. Pour avoir des valeurs entières dans le rapport 1/I3, on adoptera généralement des distances 4 et 7 respectivement. Quant à la différence de relief DR(v.,a), elle i est: - lue sur la fonction ERODE pour les ensembles binaires, - déduite du graphe d'écoulement pour les fonc- tions numériques (pixels à niveau de gris). Tout pixel v. d'altitude supérieure à celle du z pixel x et tel que la pente du vecteur xvi est supé- rieure aux pentes de xvi+l1 et de xvi_1, appartient à l'amont de x. L application de cette règle dans le cas euclidien binaire assure que le squelette obtenu est connexe. Il n'en est pas forcément de même dans le cas d'un relief plus général, et on est obligé de compléter le squelette lors d'une dernière passe: si v. est l'amont du pixel x sans appartenir à l'hexa- gone H de taille 1 centré en x, X alors x et v. ont deux voisins communs y et z apparte- nant à Hxqui a la configuration suivante: nant à H qui a la configuration suivante: X v. Vi y z x O Si ni y, ni z n'appartiennent au squelette, alors celui des deux points y et z d'altitude la plus haute (les deux s'ils sont d'altitude égale) appartient également au squelette. On peut ainsi, à partir des points crêtes donnant une ébauche du squelette, construire l'amont en trois passes par un processus de réécriture pouvant mettre en oeuvre le dispositif montré en Figure 8, en prenant en compte un voisinage de douze points. Cas particulier de la construction du squelette d'un ensemble de pixels binaires, dans le cas euclidien (ensemble Y vide) La Figure 9A montre, à titre d'exemple, un ensemble binaire que l'on peut considérer comme repré- sentatif, les cercles indiquant les pixels ayant l'un des niveaux (celui correspondant à là forme), les points indiquant les pixels ayant l'autre niveau (celui cor- respondant au fond). La structure locale du relief peut alors être représentée par une fonctionRELIEF à quatre états, obtenue à partir de la fonction ERODE (représentée sur la Figure 98): RELIEF{a) = O si a EXc RELIEF(a) = 1 + [2+ ERODE(a), modulo 3] dans le cas contraire. Dans la formule ci-dessus [N,modulo 3] signifie la congruence de N modulo 3, N étant l'entier égal à ERODE(a). On obtient ainsi la représentation montrée en Figure 9C. Il est important de noter qu'en toute généralité on peut détecter le squelette aussi bien sur la fonction ERODE, sur le graphe d'écoulement ou sur la fonction RELIEF. Des trois représentations, c est la fonction RELIEF qui a l'information la plus pauvre et cette in- formation est suffisante pour construire le squelette dans le cadre euclidien binaire. Pour les autres cas de figure, géodésique ou numérique, il faut recourir au graphe d'écoulement ou à la fonction ERODE. Le circuit de détection des points crêtes du squelette peut avoir la constitution montrée en Figure 10. Ce circuit comporte deux tables de correspondance et 111, ayant chacune huit entrées et six sorties. Chacune de ces tables peut être constituée par une mémoire morte de 256 octets. Les tables 110 et 111 sont destinées à recoder le relief local autour d'un point central a de la manière suivante: - le point central et ceux des points voisins v qui ont une valeur égale au point central sont codés à 1, - les points d'altitude supérieure au pixel central sont codés à 2, - les points d'altitude inférieure au pixel central sont codés à 0. Il est donc nécessaire de coder chaque pixel sur deux bits, le bit de poids faible étant identifié par l'indice 2 et le bit de poids fort par l'indice 1. Un troisième bit, repéré par l'indice 3, indi- quera si le pixel considéré appartient (et le bit 3 vaudra alors 0) ou n'appartient pas (et le bit 3 vaudra 1) au squelette. La correspondance entre les nouvelles valeurs V et les anciennes valeurs v (bits V et V2) est alors 1 2 donnée par le tableau suivant (a étant le point central, v un voisin de a) : 2586 120 Valeurs initiales Valeurs finales (MSB) (LSB) v a v1 v2 a1 a2 V V V 0 1 0 0 0 1 0 0 0 3 1 I 1 0 1 0 0 0 1 1 0 1 0 1 0 1 1 2 1 1 0 0 1 1 O 2 1 2 0 1 1 0 0 0 0 2 2 1 O 1 0 1 1 - 3 2 1 1 1 O 1 O 2 2 3 1 O 1 1 0 0 0 3 3 1 1 1 1 0 1 1 1 3 O 1 1 1 0 2 La valeur finale de a est 1 dans tous les cas. Le circuit de la Figure 10 comporte un organe de traitement logique 112 qui reçoit les sorties des deux tables 110 et 111, représentant la nouvelle valeur, codée sur deux bits, de chacun des pixels voisins du point central du relief. L'organe 112 peut être consti- tué par un réseau logique programmable (réseau de portes PAL 18L 4 par exemple) dont chaque colonne fournit une entrée ou une entrée complémentée. Dans ce réseau lo- gique programmable vingt portes ET à quarante entrées sont disponibles. Ces quarante entrées sont les entrées (ou les entrées complémentées) du réseau logique pro- grammable. Chacune de ces portes ET est capable de réa- liser un élément structurant. Par exemple, on peut im- plémenter sur une ligne le voisinage: a b 0 1 c d e = 1. 2 f g 2 2 Ce qui correspond à la fonction: T1= a 1n a2 b1 b2M e1( e2P 91g 92e f1e f2e l1n c2 Dans cette formule a, b, c, e, f et g désignent les six points voisins du point central, de gauche à droite et de haut en bas, a1 et a2 étant les bits de poids fort et faible, respectivement. Cinq autres portes ET peuvent être utilisées pour implémenter les éléments structurants découlant du précédent par des rotations successives de 60'. Dans le dernier étage du réseau logique programmable, on obtient la valeur S1 = (T1 U... T6) présente sur la sortie 17. On peut de même réaliser les six éléments struc- turants R de la forme: O O0 1 1 2 2 découlant les uns des autres par rotation de 60 La valeur S2 = R1 U R2 U R3 U R4 sera présente sur la sortie 18 et S3 = R5 U R6 sera présente sur la sortie 19; Il en va de même des éléments structurants P de la forme: 0 0 2 1 2586 120 La valeur S4 (P1 U P2 U... P6) sera alors présente sur la sortie 20. Enfin, le groupement de tous les éléments structurants pourra être effectué à l'aide d'une porte NON-ET 124 opérant sur les sorties 17, 18, 19, 20. Le signal résultant S peut être écrit en mémoire centrale et constitue le troisième bit du point central, égal à O si le pixel a est un point de crête, à 1 dans le cas contraire. Remontée vers l'amont A l'issue de l'opération précédente, on dispose uniquement de tronçons du squelette. Pour relier ces tronçons et former le squelette complet, il est néces- saire de remonter vers l'amont. Cette opération se fait en trois passes: - - la première dans le sens video direct pour les directions - 11/6, - N/3, - 11/2, - 2 113, - 5 n/6 - la seconde dans le sens video inverse pour les directions n11/6, n11/3, n11/2, 2 1n/3, 5 n1/6, nI - la dernière dans le sens video direct pour la direction 0. Seule la première opération effectuée en ba- layage video direct sera ici décrite, les deux autres s'en déduisant directement. Il suffit, pour un voisinage de taille 1 et pour chaque pixel a, de disposer simultanément des deux bits de relief A1 et A2 ainsi que du bit A3 indiquant si a est un pixel de crête ou appartient à l'amont d'un pixel de crête. Pour cela, les bits 1 et 2 peuvent être retardés dans un dispositif de traitement en parallèle tel que celui illustré en Figure 8. Par contre, le bit de poids fort subit un triple processus de ré-écriture. 2S86 120 Dans le voisinage a b c d e f 9g la remontée vers l'amont - dans la direction - N/6, peut se faire - dans la direction - 11/2, peut se faire dans la direction -5n/6, peut se faire - dans la direction - n11/3, peut se faire an _ di ion2 3 peutse faire ------Tu - dans la diLz-eut.Luio--2/-3 -peut-se faire de c à g de b à g de e à f de a à d de b à d et toute l'information sur le relief local se trouve à l'intérieur du voisinage de taille 1. A rotation près, la remontée vers l'amont dans les directions -N/S, -11/2, -511/6 se fait avec les mêmes règles. A titre d'exemple, la remontée dans la direction -5N/6 se fait de e à f lorsque: - e est un élément du squelette, donc le bit E3 vaut O, d e vaut. f 9g 1 0 ou 2 1 On met alors le bit F3 à 0, sinon on sa valeur. Ce qui s'exprime par: lui garde F3* - NOT (F3 U X U Y) avec X = E3t E1 nE2r eTrmG2% F15 F2 Y = E3n E1l E2n G1 G2r Fle) F2 A rotation près, la remontée dans les directions 11/3, -21/3 se fait avec les mêmes règles pour les deux directions. A titre d'exemple, la remontée de a à d se 1 1 2 1 fait lorsque: - a est un élément du squelette donc le bit A3 vaut 0, a. O d e vaut. 1 1 f. 1 On met alors le bit D3 à O, sinon on lui garde sa valeur. Ce qui s'exprime par la fonction NON [ D- U [A3 'AÂr AZrF1eIF2rNE1E2]] L'ensemble des fonctions logiques exprimant la remontée vers l'amont dans les différentes directions peut être implémenté par exemple en mettant en oeuvre un montage du genre déjà illustré en Figure 10, mais associé aux dispositifs montrés en Figures 8 et 8A. Une telle disposition est schématisée en Figure 11. Il est possible et avantageux, dans certains cas, de remonter vers l'amont suivant une direction seulement à la fois, et de répéter la remontée vers l'amont pour chacune des quatre, six, huit ou douze directions de la matrice. Enfin, on peut compléter le squelette en tous les points o un point du squelette et son point amont, ne sont pas reliés par un chemin de points contigus du squelette, en -rajoutant les points contigus qui cons- tituent un tel chemin de longueur minimale. REVENDICATIONS 1. Procédé de transformation d'image définie par des pixels présentant chacun une caractéristique, telle qu'une brillance, définie par une valeur numérique, les pixels étant répartis suivant une matrice et leurs relations et distances fixées par un graphe de voisinage prédéterminé, procédé suivant lequel on explore tout ou partie de l'image suivant un mode d'exploration prédé- terminé et on modifie la valeur de chaque pixel en fonc- tion des valeurs d'un jeu de pixels associés, prenant leur valeur dans au moins l'image et se situant à l'in- térieur d'une fenêtre glissante liée au pixel à trans- former, identique pour tous les pixels et constituant élément structurant, caractérisé en ce que la transfor- mée de chaque pixel est immédiatement substituée à la valeur précédente dans une mémoire d'image et en ce que, après symétrie ou rotation de l'élément structurant, la même transformation est répétée en utilisant un balayage en sens inverse du précédent, puis éventuellement répé- tée encore dans le sens direct avec l'élément structu- rant d'origine. 2. Procédé selon la revendication 1, caractérisé en ce qu'on stocke temporairement les pixels transformés dans une mémoire locale (41) en vue de les utiliser pour effectuer la transformation de voisinage sur au moins un point ultérieur du balayage. 3. Procédé de production de la fonction ERODE d'une image binaire X conditionnellement à une image binaire Y, caractérisé en ce que: on effectue une initialisation consistant à coder l'image initiale X pour créer une transformée de départ F telle que: F(x) = Max si xEY F(x) = Max1 si xe X NYc F(x) = 0 si X X c yc et on met en oeuvre, de façon répétitive, deux passes 2586 120 successives l'une dans le sens video direct et l'autre dans le sens video inverse au cours desquelles on effec- tue une transformation d'image à ré-écriture suivant la revendication 1, la transformation de chaque pixel étant, pour le balayage video direct: si a.. = Max a*.. = Max l,3 *1,j sinon, dans le cas d une trame carrée, a*i. = Min [ai.,, 5 + Min(ai1j. aij-1) 7 + Min(ailj+1l' ai-_l,ij_ et étant inversée pour le balayage video inverse. 4. Procédé de production de la fonction ERODE d'une image binaire X conditionnellement à une image binaire Y, caractérisé en ce que: on effectue une initialisation consistant à coder l'image initiale X pour créer une transformée de départ F telle que F(x) = Max si xE Y F[x) = Max1 si xe XnYc F(x) = O si xXCyc Yc et on met en oeuvre, de façon répétitive, deux passes successives, l'une dans le sens video direct et l'autre dans le sens video inverse, au cours desquelles on ef- fectue une transformation d'image à ré-écriture suivant la revendication 1, la transformation de chaque pixel étant, pour le balayage video direct: si a. = Max a*. = Max sin, dnlec d'gj i,j sinon, dans le cas d'une trame hexagonale, a*.. = Min [ai j., 1 + Min (d*,e*,g*)] z, ji 2586 120 ou bien a*.i = Min [aij. 4 + Min (d*,e*,g*), 7 + Min (c*,b*,f*)] ou b. c, d, e, f. g ont la disposition suivante, lors du balayage direct, b c d e f a la disposition étant inversée pour le balayage video inverse. 5. Procédé de production de la fonction ERODE d'une image binaire X conditionnellement à une image binaire Y dans le cas euclidien, les images étant cons- tituées de pixels alignés suivant des lignes dans plu- sieurs directions d'orientation déterminée, caractérisé en ce que: on effectue une initialisation consistant à coder l'image initiale X pour créer une transformée de départ F telle que: F(x) = Max si x 6Y F(x) = Max-1 si.x Xn YC F(x) = O si xZX cnYC et on met en oeuvre, de façon répétitive, deux passes successives l'une dans le sens video direct et l'autre dans le sens video inverse, pour toutes les lignes d'une même desdites directions à la fois, au cours de laquelle on effectue une transformation d'image à ré-écriture suivant la revendication 1, la transformation de chaque pixel étant, pour le balayage video direct: a* Min (a*. + k., a.i) i i-j 3 i k. représentant la distance entre deux pixels consécu- tifs pour la direction d'exploration j, c'est-à-dire par exemple k = 5 pour les directions O, w/2, w, 3w/2; k = 7 pour les directions w/4, 3w/4, 5w/4, 7r/4, en trame carrée, et on répète l'opération pour chacune des directions à son tour d'un sous-ensemble desdites direc- tions. 6. Procédé de reconstruction de grains numé- riques d'une image numérique A à partir d'une image nu- mérique B, selon la revendication 1, caractérisé en ce que, les pixels étant répartis suivant une matrice en trame carrée, on répète, jusqu'à obtention de la stabi- lité, la transformation suivante en balayage video direct: a*. = Min[bi.. Max(a..ij a*. a*. _ a* i-j i3 13 j i,-l1,j+1' i-l,j' i-l,j-1 a*., désignant la valeur ré-écrite du pixel a.., et la transformation correspondante en balayage video inverse. 7, Procédé de reconstruction de grains numé- riques d'une image numérique A à partir d'une image nu- mérique B, selon la revendication 1, caractérisé en ce que, les pixels étant répartis suivant une matrice en trame hexagonale, on effectue la transformation sui- vante, en balayage video direct: a*ij: Mintbij, Max (ai., g*, d*, e*)] o g, d et e ont la disposition suivante: d e g ai, j et on effectue la transformation inverse en balayage video inverse. 8. Procédé de squelettisation d'une image définie par un ensemble de pixels présentant chacun une caractéristique, telle qu'une brillance, définie par une valeur numérique, les pixels étant répartis suivant une matrice, caractérisé en ce que: (a) on génère un relief sans plateau, ou on complète le relief existant en supprimant ses plateaux, (b) on code éventuellement le relief du voisi- nage de chaque pixel de l'ensemble à squelettiser suivant un algorithme de codage prédéterminé, (c) on marque les points crête sur le relief éventuellement codé et (d) on génère, sur ce même relief, l'amont des points crête par un procédé à ré-écriture selon la revendication 1 ou 2. 9. Procédé selon la revendication 8, caractérisé en ce qu'au cours de l'étape (a) on génère le relief sans plateau sous forme de la fonction ERODE de l'ensem- ble lorsque cet ensemble est binaire, ou de la fonction ERODE géodésique de l'ensemble X des pixels condition- nellement à un ensemble Y lorsqu'on veut obtenir le squelette d'un ensemble X binaire conditionnellement à l'ensemble Y également binaire. 10. Procédé selon la revendication 9, carac- térisé en ce que, l'image étant constituée de pixels binaires, on code le relief sous forme d'une fonction RELIEF ne pouvant prendre que les quatre valeurs suivantes: - RELIEF(x) = O si ERODE(x) = O RELIEF(x) = 1 + [ERODE(x)+2 modulo 3] dans le cas contraire. 11. Procédé selon la revendication 8, caracté- risé en ce que, l'ensemble à squelettiser étant numé- rique, on génère le relief sans plateau au cours de l'étape (a) par construction d'un graphe d'écoulement en au moins deux passes: (al) lors de la première passe, on crée une flèche d'un pixel x0 vers un pixel voisin x1 lorsque l'altitude de x0 est supérieure à l'altitude de x1, (a2) lors de la passe ou des passes suivantes, et jusqu'à ce qu'aucune flèche ne soit plus créée, on crée une flèche de x0 vers x1 lorsque xO et x ont la même altitude, sont voisins et que x1 possède une flèche partante, mais non pas xO, xO étant par convention à une altitude supérieure à x1 si on peut passer de x0 à x1 par un chemin de flèches toutes descendantes. 12. Procédé selon la revendication 8, caract-éri- sé en ce qu'on génère le relief sans plateau au cours de l'étape (a) par construction d'une fonction numérique équivalente au graphe d'écoulement en au moins un couple de deux passes: (al) on effectue en balayage video direct la transformation suivante sur chaque pixel d du relief de départ A ayant l'environnement: a b c d B*(d) = Min B (d), 1 + Min [C(a), C(b), C(c)] o B est une image auxiliaire initialisée à la valeur maxi- male possible pour ladite fonction, avec C(x) = Max - 1 si A(x) > A(d) C(x) = B(x) si A(x) = A(d) C(x) = -1 si A(x) le pixel x étant considéré comme ayant une altitude su- périeure à un pixel y si on a: A(x) > A(y) ou A(x) = A(y) et, en même temps, B(x) > B(y). 13. Procédé selon la revendication 9, 10 ou 11, caractérisé en ce qu'au cours de l'étape (b), on code les points de la façon suivante: le pixel x et ses voisins d'altitude supérieure à x sont codés à 2, les pixels voisins de x d'altitude inférieure à x sont codés à 0, les pixels voisins du pixel x d'altitude égale à x prennent toutes les combinaisons possibles de valeur 0 et 2, de manière à obtenir une famille (Vi) de voisi- nages. et en ce qu'on considère, au cours de l'étape c, un pixel x comme un point crête s'il existe un voisinage V. de x appartenant à la famille (Vi) pour lequel un des trois cas suivants est réalisé: tous les voisins du pixel central valent O et la mise à zéro du pixel central supprimerait une particule constituée de 2, la mise à zéro du pixel central crée un pont entre deux particules constituées de O qui n'avaient aucune connexion entre elles dans le voisinage de x, la mise à zéro du pixel central supprime la seule connexion existant entre deux particules consti- tuées de 2 qui n'ont plus d'autre connexion dans le voisinage de x. 14. Procédé selon la revendication 8, caracté- risé en ce que, la trame étant carrée et l'image 2586 120 comportant des particules susceptibles de présenter des barbules dont les extrémités ne font pas partie des points crête, on détecte au cours de l'étape (c), en plus des points crête, les pixels ayant un nombre de voisins d'altitude inférieure à la leur, supérieur à un nombre prédéterminé, afin de retenir les pixels consti- tuant l'extrémité de barbules. 15. Procédé selon l'une quelconque des reven- dications 8 à 14, caractérisé en ce qu'on retient uni- quement un sous-ensemble de toutes les configurations de points crêtes et, éventuellement, de points d'ébarbulage en appliquant un critère de sélection supplémentaire prédétermine. 16. Procédé selon la revendication 13, caracté- risé en ce que, la matrice étant hexagonale, on code le voisinage de chaque pixel au cours de l'étape (b) de la façon suivante: le pixel central et ses voisins de même altitude sont codés à 1, les voisins d'altitude supérieure sont codés à 2, les pixels d'altitude inférieure sont codés à O, et en ce qu'au cours de l'étape (c) on détecte, comme points crête, tous les pixels qui ne vérifient aucune des configurations: 2. 2 2 2 2 1 0 ou 1.ou . 1 2 300 0 0 0 0 (o les pixels représentés par. valentO, lou 2) ni aucune des configurations qui s'en déduisent par ro- tation. 17. Procédé selon la revendication 13, caracté- risé en ce que, la matrice étant hexagonale, et en euclidien binaire, on détecte comme points crête les 2586 120 points dont le voisinage est, à une rotation près, O O 0 1 0 ou 1 1 O O (o 2 signifie que le pixel en question vaut 0 ou 1 mais pas 2) et en ce qu'on détecte également comme points crête quatre pixels à la fois lorsqu'ils présentent la configuration suivante: 1 1 18. Procédé selon la revendication 8, caracté- risé en ce que, la matrice étant carrée et le voisinage en connexité 4 pour la forme et en connexité 4 pour le fond, on code le voisinage de chaque pixel au cours de l'étape (b) de la façon suivante: le pixel central et ses voisins de même altitude sont codés à 1, les voisins d'altitude supérieure sont codés à 2, les pixels d'altitude inférieure sont codés à 0, et en ce qu'au cours de l'étape (c) on détecte, comme points crête, tous les pixels qui ne vérifient aucune des configurations: 0. 2. 2 2 2 2 00 000 0 0. 2... . . 0. 2 222 222. 2 2 0 0 0 0.. 2 2 0 0 0 0O. 0 2. 2586 120 (o les signes. signifient que la valeur du pixel est indifférente) ni aucune des configurations qui s'en déduisent par rotation ou symétrie. 19. Procédé selon la revendication 13, caracté- risé en ce que, la trame étant carrée, en connexité 8 pour la forme et en connexité 4 pour le fond, on détecte comme points crête tous les pixels qui ne vérifient aucune des configurations: 0. 2. 2 2. 0 0. . 2 2. 0 0. 0. 2 2. a 0 0 2 - 0 0 0 0. . 0. 2 (o les signes. signifient que la valeur du pixel est indifférente) ni aucune des configurations qui s'en déduisent par ro- tation ou symétrie. 20. Procédé selon la revendication 13, caracté- risé en ce que, la trame étant carrée, en connexité 8 pour la forme et pour le crête tous les pixels qu figurations: 0. 2.2 0.2 .2 2 22 0 0 0 0.. 2 2 0 0. . 2 2 2 2 fond, on détecte comme points i ne vérifient aucune des con- 0 0 0 0. 0 2. 0 O O .. 2 2 2 0 0 0 0.. 0. 2 00. 0 O. 0. 2 (o les signes. signifient que la valeur du pixel est indifférente) ni aucune des configurations qui s'en déduisent par ro- tation ou symétrie. 21. Procédé selon la revendication 18, 19 ou 20, caractérisé en ce qu'on ajoute aux configurations de points crête détectées les extrémités de barbules, c'est-à-dire les pixels qui vérifient, à une rotation près, au moins une des configurations: 2 2 0 0. o 000 000 22. Procédé selon l'une quelconque des revendi- cations 13 à 21, caractérisé en ce que, au cours de l'étape c, on marque les pixels amont x1 des points crête x0 précédemment détectés, en considérant qu'un pixel x1 est l'amont d'un pixel x0 si l'altitude de x1 est supérieure à celle de x0 et si, dans un élément structurant prédéterminé entourant xO, la pente du vec- teur x0 x1 est plus forte que la pente des deux vecteurs adjacents les plus proches, ayant x0 pour origine et ayant pour extrémité des points de l'élément structu- rant. 23. Procédé selon la revendication 22 destiné à l'établissement d un squelette géodésique ou d'un sque- lette en maille carrée, caractérisé en ce qu'on déter- mine les pixels amont suivant une direction seulement à la fois, et en ce que l'on répète la remontée vers l'amont pour chacune des quatre, six, huit ou douze directions de la matrice. 24. Procédé selon la revendication 22, caracté- risé en ce que, après codage de chaque pixel et de son voisinage conformément à la revendication 16, la matrice étant hexagonale, on marque x1 comme appartenant au squelette quand on sait que x0 lui appartient déjà et lorsque, à une rotation près, x0 et x1 occupent les configurations: xo X 1 o0 1 1 ou xo x 1 ou x x 1 1 1 o 1 1 25. Procédé de squelettisation selon la reven- dication 8, caractérisé en ce que, les pixels étant numérisés sur plusieurs éléments binaires, on complète le squelette, en tous les endroits o un point du sque- lette et son point amont ne sont pas reliés par un che- min de points contigus du squelette, en rajoutant les points contigus qui constituent un tel chemin de lon- gueur minimale. 26. Dispositif de mise en oeuvre du procédé selon la revendication 1, caractérisé en ce qu'il comprend: - un processeur morphologique d'ouverture (26) comportant une sortie reliée à un bus d'écriture (14) et une entrée reliée à deux bus de lecture (20, 22) par l'intermédiaire d'une unité de calcul (24) pouvant ef- fectuer les opérations d'addition, de soustraction, de recherche de minimum et de maximum entre pixels présents simultanément sur les bus d'entrée, - une mémoire d'image (30) comprenant plusieurs parties de capacité suffisante pour stocker chacune une image complète, dont l'entrée est reliée au bus d'écri- ture (14), permettant d'appliquer simultanément sur les deux bus de lecture (20, 22) les représentations numn- riques de deux pixels correspondants de deux images stockées, - et un processeur morphologique de traitement d'image avec ré-écriture relié aux bus de lecture et agencé pour fournir sur le bus d' écriture un pixel re- construit à la fois, pour enregistrement dans la mémoire d'image (30). 27. Dispositif selon la revendication 26, carac- térisé en ce qu'il comprend de plus une mémoire locale. 28. Dispositif selon-la revendication 27, carac- térisé en ce que la mémoire locale comprend une première branche ayant un registre à décalage (34) ayant une ca- pacité égale au nombre de pixels d'une ligne de balayage moins un, placé en cascade avec des éléments de mémori- sation temporaire (36, 38) ayant une capacité d'un seul pixel et une seconde branche ayant au moins un élément de mémorisation (44), les entrées des deux branches étant connectées de façon à recevoir le pixel courant au cours du balayage de la mémoire d'image. 29. Dispositif selon la revendication 26, 27 ou 28, de réalisation de la fonction ERODE, caractérisé en ce que le processeur de ré-écriture comprend des moyens numériques destinés à rechercher le minimum entre les valeurs des pixels ré-écrits du voisinage du pixel a y courant et à coder ce minimum à une valeur transformée dépendant de sa valeur primitive, des moyens pour com- parer ledit minimum codé au pixel courant, et un multi- plexeur dont la sortie fournit ladite valeur minimale ou la valeur du pixel courant selon le résultat de la com- paraison entre le pixel courant, ledit minimum et la valeur maximale représentable. 30. Dispositif de squelettisation comprenant un 2586 120 dispositif de détermination des points crête du sque- lette opérant sur les pixels obtenus à partir des résul- tats fournis par un dispositif selon la revendication 26, 27 ou 28. 31. Dispositif de squelettisation d'une image constituée de pixels binaires disposés suivant une trame carrée, comportant des moyens de réalisation de la fonc- tion ERODE suivant la revendication 29, caractérisé en ce qu'il comprend, en amont de ces moyens, des moyens à réécriture pour passer à une maille hexagonale, com- portant trois montages identiques placés en cascade (74, 76: 82, 84; 96, 98) d'un registre à une position et d'un multiplexeur commandé par un signal de parité, le second montage fonctionnant en opposition avec le pre- mier et le troisième et les montages étant séparés par des mémoires vives fonctionnant en registres à décalage fournissant un retard correspondant au nombre de points de chaque ligne, moins trois, des moyens pour substi- tuer, aux valeurs de pixels d'origine, les valeurs de pixels recalculés pour réécriture en mémoire. 32. Dispositif selon la revendication 27 de réalisation de la fonction ERODE en réécriture, direc- tion par direction, suivant une trame carrée, caracté- risé en ce qu'il comprend, pour chacune des directions, une mémoire vive d'image (116) accessible pixel par pixel, un microprocesseur (114) d'exploration de la mémoire, des blocs de portes ET (120, 122) attaquant chacun un registre (124, 126), le registre 126 étant relié à une table de lecture (128) relié, ainsi que l'autre registre (124), à un processeur fournissant le minimum des valeurs qu'il reçoit, ledit processeur (130) renvoyant des valeurs calculées à la mémoire vive pour écriture du résultat ainsi que dans une des portes ET (122) attaquant un des registres (126) pour réécriture.