FR 2549259 A1 19850118 FR 8411067 A 19840712 p ROCEDE ET DISPOSITIF DE RECONNAISSANCE DE CARACTERES La présente invention concerne l'identification d'objets ou signes pouvant être convertis en représentation bidimensionnelle binaire dans le but de leur identification, et plus particulièrement le dispositif d'identification de 05 données telles que des caractères manuscrits. Plus précisément, cette invention a pour but un dispositif de reconnaissance optique, et notamment le dispositif de reconnaissance de caractères qui permet de lire à grande vitesse, et avec une grande précision, des caractères 10 manuscrits alphanumérisés En conséquence, le but de la présente invention est de mettre en oeuvre un nouveau procédé et de réaliser un nouveau dispositif pour la reconnaissance de tels caractères. Des systèmes pour la reconnaissance optique de carac15 tères sont déjà connus De tels systèmes sont déjà décrits dans les Brevets Américains 3 159 815, 3 196 398, 3 303 465, 3 417 372, 3 541 511, 3 609 685, 3 629 828, 3 723 970, 3 737 855, 3 766 520, et 4 097 847 Ues systèmes de reconnaissance de caractères ont évolués depuis ceux qui permettent d'iden20 tifier des lettres et chiffres imprimés uniquement par des machines, jusqu'à ceux qui permettent l'identification, avec un degré de précision relativement important, de caractères manuscrits placés dans un champ présélectionné Cependant, pour des raisons qui seront brièvement exposées ci-après, 25 les systèmes de l'art antérieur qui permettent de reconnaître des caractères manuscrits alphanumérisés n'ont pas connu un réel succès commercial. Un système commercial pratique pour l'identification d'un caractère manuscrit rencontre deux exigences pratique30 ment contradictoires Ainsi: le taux de rejets et de substitutions doit être très faible pour des données ayant la qualité rencontrée habituellement dans le domaine de lecture optique de caractères Cependant, pour justifier le coût très important d'un tel équipement, un système de lecture de 35 caractères manuscrits doit avoir un important taux de "résolution" de données Dans l'art antérieur, la performance d'un équipement permettant la lecture de caractères manuscrits se dégradait rapidement quand la qualité des données devenait plus faible Pendant qu'il y a des systèmes rela40 tivement simples qui permettent la lecture à grande vitesse de données d'excellente qualité, de tels systèmes sont caractérisés par une rapide augmentation des rejets et substitutions quand la qualité des données diminue Ces systèmes complexes de lecture de caractères qui ont la possibilité 45 d'analyser des données de faible qualité, en particulier d'analyser des différences subtiles de forme entre deux détails, sont caratérisés par un taux de résolution de données trop lent pour une utilisation commerciale. La présente invention a pour but de pallier les 50 désavantages et inconvénients brièvement exposés ci-dessus, en produisant une technique nouvelle et perfectionnée particulièrement bien adaptée à l'identification de caractères alphanumérisés manuscrits, caractérisée par des taux excessivement bas de rejets et de substitutions et un haut pou05 voir de résolution de données L'invention utilise une technique de reconnaissance de modèle de structure syntactique, pour obtenir la grande vitesse opérationnelle requise pour des données de haute qualité, tout en étant capable d'analyser en profondeur une information d'entrée, avec 10 simplement une diminution modérée de la vitesse opérationnelle quand la qualité des données diminue Le dispositif selon la présente invention comprend une logique spéciale grande vitesse qui est utilisée-dans les parties de l'algorithme de reconnaissance qui sont utilisées fréquemment, et 15 une logique programmée détaillée pour des analyses complexes moins fréquentes, comme celle pour un prototype de caractère particulier. Selon la présente invention, les données d'entrée obtenues à partir d'un détecteur d'image conventionnelle sont 20 soumises en série aux deux étapes d'un pré-traitement Ce pré-traitement comprend un traçage de contour suivi d'une extraction de traits Pendant le traçage de contour, est tracé le pourtour d'un caractère ou de l'image d'un objet qui ont été lus et stockés dans une mémoire L'information 25 sur la configuration des vecteurs-mouvement ou des trains de codes qui indiquent les changements de direction entre les points du pourtour est obtenue pendant le traçage et est stockée dans une mémoire train-de-codes L'extraction de traits est le traitement d'analyse des données de la mémoire 30 train-de-codes pour déterminer la présence de traits géométriques prédéterminés sur le contour de tout segment (ou morceau) d'une image, par exemple d'un caractère Selon une application privilégiée de la présente invention qui permet l'identification de caractères manuscrits, il est utilisé 35 huit traits géométriques prédéterminés et leur position dans la "boîte à caractères" et la direction de chaque trait sont des particularités identifiables intéressantes L'extraction de traits est, elle-même, un traitement à deux étapes Dans la première étape, les données de tracé de 40 contour stockées dans la la mémoire train-de-codes sont cherchées pour que des régions de courbure convexe ou concave et des points du pourtour du caractère soient identifiés comme "points d'intérêt" s'ils recontrent certaines conditions prédéterminées Ensuite, ces "points d'intérêt" 45 sont mis par catégories selon des types de traits La logique d'extraction de traits calcule également l'aire d'un tracé de contour fermé, ou d'une partie, la distance approximative entre deux points du contour, l'emplacement absolu et relatif des points à l'intérieur d'un rectangle, la 50 direction de la courbure du contour aux alentours d'un point de ce contour, et l'aire approximative de la déviation par rapport à une ligne droite Le traitement d'extraction de traits peut aussi localiser un point sur une partie prédé- terminée du contour proche d'une autre point déjà déterminé et calculer la distance approximative entre ces deux points L'information obtenue par pré-traitement est mise en code et stockée sous la forme de mots simples Ainsi, après 05 le traçage du contour et l'extraction de traits, un caractère est représenté par une ou plusieurs listes de mots simples Le nombre de mots simples dans une liste dépend de la complexité du caractère. Selon la présente invention, l'étape suivante est un 10 traitement de classification dans lequel les mots simples sont comparés à des prototypes stockés dans une série de tests exécutés à grande vitesse Un combinaison particulière de tests pour n'importe quel caractère prototype peut être établie en "règle" En résultat des tests par ces "règles", 15 le caractère pourra être accepté, ou bien soumis aux tests d'une autre règle qui représente un autre caractère Les caractères qui ne sont acceptés par aucun prototype sont rejetés Puisque l'information qui représente le caractère devant être lu est stockée sots une forme réduite et adap20 tée, il est aisé d'exécuter des tests répétitifs, et puisque chaque prototype peut facilement être décrit, le traitement de classification est réduit à un nombre de tests standardisés qui peuvent être utilisés à très grande vitesse. La présente invention pourra être mieux comprise et 25 ses avantages et objectifs plus apparents aux hommes de l'art, à la description suivante fait en regard des dessins annexés, les mêmes références numériques correspondant aux mêmes éléments des différentes FIGURES, et dans lesquels: FIGURE 1 est un bloc diagramme d'un dispositif 30 selon une première réalisation de la présente invention, FIGURE 2 est un diagramme fonctionnel qui décrit les différentes opérations exécutées sur les données fournies, utilisant la réalisation de la FIGURE 1, FIGURE 3 est une représentation d'un caractère 35 stockés tel que lu d'après la mémoire-ligne du dispositif de la FIGURE 1, cette FIGURE 3 indiquant les valeurs des mouvements faits au cours du traçage du contour du caractère, FIGURE 4 est une table de mouvements qui indique les étapes' qui seront reconnues par le dispositif de la 40 FIGURE 1 pendant le traçage d'un caractère, FIGURE 5 est un bloc diagramme fonctionnel de la logique de tracé de contour du dispositif de la FIGURE 1, FIGURE 6 est un bloc diagramme fonctionnel du contrôleur de tracé et un séquenceur de lecture de la 45 mémoire-ligne du circuit décrit FIGURE 5, FIGURE 7 est un bloc diagramme fonctionnel du comparateur du circuit de la FIGURE 5, FIGURE 8 est une représentation graphique de l'action filtrante réalisée par le circuit de la FIGURE 5, FIGURE 9 est une représentation de la technique de recherche de régions fermées et de segments, utilisée en association avec le traitement de traçage de contour, FIGURE 10 est une représentation de traits géo- métriques qui peuvent être identifiés par la présente invention et, en conséquence, utilisés pour déterminer des caractères, FIGURE 11 A, il E et 11 C sont respectivement un 05 exemple de caractère lu par le dispositif de la FIGURE 1, l'image dans la mémoire-ligne de ce caractère, et le tracé de contour de ce caractère, FIGURE 12 A et 12 B sont des taoles de contrôle de niveau utilisées par la logique d'extraction de traits du 10 dispositif de la FIGURE 1, FIGURE 13 est un graphique angulaire décrivant les transitions de niveau et les points intéressants sur le contour de l'image dans la mémoire-ligne du caractère représenté dans la FIGURE 11 A, FIGURE 14 est une classification des données d'après le graphique de la FIGURE 13, FIGURE 15 représente l'emplacement et le type de chaque trait sur le tracé du caractère de la FIGURE 11 C, FIGURE 16 A, 16 B et 16 C représentent un bloc dia20 gramme fonctionnel de la logique d'extraction de traits du dispositif de la FIGURE 1, FIGURE 17 est une représentation du traitement d'extraction de traits, FIGURE 18 décrit la structure et l'utilisation 25 des listes-règles en accord avec la présente invention, FIGURE 19 un diagramme fonctionnel pour un test par une règle particulière, FIGURE 20 est un code pour la règle de la FIGURE 19, FIGURE 21 A et 21 B représentent l'image d'un caractère et sa liste de traits, FIGURE 22 est un exemple de caractère avec ses listes- règles associées, FIGURE 23 est un exemple de deux autres images de 35 caractères représentant des séquences de tracés, FIGURE 24 est un diagramme fonctionnel d'un tableau de mots simples, FIGURE 25 A, 25 B et 25 C sont un diagramme fonctionnel pour un test de traits comprenant des traits "non 40 désirés", FIGURE 26 est un exemple de deux caractères pouvant se confondre,et FIGURE 27 est un exemple de deux autres caractères pouvant être confondus. En référence à la FIGURE 1, un lecteur optique de caractères selon la présente invention est illustre sous forme d'un bloc diagramme Les données, extraites du contour d'une aire lue sur un document, sont fournies par des moyens de détecteur d'images 10 Le détecteur 10 comprendra d'une 50 manière typique, soit un dispositif à charges de type couplé, soit un tube de séquenceur d'image Selon une mise en oeuvre particulière de l'invention, la résolution spatiale sélectionnée est de 144 points par 2,5 cm suivant les deux -5 axes x et y de la surface d'analyse Le détecteur d'image 10 lira une portion pré-sélectionnée d'un document transporté dans un enregistrement avec le détecteur, cette portion de document étant d'une taille appropriée pour permettre une 05 accumulation de données suffisantes pour cerner complètement un caractère ou plusieurs caractères. Le détecteur d'image 10 devra fournir un signal analogique proportionné aux variations de contraste dans la portion de circuit à analyser Cette donnée analogique est 10 numérisée dans un convertisseur 11 analogiquenumérique La sortie du convertisseur 11 devra typiquement fournir une information d'échelle de gris proportionnellement à huit niveaux présélectionnés de teinte foncée, c'est-à-dire, de trois "bits" de précision Le convertisseur 11 peut, si 15 nécessaire ou désiré, fournir une compensation pour des variations dans le contraste du papier, des conditions d'éclairement ambiant, etc Les données numérisées fournies à la sortie du convertisseur 11 sont délivrées, via un interface de données 20 video 12, à un système 13 de stockage dynamique de données d'accès aléatoire comprenant un contrôleur 14 de mémoireligne et une pluralité de plans 16 de mémoires-lignes. L'interface de données video 12 organise et contrôle l'écriture des données vers la mémoire-ligne 13, en réponse aux 25 commandes fournies par un processeur de reconnaissance 18 via le bus entrée/sortie 19 Ces commandes comprennent la remise à zéro et le départ pour les informations d'interfaçage et d'adressage, spécialement les coordonnées "page" illimitée des données devant être chargées dans la mémoire 30 13 Ces coordonnées "page" seront fonction de l'endroit du document à lire o l'information proportionnée aux données numériques à traiter était située Le processeur de reconnaissance 18 fournit aussi des coordonnées de mémoire-ligne qui représentent des données enregistrées et numérisées 35 devant être stockées dans les plans de mémoires-lignes. La mémoire dynamique 13 d'accès aléatoire, comme déjà noté, comprend une mémoire-ligne qui peut être du type décrit dans le Brevet Américain 4 120 049 Le contrôleur 14 est un système à double entrée, ce qui permet de le comman40 der par le bus entrée/sortie 19 ou par un bus de mémoireligne 20 Le contrôleur 14 peut aussi être contrôlé par l'interface 12 Le contrôleur 14 comprend un circuit de coordonnées de mémoire, pour transmettre les coordonnées de la mémoire-ligne, qui comprennent l'information d'adressage 45 reçue de l'interface 12 via les bus 19 et 20, vers les plans de mémoires-lignes dans lesquels sont stockées les données numérisées de telle manière que l'on puisse lire en sortie de la mémoire 13 en mode parallèle, et dans des modules 4 x 4 par exemple, en réponse aux commandes de lecture de sortie 50 fournies via le bus 19 par le processeur 18, ou via le bus de la façon décrite ci-dessous La mémoire- ligne 13 comporte un trait "d'entourage" suivant la coordonnée y Ainsi,la mémoire 13 peut fonctionner comme une mémoire qui semble être plus grande dans la direction y qu'elle ne l'est réellement Les données stockées dans la mémoire-ligne peuvent être lues par le processeur de reconnaissance 18, un accumulateur de points noirs 22 et une logique de tracé 05 de contour 24 Une séquence de niveaux de seuil basés sur la fréquence des niveaux de gris variés dans une image est prédéterminée expérimentalement Le niveau de seuil aboutit aux données émises par les plans 18 de mémoires-lignes, proportionnellement à l'image noir/blanc des données fournies par 10 le détecteur d'image 10, c'est-à-dire que toutes les données lues en sortie des plans de mémoires-lignes seront classées étant soit au-dessus, soit au-dessous, du niveau de seuil calculé Ces images noir/blanc seront définies par bits ou points. L'accumulateur de points noirs 22 comporte une logique commandée par séquenceur un accumulateur et un comparateur PROM qui, en réponse aux commandes émises par le processeur 18 et sur la base d'un caractère par caractère, accumulent des points noirs sur une surface déterminée. 20 L'accumulateur de points noirs 22 et la logique de tracé de contour 24, dans le dispositif étudié, pourront lire séparément les données stockées dans les plans de mémoires-lignes 16 La séquence dans laquelle les données stockées dans la mémoire-ligne sont analysées sera contrôlée par le proces25 seur de reconnaissance 18 A titre d'exemple, la lecture de sortie de la mémoire-ligne peut être commutée de la logique de tracé de contour 24 vers l'accumulateur 22 quand la logique de tracé de contour 24 accomplit le tracé d'un segment La logique de tracé de contour 24, à la réception 30 de l'ordre de commencer le traçage du contour d'un segment ou d'une région enfermée d'un caractère débutant aux coordonnées, c'est-à-dire à l'adresse de mémoire, o se produit une transition blanc-noir ou noir-blanc, selon la manière décrite ci-dessus, tracera le contour du segment ou de la 35 région enfermée du caractère sur lequel s'est produite cette transition Quand le contour du segment ou de la région enfermée a été complètement tracé, comme indiqué par un retour à la lecture d'adresse de mémoire-ligne à partir de laquelle le tracé commença, le processeur de reconnais40 sance 18, en association avec l'accumulateur 22, exécutera certains tests qui détermineront si le contour du caractère a été complètement tracé, c'est-à-dire des tests qui déterminent s'il peut y avoir des segments non connectés et/ou des régions enfermées oubliées pendant le tracé de contour 45 initial L'accumulateur de points noirs 22 et la logique de tracé de contour 24 seront décrits ci-après en plus grand détail. Le processeur de reconnaissance 18 comprend un microcalculateur programmable d'usage général qui contient une 50 mémoire 26 Le programme pour communiquer avec un processeur à données multiples est stocké dans la partie mémoire pouvant être seulement lue, dite ROM, de la mémoire 26, tandis que l'algorithme de reconnaissance de caractères et les -7 programmes sont stockés dans la partie mémoire à accès aléatoire, dite RAM, de la mémoire 26. Un lecteur optique de caractères selon la présente invention comprend de plus une logique particulière 28, qui 05 aide à l'extraction de traits d'après les données de tracé de contour, et un interface 29 processeur à données multiples La logique d'extraction de traits 28 reçoit et stocke provisoirement des données de "mouvement", c'est-à-dire des trains de codes, élaborées par la logique de tracé de con10 tour 24 La logique d'extraction de traits 28 est connectée au bus entrée/sortie 19 et contrôlée par le processeur de reconnaissance 18 Les informations résultant d'une pluralité de calculs spécifiques effectués sur les trains de codes sont émises par la logique l'extraction de traits 28 Ces 15 informations sont utilisées par le processeur 18 pour déterminer le mots simples qui définissent les caractères. Avant de décrire en détail la construction et le fonctionnement de l'accumulateur de points noirs 22, de la logique de tracé de contour 24 et de la logique d'extraction 20 de traits 28, il sera d'abord décrit la fonction de chacun de ces trois systèmes La présente invention emploie une technique de reconnaissance de modèles structuraux, c'est-àdire que la structure associée à un modèle est déterminée, mise en code et alors utilisée pour identifier ce modèle De 25 plus, selon la présente invention, cette mise en code et cette identification seront exécutées avec une grande vitesse Plus précisément, chaque caractère que le système doit reconnaître sera défini par une description compacte de son contour et de certaines de ses caractéristiques topologi30 ques, telles que régions enfermées et segments La présence ou l'absence de traits sur le contour et de caractéristiques topologiques sont confirmées par une procédure d'une séquence de tests. Selon la présente invention, dans le but de fournir 35 la description compacte nécessaire du contour de caractère et des caractéristiques topologiques, on utilise deux étapes de prétraitement des données numérisées stockées dans les plans de mémoireslignes 16 Ces deux étapes de prétraitement comprennent le traçage de contour, dans la logi40 que de tracé de contour 24, et l'extraction de traits, obtenue à partir des résultats des calculs effectués dans la logique d'extraction de traits 28 L'information obtenue par ce prétraitement est mise en code et stockée dans la mémoire 26 du processeur de reconnaissance, sous la forme 45 d'une liste compacte de mots simples à l 6 bits Ainsi, après pré-traitement, un caractère d'entrée pourra être représenté par une ou plusieurs listes de mots simples le nombre de mots simples dans chaque liste dépendant de la complexité du caracqtère La procédure de classification, qui est exécutée 50 par le processeur de reconnaissance 18, comporte la comparaison des listes de mots simples correspondant au caractère d'entrée avec celles des prototypes stockés Cette comparaison et les tests supplémentaires nécessaires pour recon- naître certains modèles difficiles seront plus amplement étudiés ci-dessous. Le traçage de caractère constitue le procédé de localisation de tous les segments non connectés et des régions 05 entourées d'un caractère Utilisé ici, le terme de "segment" signifie une aire entourée par un seul tracé extérieur continu fermé et comprend des traits, c'est-à-dire des lignes et points Une "région enfermée" est une aire entourée par un seul tracé intérieur continu fermé Une région entou10 rée est toujours située à l'intérieur d'un segment Dans le but de décrire entièrement le contour du caractère, chacun de ses segments et régions entourées doit être trouvé et son contour tracé Selon la présente invention, une technique train-decode est employée pour la mise en code du 15 contour, c'est-à-dire un train de codes à huit directions, et la logique de tracé de contour 24 fournit ainsi une série de séquences train-de-code qui décrit entièrement le contour du caractère pour la logique d'extraction de traits 28. Selon la présente invention, huit traits géométriques 20 sont définis et le contour de tout segment ou région entourée est analysé pour rechercher la présence de ces traits pré-déterminés La première étape de cette analyse de contour est une recherche de courbure pour des points 'intéressants" pour identifier les points du contour pour lesquels 25 la courbure est la plus forte, et ce, dans chaque région de courbure La valeur de la courbure peut être, ou positive pour une coubure convexe, ounégative pour une courbure concave Chaque point "intéressant" est caractérisé comme un des huit types de traits et une direction et une position 30 seront associées à chaque trait Huit directions et seize positions sont possibles pour chaque trait Pour faciliter l'identification des traits, et pour déterminer leur interrelation, la logique d'extraction de traits 28 fournit les résultats de plusieurs calculs. Pour que la logique de tracé 24 puisse réaliser un tracé, un premier point noir approprié doit être localisé sur le pourtour du tracé Ceci est accompli par le processeur 18 avec l'aide de l'accumulateur de points noirs 22. Une fenêtre' de recherche de segment est divisée en une 40 série de colonnes, qui peuvent par exemple être larges de quatre bits, qui sont examinées de gauche à droite Si l'on trouve qu'une colonne contient au moins un nombre présélectionné de points noirs, comme accumulés par l'accumulateur 22, les données de mémoire-ligne correspondant a cette 45 colonne sont examinées par le processeur 18, de haut en bas, pour localiser une transition noir-blanc ou blanc-noir Les coordonnées du point noir situé à la transition et la direction de la transition, c'est- à-dire la direction dans laquelle l'examen progressait lorsque la transition fut détec50 tée, sont délivrées à la logique de tracé de contour 24 et le traçage du contour du caractère peut commencer. La procédure de traçage de contour consiste à suivre le pourtour de tous les segments et régions entourées du 4 2 s -9 caractère Quand chaque point noir du pourtour est trouvé, la direction depuis le point précédent est enregistrée comme "mouvement" ou élément de train de code Ainsi, l'information de tracé, qui sera stockée dans les mémoires de train 05 de code 750, 752, ou 754 qui contiennent une partie de la logique d'extraction de traits 28, consistera en des vecteurs "mouvement", c'està-dire des éléments de train de codes qui indiquent la direction entre points noirs adjacents sur le pourtour des segments du caractère et de ses 10 régions entourées La FIGURE 3 montre un exemple de tracé de caractère manuscrit, la convention des coordonnées utilisée dans la mémoire-ligne 13 étant définie dans le coin gauche supérieur Les flèches entre points noirs indiquent les mouvements nécessaires pour joindre un point noir au point 15 noir suivant et sont une représentation vectorielle des éléments de train de codes Chacun de ces mouvements est mis en code par un nombre à six bits, qui comprend l'élément de train de codes Les éléments de train de codes sont déterminés en trouvant le point noir suivant sur un segment du 20 contour, en tournant dans le sens des aiguilles d'un montre, et en utilisant les déplacements en x et en y pour former l'élément de train de codes en accord avec la convention d'un repère de système de vecteurs-mouvement Tous les vecteurs de ce système ont une amplitude unitaire et une des 25 huit directions (voir FIGURE 4), l'information-direction à six bits permettant une rotation de plus de 360 degrés Les éléments de train de codes sont numérisés par une valeur comprise entre zéro et sept qui dépend de la direction de recherche A partir de ce point, les éléments de train de 30 codes auront un déplacement net négatif d'octet "-10 " pour un tracé dextrorsum autour de l'extérieur d'un segment, et un déplacement net positif d'octet "+ 10 " pour un tracé intérieur senestrorsum L'information-élément train de codes pour un " 2 " est décrite FIGURE 3 Il faut noter que les 35 éléments de train de codes deviennent plus négatifs lorsque le tracé d'une section du caractère est convexe, et deviennent plus positifs lorsque le tracé est concave Le bit le plus significatif du code-déplacement à six bits doit être interprété cbmme bit de reconnaissance. Quand les données correspondantes aux caractères à reconnaître sont stockées dans les plans 16 de mémoireslignes, la mémoire-ligne doit être accessible, ce qui est réalisé via le bus 20 de mémoires-lignes La logique de tracé de contour 24 peut incrémenter et décrémenter, via le 45 contrôle 14 de mémoires-lignes, les adresses de lecture de la mémoire- ligne, les cyles de lecture nécessaires et les données de lecture par l'intermédiaire du bus 20 Putôt que de tenter de tracer les données directement dans les plans 16 de mémoires-lignes de la mémoire 13, de petites portions 50 de données sont conduites de la mémoire-ligne dans une mémoire 48 de tracé de contour située dans la logique 24 de tracé de contour La mémoire de tracé 48 comprendra particulièrement une aire 8 x 8 qui pourra contenir quatre sections 4 x 4 de données extraites de la mémoire-ligne Un contour limite, établi dans la mémoire de tracé 48, est déterminé de telle sorte que, si le tracé traverse ce contour limite, indiquant ainsi que le tracé se déplace vers la frontière de 05 la mémoire de tracé, la logique de tracé de contour 24 conduira des données additionnelles venant des plans 16 de mémoires-lignes, dans la direction dans laquelle le tracé se déplace vers la mémoire 48. Pour expliquer la suite en détail, après que le 10 processeur de reconnaissance ait défini un point de départ en utilisant des données de l'accumulateur 22, et ait numérisé la logique de tracé de contour, la logique de tracé de contour chargera la mémoire de tracé 48 et le tracé commencera dans la rotation dextrorsum, c'est-à-dire le blanc à 15 gauche et le noir à droite,tout au long de la direction de tracé Si le contour limite de la mémoire 48 est traversé, le tracé s'arrêtera et la logique detracé de contour 24 changera la donnée actuelle dans la mémoire de tracé, et chargera dans cette mémoire une donnée additionnelle venant 20 de la mémoire-ligne, pour permettre à la procédure de tracé de continuer Par exemple, si le tracé se déplace vers la droite et si la partie droite du contour limite est traversée, la logique 24 déplacera alors la moitiédroite de sa mémoire de tracé dans sa moitié-gauche Ensuite, deux mots 25 4 x 4 seront sortis de la mémoire-ligne dans la moitiédroite, maintenant propre, de la mémoire de tracé 48 Le traçage reprendra alors jusqu'à ce que le contour limite soit à nouveau traversé Si le tracé traverse le contour limite sur une diagonale, par exemple au cours d'un déplace30 ment descendant vers la droite le quadrant droit inférieur de la mémoire de tracé sera transféré dans le quadrant gauche supérieur et trois mots 4 x 4 seront extraits de la mémoire-ligne pour gagner la mémoire de tracé De cette façon, le contour entier du segment de caractère qui con35 tient le point noir initial pourra être tracé Ce procédé a l'avantage de nécessiter une petite mémoire pour la procédure de traçage Aussi le procédé décrit ci-dessus devientil plus efficace si la taille du caractère augmente, car seules les dbnnées intéressantes sont sorties de la mémoire40 ligne. La logique de tracé de contour 24 exécute un algorithme de traçage qui suivra les points noirs sur la pourtour d'un modèle Cet algorithme examine les données autour d'un point de référence, le point de référence étant le dernier 45 point noir tracé La séquence de recherche de données est contrôlée par le contrôleur de tracé 66 de la FIGURE 5 et est décrite ci-dessous Quand un nouveau point noir est trouvé l'adresse de la mémoire de tracé 48 est resituée de telle sorte que le nouveau point noir devienne le point de 50 référence et l'algorithme de traçage opérera alors pour trouver le point noir suivant Les séquences de train de codes fournies à la logique 28 d'extraction de traits, venant de la logique de tracé 24, comme expliqué ci-dessus, comprennent des éléments de train de codes à six bits. En se reportant maintenant à la FIGURE 5, la logique 24 de tracé de contour y est représentée dans un bloc diagramme fonctionnel Le fonctionnement de la logique de tracé 05 de contour est commandé, via le bus entrée/sortie 19, par le processeur de reconnaissance 18 L'information de commande contient un signal d'action, délivré à un décodeur d'adresse 50, et des données qui comprennent l'adresse dans la mémoire-ligne 13 du point noir initial sur la transition 10 blanc-noir ou noir-blanc préalablement déterminée Cette donnée d'adresse de point de transition est transmise à un émetteurrécepteur 52 Le décodeur d'adresse 50, qui comprend une logique cycle bus et un circuit minuteur, détecte quand le processeur de reconnaissance émet vers la logique 15 24 de tracé de contour et, en réponse, le signal à l'émetteur-récepteur 52 avec un signal d'écriture synchronisée Le décodeur d'adresse 50 détecte aussi quand le processeur de reconnaissance 18 est en train de lire les informations d'état et de données fournies par la logique de tracé de 20 contour 24, et permet à un multiplexeur de l'émetteurrécepteur 52 de transférer le signal désiré vers le bus 19. L'émetteur-récepteur de données 52 comprendra des receveurs de données "écriture", les synchroniseurs d'écriture qui commandent l'écriture des données reçues du bus 19 vers les 25 organes appropriés, le multiplexeur de lecture de données ci-dessus mentionné, et le circuit logique d'état qui fournit une information d'entrée à ce multiplexeur Pour commander l'opération de tracé de contour, par exemple après la localisation d'un point noir sur le contour d'un segment 30 stockée dans la mémoire-ligne la coordonnée x du point noir sera écrite dans un registre d'adresses 54 et la coordonnée y de ce même point noir sera écrite dans un registre d'adresses 56 De plus, la limite supérieure, c'est-à-dire la coordonnée y minimum, d'un espace valable de caractère sera 35 écrite dans un détecteur 58 de limite supérieure de coordonnée y qui comprend un registre associé à un comparateur De même, la limite inférieure, c'est-à- dire la coordonnée y maximum de l'espace valable d'un caractère, sera écrite dans le détecteur-60 de limite inférieure de coordonnée y L'opé40 ration de tracé de contour sera commandée par l'émission d'un signal de départ et du code de direction de recherche fournis par le processeur de reconnaissance 18 au registre de commandes 62 Le code de direction de recherche indiquera dans quelle des quatre directions la recherche est faite par 45 le processeur 18 pour trouver le poiht noir initial dans les plans 16 de mémoires-lignes Les quatre directions possibles sont de haut en bas, de bas en haut, de gauche à droite, et de droite à gauche Pour compléter la commande de la logique de tracé de contour 24, une logique de séquenceur de tracé 50 64 fonctionnera grâce à un signal émis par le registre de commandes 62 La logique de séquenceur 64 fournira un signal "drapeau d'occupation" et aussi un signal "propre" Ce signal "propre" remettra à zéro la logique d'éléments valables de train de codes du contrôleur 66, et remettra en état les compteurs de détection et position de limite de la mémoire de tracé situés dans un séquenceur 68 de lecture de mémoireligne et remettra à zéro la logique de limite qui est aussi 05 dans le séquenceur 68 de lecture de mémoire-ligne Le séquenceur 64 fournit également un signal de commande par mode pour lire uniquement une mémoire dans le séquenceur 68 Le séquenceur 64 fournit de plus un signal "départ de séquence d'accès à la mémoire-ligne" à un séquenceur de contrôle 10 cycle bus de mémoires-lignes situé dans le séquenceur 68 de lecture de mémoire-ligne Le contrôleur de tracé 66 et le séquenceur 68 de lecture de mémoire-ligne sont représentés sous forme d'un bloc diagramme fonctionnel dans la FIGURE 6. La description suivante de la logique de tracé de contour 24 15 sera faite en se reférant simultanément aux FIGURES 5 6 et 7. La réception par le séquenceur bus 598, dans le séquenceur de lecture de mémoire-ligne 68, d'un signal "départ de séquence d'accès à la mémoireligne" émis par le 20 séquenceur 64 commande une séquence de lecture d'un bloc de données comprenant quatre 4 x 4 "éléments de dessin binaires", des plans 16 de mémoires-lignes dans la mémoire 48 de tracé de contour Ainsi, le séquenceur à mémoire programmable, dite PROM 594 de lecture de mémoire-ligne fournit des sig25 naux de contrôle au bus de mémoireslignes 20, pour produire l'incrémentation ou la décrémentation des registres d'adresses x et y dans le contrôleur 14 de mémoire-ligne. Le séquenceur 598 cycle bus de mémoires-lignes fournit des signaux de séquence de lecture de mémoire-ligne vers le bus 30 20 de mémoires-lignes, pour que le contrôleur 14 de mémoires-lignes puisse lire les données venant des plans 16 de mémoires Le séquenceur 598 synchronise alors les données de mémoires-lignes qui sont lues dans la mémoire de tracé 48. De plus, le séquenceur 598 remet à zéro un compteur 596 35 avant le début de toute opération de mémoire-ligne, et incrémente le compteur 596 après chaque opération de mémoire-ligne Le séquenceur PROM 594 d'accès aux mémoires-lignes détermine quelles, et dans quel ordre, opérations mémoireligne ont lieu quand le séquenceur de contrôle cycle bus de 40 mémoire-ligne 598 reçoit une commande "départ" venant du séquenceur 64, les signaux de contrôle délivrés au séquenceur 598 comprenant des commandes "adresse de lecture " et "lecture de mémoire-ligne" Comme noté, les registres d'adresses de mémoire-ligne dans le contrôleur 14 sont incré45 mentés et décrémentés par les signaux "adresse de lecture de mémoire-ligne" qui sont émis par la PROM 594. Les endroits de la mémoire de tracé 48 o les informations, c'est-à-dire les éléments dessins, sont stockés sont contrôlés par des signaux "adresse d'écriture de mé50 moire de tracé" fournis par la PROM 594, ces informations étant écrites dans la mémoire 48 en réponse à un signal "synchronisation d'écriture" fourni par le séquenceur 598 Quand la séquence d'accès aux mémoires-lignes est terminée, ce qui est indiqué par l'apparition d'un signal "séquence faite" à la sortie de la PROM 594, le séquenceur 598 créera un signal "accès à la mémoire-ligne fait" qui est délivré au séquenceur 64 le signal de commande par mode fourni à la PROM 594 par le séquenceur 64 permet au PROM 594 de séquencer la lecture de quatre 4 x 4 "éléments dessins" entourant le "point noir localisé" dans la mémoire-ligne vers la mémoire de tracé 48 Le compteur 596, contrôlé par le séquenceur 598, adresse les localisations dans le PROM 594 pour chaque 10 étape de la séquence d'accès aux mémoires-lignes. Pendant que progresse l'accès aux mémoires-lignes, le séquenceur de tracé 64 attend le signal "accès à la mémoireligne fait" émis par le séquenceur 598 Dès réception de ce signal, le séquenceur de tracé 64 remet en état un compteur 15 70 d'adresse de lecture en x dans la mémoire de tracé 48 à l'aide de signaux "données de commande de compteur" Le compteur 70 est alors mis en état avec l'adresse x de départ qui est fonction de l'information de direction de recherche, cette information étant une partie des données introduite 20 dans le registre de commandes 62 Le séquenceur 64 commande aussi la remise en état du compteur 72 d'adresse de lecture en y de la memoire de tracé, commandant ainsi le départ de l'adresse en y Le départ de l'adresse en y est aussi fonction de l'information de direction de recherche qui est une 25 partie de l'information contenue dans le registre de commandes 62 Le séquenceur de tracé 64 produit aussi, vers le contrôleur de tracé 66, un signal "donnée de commande de compteur" qui remet en état un compteur 570 de tracé d'éléments de train de code, ce qui place l'élément de train de 30 code de départ à une valeur qui est fonction du code de direction de recherche dans le registre de commandes 62 Le séquenceur 64 contient un compteur de "commande de tracé trois points" qui est remis à zéro pendant cette période pour éteindre un signal "commande exécutée" pour indiquer 35 que l'opération de commande de tracé trois points est "en cours" Le séquenceur 64 produit aussi des impulsions de signaux "d'horloge de tracé" pour séquencer l'opération de tracé de contour pour trois points L'opération de tracé crée des éléments de train de codes qui définissent la 40 direction entre un point noir sur le contour du segment de caractère et le point noir suivant, en utilisant la représentation de la grille de coordonnées de la FIGURE 4 Comme expliqué ci-dessus, la direction est telle que, lorsqu'on se déplace le long d'un segment d'un point noir au suivant. 45 l'aire blanche située hors du segment est sur la gauche. Dans le but de créer un élément de train de code représentant la direction entre le point noir initial et le point noir suivant, il est cherché des points noirs en testant les segments 2 x 2 dans l'espace entourant le point 50 noir initial, en lui étant adjacent La recherche commence en considérant un segment 2 x 2 connu pour être, soit situé dans l'aire blanche extérieure au segment de caractère soit contenir des points sur le contour du segment La remise en état des compteurs 70 et 72 d'adresses de lecture en x et y de la mémoire de tracé permet ce mode de recherche La position de l'élément 2 x 2 par rapport àu point noir initial correspond à l'élément de train de codes ayant une valeur 05 définie par la sortie du compteur 570 situé dans le contrôleur de tracé 66 Comme noté ci-dessus le compteur 570 est remis en état avec les compteurs d'adresses de mémoire de tracé 70 et 72 de telle sorte que la position relative de l'élément 2 x 2 par rapport au point noir initial et de l'élé10 ment de train de code par rapport au point noir initial corresponde. Un segment 2 x 2 des données venant de la mémoire de tracé 48 est créé en introduisant les sorties des compteurs 70 et 72 dans la PROM modèle et dans une aire de logique 74 15 qui produit des signaux d'adresse de lecture pour la mémoire 48 Ainsi, les données contenues dans les éléments dessins 2 x 2 désirés sont extraites de la mémoire de tracé 48 et délivrées au multiplexeur 76, Les signaux de données 2 x 2 émis par le multiplexeur 20 76 et les signaux d'élément de train de codes émis par le compteur 570 du contrôleur 66 sont conduits dans un détecteur 568 de points noirs et de changement d'adresse de tracé, qui contient une PROM et une logique, dans le contrôleur de tracé 66 Le détecteur 568 utilise des signaux 25 "élément de train de codes" émis par le compteur 570 pour déterminer quels sont les signaux de données dans l'élément dessin 2 x 2 de la recherche de points noirs, et pour déterminer si l'élément initial de train de codes stocké dans le compteur 570 représente l'élément de train de codes reliant 30 le point noir suivant sur le bord du segment Si le détecteur 568 ne détecte pas un point noir, il émettra un signal "d'horloge point blanc" qui est synchronisé avec le signal "d'horloge de tracé" émis par le séquenceur 64 Ce signal "d'horloge point blanc" décrémentera le compteur 570 par un 35 comptage, ce qui fait tourner la direction représentée par l'élément de train de codes à partir du point noir initial d'un angle de 45 degrés dans le sens des aiguilles d'une montre Le détecteur 568 émettra simultanément des signaux d'incrément bu décrément pour le compteur 70 et le compteur 40 72 qui changent l'adresse de mémoire de tracé de telle manière que se produise une rotation de 45 degrés dans le sens des aiguilles d'une montre autour d' point noir initial dans la mémoire 48 de l'élément 2 x 2 sélectionné par la PROM 74 L'opération est alors répétée avec les données 2 x 2 45 venant du multiplexeur 76 et l'élément train de codes venant du compteur 570 étant testé dans le détecteur 568 pour un point noir Si un point noir n'est pas encore détecté, un autre signal "d'horloge point blanc" est émis, en même temps que des signaux appropriés pour produire une rotation 50 dextrorsum de 45 degrés des éléments 2 x 2 autour du point noir courant et le processus se répète. La production de signaux "d'horloge point noir" et la rotation dextrorsum de l'élément de train de codes et de l'élément-dessin 2 x 2 autour du point noir initial continuent jusqu'à ce qu'un point noir soit détecté par le détecteur 568, ou, dans le cas d'un seul point noir isolé, aucun point noir n'étant détecté autour du point noir initial, le comp05 teur 570 d'éléments de train de codes continue de décompter jusqu'à ce que la logique 572 de détection de trop plein détecte que le compteur 570 a dépassé la valeur négative maximum permise de l'élément de train de codes Si cela se produisait, la logique 572 émettrait un signal "trop plein 10 d'éléments de train de codes" délivré au séquenceur 64 qui émet alors un signal qui arrête le processus de traçage Le séquenceur 64 pourra aussi, à cet instant, produire des signaux d'effaçage qui remettent à zéro le registre de commandes 62 en effaçant la commande de départ de tracé et 15 en effaçant le drapeau d'occupation, ce qui informe le processeur de reconnaissance 18 que le processus de commande est terminé, bien que sans succès. Le signal de trop plein d'éléments de train de codes émis par le circuit logique 572 est aussi introduit dans le 20 circuit logique d'état de l'émetteur-récepteur de données 52, pour permettre au processeur de reconnaissance 18 de lire l'état de l'opération de tracé de commande par le multiplexeur de lecture de données du bus entrée/sortie qui fait aussi partie de l'émetteur-récepteur 52. Quand le détecteur 568 détecte un point noir dans l'élément 2 x 2 approprié à l'élément de train de codes dans le compteur 570 un signal d'horloge point noir" est produit en synchronisme avec le signal "d'horloge de tracé" Pendant l'opération de commande du tracé ce signal "d'horloge point 30 noir" est délivré à l'entrée d'une PROM 588 dans le contrôleur de tracé 66 Le signal d'élément de train de codes émis par le compteur 570 est aussi introduit dans la PROM 588 La PROM 588 fournit des signaux d'incrément/décrément pour les compteurs 590 et 591 de limites des coordonnées en x et y de 35 la mémoire de tracé, dans le séquenceur 68 de lecture de mémoire-ligne Le signal "d'horloge point noir" sortant du détecteur 568 est aussi introduit vers la logique 586 d'éléments de train de codes valables qui, en association avec des signaux venant d'un circuit logique 584 "différence de 40 mouvement", produira un signal "d'horloge point valable" synchronisé avec le signal "d'horloge point noir" La fonction de la logique 584 "différence de mouvement" sera décrite en plus grand détail ci-dessous La logique 586 "élément valable de train de codes" produit, en plus du signal 45 "d'horloge point valable", un signal de synchronisation d'écriture de mémoire de train de codes qui est délivré à la logique d'extraction de traits 28 Ce signal de synchronisation d'écriture est inhibé par le signal "commande terminée" éteint venant du séquenceur 64 pendant l'opération de tracé 50 commandé Le signal "d'horloge point noir" venant de la PROM 568 remet également à zéro le compteur du circuit logique 584, la remise à zéro se produisant à la limite du signal "d'horloge point noir" De plus le signal "d'horloge point noir" synchronise "l'élément de train de codes" corrigé venant d'un additionneur 576, connecté à la sortie du compteur 570, vers un registre 578 de données d'éléments de train de codes Le registre de données 578 est connecté aux 05 mémoires de trains de codes 750, 752 et 754 en passant par le multiplexeur 746 de la logique d'extraction de traits 28 Il est à noter que l'information contenue dans le registre 578 reste inconnue pendant l'opération de tracé commandée tant que les éléments de train de codes ne soint 10 pas stockés dans la mémoire de trains de codes pendant la commande de tracé de contour Le signal "d'horloge point noir" venant du détecteur 586 permet aussi à un registre 582 de signaux "d'horloge de coordonnées" d'être chargé avec les données d'incrément/décrément pour incrémenter/décrémen15 ter le registre 54 d'adresses en x et le registre 56 d'adresses en y sur le signal "d'horloge point noir" suivant. ces données étant fournies par une PROM 580 "incrément/décrément de correction d'adresse de coordonnées x et y" Le signal "horloge point noir" est aussi renvoyé vers le comp20 teur 570 pour permettre à ce compteur d'être incrémenté sur la limite de l'horloge, cette incrémentation produisant la rotation dextrorsum de 45 degrés de l'élément de train de codes, permettant ainsi l'opération nécessaire pour détecter le point hoir suivant et le cycle de détermination de 25 l'élément de train de codes. Comme noté précédemment, le détecteur 568 émet aussi des signaux incrément/décrément qui sont délivrés aux compteurs 70 et 72 d'adresses en x et y de la mémoire de tracé, pour garantir que l'élément 2 x 2 adressé dans la mémoire de 30 tracé 48 sera localisé aux alentours du point noir suivant détecté, en conjonction avec l'élément de train de codes dans le compteur 570. Le signal "horloge point validé" venant du circuit logique 586 comprend le signal de synchronisation pour con35 trôler la lecture du registre 582 des horloges des coordonnées Ainsi, à la production du signal "horloge point validé", le registre 582 fournira des signaux incrément/décrément qui permettent aux compteurs 54 et 56 de coordonnées x et y d'être incrémentés/décrémentés pour définir la posi40 tion du point noir validé dans les plans 16 de mémoireslignes Le signal "horloge point validé" venant du circuit logique 586 incrémente aussi le compteur de commande de tracé de trois points dans le séquenceur 64, ce compteur relève le nombre de points noirs validés tracés pendant 45 l'opération commandée Après que trois points aient été tracés, le compteur de commande dans le séquenceur 64 émettra un signal "commande terminée" Le signal "commande terminée" efface le le drapeau d'occupation émis par le séquenceur 64, pour informer le processeur de reconnaissance 50 18 que le processus de commande est terminé Le signal "commande terminée" arrêtera aussi le signal "horloge tracé" et remettra à zéro le registre de commandes 62, ce qui efface le signal de commande de tracé Le séquenceur 64 produit aussi un signal "rencontre de charge" qui permet de charger la valeur initiale du registre 54 d'adresses en x dans un registre 644 (FIGURE 7) du comparateur de rencontres 78 (FIGURE 5) La valeur initiale du registre 56 d'adresses 05 en y est, de même chargée dans un registre 650 du comparateur 78 Les trois bits inférieurs de l'élément de train de codes venant du compteur 570 d'éléments de train de codes du contrôleur de tracé 66 sont chargés dans le registre 656 du comparateur de rencontres 78 L'information dans les 10 registres 644, 650 et 656 identifie quel sera le premier point à tracer sur le segment quand une commande de continuer le tracé viendra du processeur 18. Le fonctionnement des PROMS de points noirs et de la logique 568 est représenté sur la FIGURE 4 La colonne 15 appelée "Code Mouvement" correspond aux trois bits significatifs les plus petits dans le compteur 570 d'éléments de train de codes, et correspond aussi au diagramme appelé "Direction Mouvement" dans la FIGURE 4, le diagramme montrant la direction actuelle du mouvement depuis le point 20 noir référencé dans la mémoire de tracé 48 Les groupes de deux ou trois points dans la colonne appelée "Données" indiquent quels éléments dans l'aire 2 x 2 adressée par les compteur 70 d'adresse-x et compteur 72 d'adresse-y sont testés pour un point noir d'un élément de train de codes 25 particulier dans le compteur 570 Les données sous "Changement d'Adresse dans Mémoire de Tracé" dans la FIGURE 4 indiquent comment les compteur 70 d'adresse-x et compteur 72 d'adresse-y sont incrémentés/décrémentés selon une détection de point noir (colonne "si noir") ou une non-détection de 30 point noir (colonne "si blanc") Le compteur de différence de mouvement dans le circuit logique 584, la PROM 580 et la logique 586 d'éléments de train de codes validés du contrôleur de tracé 66 produisent des moyens pour filtrer des points noirs sur un contour qui causent des changements 35 "aigus" de direction dans le tracé Un changement "aigu" de direction est défini par une différence de 135 ou 180 degrés entre des éléments de train de codes, dans une rotation dextrorsum L'effet de cette opération de filtrage est illustré dans' la FIGURE 8 La logique 584 du compteur de 40 différence de mouvement décompte le nombre de points blancs d'horloge produits par le détecteur 568 accumulant ainsi les degrés de rotation de l'élément de train de codes "actuel" par rapport à l'élément antécédent Si le compteur 584 détecte une rotation de 180 degrés entre deux éléments de 45 train de codes adjacents il produira un signal à la logique 586 d'éléments de train de codes validés, pour inhiber la création de signaux d'horloge "point validé" Les deux éléments de train de codes ne pourront ainsi être reconnus comme éléments validés, et, en conséquence, les registres 54 50 et 56 d'adresses en x et y ne seront pas changés Aussi, le compteur de commande de tracé de trois points appartenant au séquenceur 64 ne sera pas incrémenté et le signal "synchronisation de l'écriture de la mémoire de train de codes" émis par le circuit logique 586 sera inhibé En inhibant le signal de synchronisation émis par le circuit logique 586, si l'opération continue de tracé est en cours, on empêche les deux éléments de train de codes séparés de 180 degrés 05 d'être écrits dans les mémoires de trains de codes 750, 752 ou 754 dans la logique d'extraction 28 Si le compteur 584 détecte une différence de 135 degrés entre deux éléments de train de codes adjacents, en testant un certain nombre, par exemple trois, de points blancs d'horloge le circuit logi10 que 584 produira un signal à l'entrée de la PROM 580 qui, en retour émet un signal à l'additionneur 576 pour produire un élément de train de codes corrigé à la place des deux éléments de train de codes qui avaient une différence de 135 degrés La PROM 580 modifie aussi les signaux d'incré15 ment/décrément des coordonnées x et y vers le registre 582 de coordonnées d'horloge, de telle sorte que ces signaux correspondent à l'élément de train de codes corrigé De plus, le circuit logique 584 peut délivrer, vers le circuit logique 586, un signal qui permet la production d'un signal 20 "point validé d'horloge" correspondant à l'élément de train de codes corrigé. Pendant la commande de tracé et les opérations de traçage les signaux "point noir d'horloge" venant du détecteur 568 sont introduits dans la PROM 588 en même temps que 25 le signal "élément de train de codes" venant du compteur 570 La PROM 588, en réponse aux signaux d'entrée ainsi produits, crée de signaux "décrément/décrément" pour les compteurs 590 et 591 de limites en x et y dans le séquenceur 68 de lecture de mémoireligne Ces compteurs sont tels 30 qu'ils comptent en synchronisme avec les signaux "point noir d'horloge" et les compteurs qui dénombrent les points noirs actuels dans la mémoire de tracé 48. Les sorties des compteurs 590 et 591 sont connectées à l'entrée de la logique 592 de détection et de localisation 35 de limite, logique qui contient une PROM supplémentaire Le circuit logique 592, par des moyens de comparaison des sorties de compteurs 590 et 591, détecte quand la position du point noir dans la mémoire de tracé 48 est telle qu'il y a dans la mémoire 48 des données insuffisantes pour que tous 40 le éléments 2 x 2 possibles autour du point noir soient accessibles Quand cette condition se produit le circuit logique 592 produit un signal de limite de la mémoire de tracé vers le séquenceur 64 qui produit l'arrêt du signal "d'horloge de tracé" délivré à la PROM 568 du contrôleur de tracé 66. 45 La PROM 568, et sa logique associée, en réponse de ne pas recevoir de signaux "horloge de tracé", arrêtent l'opération de tracé Le séquenceur de tracé 64, en réponse au signal "limite de (range) de mémoire de tracé" venant du circuit logique 592, fournit aussi un signal "départ de 50 séquence d'accès à la mémoire-ligne" qui est introduit dans le séquenceur 598 Le séquenceur 598 en association avec le compteur 596 et la PROM 594, permet la lecture dans la mémoire de tracé 48 des données venant des plans 16 de mémoires-lignes qui définit une aire 4 x 4 de la manière décrite ci-dessus Cependant, à cet instant, le signal "mode commande" venant du séquenceur 64 sera dans la condition "off" et ainsi, la PROM 594 répondra aux signaux de position 05 venant du circuit 592 pour déterminer quels éléments de mémoire doivent être lus dans la mémoire de tracé 48 pour produire des données suffisantes autour du point noir réelles dans la mémoire 48, pour que l'opération de traçage puisse continuer Quand la séquence de lecture de mémoire10 ligne est complète, le séquenceur 598 créera le signal "accès à la mémoire-ligne fait" qui sera introduit dans le séquenceur 64 Ce signal "accès à la mémoire-ligne fait" permettra au séquenceur 64 de réactiver le signal "horloge tracé", l'opération de tracé pouvant alors continuer Après 15 que l'opération de commande tracé ait été achevée,l'état de l'ordre étant lu par le processeur 18 via le bus 19, l'opération tracé de contour de segment est commandée par le processeur 18 en dictant la commande "tracé continu" au registre 62 de commandes Le compteur d'adresses 736 de la 20 logique d'extraction de traits 28 et les circuits d'estimation d'aires 830, 832, 860,862,878 et 880 de la logique d'extraction de traits 28 sont aussi commandés par le processeur 18 La logique de sélection de mémoires 738 est également commandée par le processeur 18 pour permettre aux 25 mémoires 750, 752 ou 754, dans lesquelles les éléments de train de codes venant de la logique de tracé 24 doivent être stockés, et le registre 710 de longueur de mémoire de trains de codes sont réglés au maximum En réponse à une commande "tracé continu", le séquenceur 64 émettra des sig30 naux "horloge tracé",ce qui permet à l'opération de tracé de continuer à partir du point o elle fut arrêtée pendant le mode commande, le signal "tracé continu" étant fourni au séquenceur 64 par le registre de commandes 62. Quand une commande "tracé continu" est écrite au 35 registre de commandes 62, l'opération de tracé s'effectuera comme décrit ci-dessus avec les signaux "synchronisation d'écriture de mémoire de trains de codes" émis par le circuit logique 586 d'éléments de train de codes validés par la porte 748, de qui crée des synchronisations d'écriture vers 40 le mémoires de trains de codes 750, 752 ou 754 comme sélectionnées par la logique 738 En conséquence, les éléments de train de codes seront passés du registre 578 via le multiplexeur 746 dans la mémoire de train de codes de la logique d'extraction de traits 28 Les signaux d'incrément/décrément 45 de coordonnées x et y venant du registre 582 seront passés, via les multiplexeurs 760 et 790, dans les circuits d'estimation d'aire ci-dessus mentionnes, ce qui permet l'opération d'aire 2 A décrite ci-dessous pour procéder à la suite du traçage Un signal d'occupation,de tracé venant du sé50 quenceur 64 permet aux multiplexeurs 760 et 790 de sélectionner les signaux émis par le registre 582. Pendant l'opération de tracé, les valeurs maximum et minimum des coordonnées x et y, c'est-à-dire les extremums du tracé, sont décelées par la logique du comparateur dans les registres 80,82,84 et 86 Le signal "égalité de charge" émis par le séquenceur 64 à la fin de l'opération de commande permet aux circuits 80 et 82 d'être chargés avec la 05 valeur actuelle de la coordonnée x venant du registre 54, et aux circuits 84 et 86 d'être chargés avec la coordonnée y actuelle venant du registre 56 Pendant l'opération de tracé, la logique de comparaison du cicuit 80 comparera la valeur de la coordonnée x minimum du tracé contenue dans un 10 registre du circuit 80 à la valeur de la coordonnée x actuelle contenue dans le registre 54 Si la coordonnée x est inférieure au minimum stocké la nouvelle coordonnée x minimum est chargée dans le registre du circuit 80 en synchronisme avec le signal "point horloge validé" produit par la 15 logique 586 d'éléments de train de codes validés D'une manière identique, un registre du circuit 82 "sauve" la coordonnée x maximum du tracé, un registre du cicuit 84 "sauve" la coordonnée y minimum du tracé, et un registre du circuit 86 "sauve" la coordonnée y maximum du tracé Après 20 que l'opération de tracé soit terminée, les coordonnées x et y minimum et maximum, c'est-à-dire la "boite du caractère actuel", peuvent être lues par le processeur de reconnaissance 18 L'opération de tracé continuera jusqu'à ce que le 25 séquenceur 64 arrête les signaux "horloge tracé", ce qui termine l'opération tracé, et qu'il produise un signal "propre" qui remet à zéro le registre de commandes 62 Le signal "propre" nettoie la commande de tracé et abaisse le drapeau d'occupation, ce qui informe le processeur de reconnaissance 30 18 que l'opération de tracé est terminée Le séquenceur 64 permettra à l'opération de tracé d'être 'terminée si n'importe lequel des quatre signaux d'entrée est "vrai", ces signaux d'entrée étant un signal de limite "hors haut" émis par le détecteur 58, un signal de 35 limite "hors bas" émis par le détecteur 60, un signal de trop plein de mémoire de trains de codes émis par un circuit logique 740 de comparaison "mémoire adresse au maximum", et un signal "à égalité" émis par la porte ET 654 dans le comparateur 'd'égalité 78 Le signal de train de codes "mé40 moire adresse au maximum" émis par le comparateur 740 indique qu'il n'y a plus de place pour sauvegarder des éléments de train de codes Le signal de limite "hors haut" émis par le détecteur 58 indique que la coordonnée y a dépassé la valeur limite haut (y minimum) stockée dans le registre 58, 45 c'est-à-dire que le tracé est "hors haut" Le signal de limite "hors bas" émis par le détecteur 60 indique que la coordonnée y a dépassé la valeur limite du bas (y maximum) stockée dans le détecteur 60, c'est-à-dire que le tracé est "hors bas" Le signal "à égalité", émis à la porte 654 50 indique que l'opération de tracé a atteint le point d'ou elle était partie, c'est-à-dire que le contour de segment a été entièrement tracé Le signal "à égalité" est produit quand la porte 654 reçoit des signaux venant des trois comparateurs 646, 652 et 658 du comparateur d'égalité 78 Le comparateur 646 fournit un signal de sortie quand la valeur actuelle de la coordonnée x stockée dans le registre 54 est égale à la valeur stockée dans 'le registre 644 par le signal 05 "égalité de charge" émis par le séquenceur 64 à la fin de l'opération de commande de tracé D'une façon similaire le comparateur 652 produit un signal de sortie quand la valeur actuelle de la coordonnée y stockée dans le registre 56 est égale à la valeur stockée dans le registre 650 à la fin de 10 la commande de tracé Le circuit 658 compare le signal "élément train de codes" émis par le compteur 570 d'éléments de train de codes à la valeur de l'élément de train de codes stockée dans le registre 656 à la fin de la commande de tracé. Quand l'opération de tracé a été stoppée et le drapeu d'occupation abaissé, le processeur de reconnaissance 18 peut lire l'état de l'opération de tracé de contour dans la logique d'état de l'émetteur-récepteur de données 52, pour voir lequel des quatre signaux d'entrée dans-le séquenceur 20 64 a causé l'arrêt de l'opération de traçage, c'est-à-dire que l'information contenue dans l'émetteur-récepteur 52 indiquera si le tracé a été terminé, c Qmme indiqué par la sortie de la porte 654 du comparateur d'égalité 78, si le tracé est "hors haut" ou "hors bas", comme indiqué par les 25 détecteurs 58 et 60 respectivement, ou s'il y a eu un trop plein de mémoire de train de codes détecté par le comparateur 740 Dans l'opération de traçage de contour, décrite cidessus il est important que chaque segment et région entou30 rée d'un caractère ait été localisé et tracé Cependant, pour pouvoir véhiculer le maximum de données, il est nécessaire de rendre minimum la recherche nécessaire pour localiser tous les segments et régions entourées, et aussi pour permettre le traçage de tous les segments et régions précé35 demment tracés L'accumulateur de points noirs 22 aide à réaliser ce qui précède sous le contrôle du processeur de reconnaissance 18 et en faisant ainsi exécute une fonction de sommation de points noirs L'accumulateur 22 est relié au bus 19 ent Iée/sortie et au bus de mémoires-lignes 20 En 40 opération, l'accumulateur 22 est effectivement un soussystème logique interposé entre la mémoire-ligne 13 et le bus entrée/sortie 19 Une fois que l'opération de l'accumulateur 22 est démarrée au moyen d'un signal de commande reçu du processeur de reconnaissance 18 via le bus 19, c'est-à45 dire une fois que l'accumulateur a été commandé d'accumuler les coordonnées de départ de la colonne et instruit du nombre de parties de mémoire 4 x 4 à accumuler, ce circuit logique fonctionnera sur le bus 20 de mémoires-lignes, incrémentant automatiquement les adresses de la mémoire-ligne 50 13 dans le contrôleur 14 de mémoire-ligne, jusqu'à ce qu'il ait terminé sa tâche Le traçage de contour de caractère est effectué en cinq phases utilisant l'accumulateur 22 en associatin avec la logique de tracé de contour 24 Dans la première phase, on trouve le segment le plus à gauche du caractère par une recherche séquentielle colonne-par-colonne d'une fenêtre de recherche de segment Une fenêtre de recherche de segment 05 est une "boîte" définissant une région dans la mémoireligne dans laquelle doit être située la recherche pour un segment de caractère La fenêtre de recherche de segment contient une portion de fenêtre de recherche de caractère qui, elle-même est une "boite" qui définit une région de 10 la mémoire-ligne dans laquelle doit être située la recherche pour un caractère La taille de la fenêtre de recherche de caractère est établie par un logiciel adapté La première phase de recherche a pour but la détection d'une transition blanc-noir ou noir- blanc dans toutes les bandes larges de 15 quatre colonnes Le circuit logique de l'accumulateur 22 détermine le nombre de points noirs dans chaque colonne S'il Y a un nombre de points noirs inférieur au nombre présélectionné, trois par exemple la colonne est sautée et la suivante est examinée à son tour Si au moins le nombre 20 minimum de points noirs présélectionné est détecté, la colonne est divisée en deux vecteurs verticaux de deux-bits de large, et les données de la mémoire-ligne dans chaque vecteur sont examinées, de haut en bas, pour localiser une transition blanc-noir ou noir-blanc Les coordonnées du 25 point noir à la première transition localisée et la direction de cette transition sont fournies à la logique de tracé de contour 24 via le bus 19 pour commencer une opération de tracé de contour. Pendant la deuxième phase de la procédure de traçage 30 de caractère, une aire fixée vers la droite du premier segment localisé et tracé est testée pour chercher d'autres segments supplémentaires, c'est-à-dire non tracés Pendant les troisième et quatrième phases du traçage de caractère, on teste les régions respectivement localisées au-dessus et 35 au-dessous des segments précédemment tracés Le rectangle défini par les limites extérieures de toutes ces aires de recherche définit la fenêtre de recherche de caractère, ou boîte. Pendait les deuxième, troisième et quatrième phases 40 de l'opération de traçage de caractère, l'aire de recherche ne contient jamais aucun segment précédemment localisé De cette manière, la répétition de tracés n'est pas possible. et l'étendue totale du caractère peut être effectivement déterminée Des segments encastrés, c'est-à-dire les seg45 ments situés à l'intérieur du contour rectangulaire d'un segment précédemment tracé, et les régions entourées, sont localisés et tracés pendant la cinquième phase Une procédure de comptabilité de points noirs est utilisée pendant la cinquième phase pour minimiser les besoins pour une recher50 che extensive. L'accumulateur 22 contient une PROM et une logique associée Toutes les données extraites de la mémoire-ligne vers l'accumulateur 22, après multiplexage sont délivrées à la PROM qui fonctionne comme une table de regard, c'est-àdire que le mot à huit bits de l'échantillon 2 x 4 est traduit par la PROM en un nombre proportionnel au nombre de points noirs contenus dans l'échantillon Le processeur de recon05 naissance 18 permet au contrôleur de mémoire-ligne 14 de sélectionner la direction d'accumulation, la direction sélectionnée étant contenue dans les mots d'entrée à 16-bits fournis par le processeur 18. De plus, sous le contrôle du processeur 18 l'accu10 mulateur 22 chargera la limite de recherche, c'est-à-dire la hauteur de la colonne à examiner, dans son propre registre d'entrée Ces étapes préliminaires étant terminées, l'accumulateur 22 fonctionnera tout seul Le processeur de reconnaissance 18 interrogera le registre de sortie de l'accumu15 lateur 22 pour déterminer si le travail du circuit est terminé La sortie de l'accumulateur 22 consiste en un mot 16-bits, qui est lu sur le bus 19 entrée/sortie, contenant le nombre de points noirs accumulés dans le balayage de la colonne. Pour décrire le fonctionnement de l'accumulateur 22 en plus grand détail, pendant la première phase, c'est-àdire la phase de localisation d'un premier segment, la fenêtre entière de recherche de caractère est examinée pour trouver le segment le plus à gauche du caractère Si le 25 premier segment est trouvé en cherchant le vecteur vertical 2-bits le plus à gauche de la fenêtre de recherche de caractère, le reste du vecteur est examiné pour déterminer exactement o est situé le bord gauche du caractère A mesure que de nouveaux segments sont trouvés le long de ce 30 vecteur, la boîte du caractère "courant" est élargie pour contenir les nouveaux segments trouvés La région rectangulaire qui contient entièrement le premier segment est considérée comme étant la boîte du caractère "courant". De la deuxième à la quatrième phase, comme brièvement 35 décrit ci-dessus l'étendue totale du caractère est déterminée par une procédure de recherche systématique Dans la deuxième phase, en utilisant la boîte du caractère courant comme point de référence, une aire vers la droite de cette boîte est examinée pour rechercher de nouveaux segments 40 appartenant au caractère à tracer Pendant cette phase, la fenêtre de recherche de segment utilisée s'étend jusqu'au bout de la fenêtre de recherche de caractère et a la même hauteur, c'est-à-dire que la fenêtre de recherche de segment est située à droite de la boîte de caractère "courant" 45 distante de celle-ci d'une unité de balayage Si un nouveau segment est trouvé, la boîte de caractère "courant" est étendue pour contenir le nouveau segment et la deuxième phase de recherche est répétée La phase deux est terminée quand aucun segment supplémentaire n'est trouvé vers la 50 droite de la boîte de caractère, c'est-à-dire vers la droite du plus petit rectangle qui contient le caractère entier. Dans la troisième phase de la détermination de l'étendue du caractère, on examine une aire située au-dessus du haut de la boîte de caractère "courant" Cette aire est limitée en haut par la limite supérieure de la fenêtre de recherche de caractère, à gauche par la limite gauche de la boîte de 05 caractère "courant" et, si nécessaire, le contour gauche pourra être tronqué par le bord gauche de la fenêtre de recherche de caractère L'aire ainsi décrite est limitée en bas par le bord supérieur et à droite, par le bord droit de la boîte de caractère "courant" Si un nouveau segment 10 est trouvé pendant la troisième phase, la boîte de caractère "courant" est étendue pour contenir le nouveau segment et la phase trois est répétée La phase trois est terminée quand aucun segment supplémentaire n'est trouvé vers le haut de la boîte. La quatrième phase de la procédure de traçage du contour comprend l'examen de l'aire sous le bas de la boîte de caractère "courant" Cette aire est limitée en haut par le bas de la boîte, en bas par le bas de la fenêtre de recherche de caractère, et à droite par la limite droite de 20 la boîte Cette aire est aussi limitée à gauche par la limite gauche de la boîte et ce contour gauche peut, si nécessaire, être tronqué par le bord gauche de la fenêtre de recherche de caractère Si un nouveau segment est trouvé pendant la quatrième phase la boîte de caractère "courant" 25 est étendue pour contenir le nouveau segment et la phase quatre est répétée La phase quatre est terminée quand aucun segment supplémentaire n'est trouvé vers le bas de la boîte de caractère agrandie Quand la phase quatre est terminée, la boîte de caractère "courant" détermine l'étendue en30 tière du caractère à tracer Les coordonnées de ladite boîte, ainsi qu'elle est décrite ci-dessus, sont stockées dans les registres 80-86 de la logique de tracé de contour 24 Ces coordonnées sont utilisées pour vérifier l'exactitude du tracé de contour de la manière décrite ci-desous. Pendant les deuxième, troisième et quatrième phases, l'aire de recherche ne contient jamais aucun segment précédemment localisé Chaque segment détecté pendant la phase deux sera tracé, par la logique 24 de tracé de contour, de même dans les deux autres phases Comme il sera décrit en 40 plus grand détail ci-dessous, les trains de codes proportionnels aux segments et régions entourées tracés seront séquentiellement chargés dans les mémoires de trains de codes 750, 752 et 754 pour pouvoir traiter séparément les informations relatives à chaque segment et région entourée La cinquième phase de traçage de caractère comprend un procédure de comptage de points noirs Le but de cette phase est de localiser et tracer toutes les régions entourées à l'intérieur du caractère et/ou les segments encastrés qui n'aient pas été trouvés dans les phases 1-4 La nécessi50 té de rechercher les régions entourées et les segments encastrés est déterminée par le fait de devoir comptabiliser tous les points noirs contenus dans la boîte de caractère A l'intérieur d'une boîte de caractère, le nombre de points noirs actuels dépend de tous les segments que comprend le caractère Le nombre de points noirs concernés par un segment sans une région est un compte de grille de segment Le nombre de points noirs concernés par un segment avec une ou 05 plusieurs régions est dans la somme de compte de grille de segment et les comptes de grille de régions de toutes les régions contenues dans le segment, des comptes de grilles de segments étant positifs et les comptes de grilles de régions étant négatifs En additionnant tous les comptes de grilles 10 de segments et de régions, on obtient un compte de points noirs calculé Toute différence significative entre les comptes de points noirs calculés et réels est une indication qu'il y a peut-être un ou plusieurs segments ou régions non tracés La procédure de comptage comporte trois étapes Dans 15 la première étape, le compte de points noirs réels dans la boîte de caractère est déterminé en utilisant l'accumulateur 22 Le compte de points noirs réel est la somme de tous les points noirs dans la totalité des colonnes dans les boites de caractère "courant" Le compte de points noirs 20 réel est stocké dans la mémoire 26 du processeur de reconnaissance. Dans la deuxième étape, le compte de points noirs calculé est obtenu en additionnant tous les comptes de grille de segments et les comptes de grille de régions de 25 tous les segments et régions qui ont été trouvés Ce calcul est effectué par la logique 28 d'extraction de traits pendant une opération de tracé utilisant les données de direction de mouvement du tracé en x et en y en provenance du registre 582 dans la logique de tracé 24, de la manière 30 décrite ci-après Pour comprendre ce calcul, on considère un polygone à N sommets numérotés de O à N-l, dans l'ordre d'une rotation dextrorsum Si les coordonnées de chaque sommet Pl sont (xi yi) alors l'aire du polygone est: N-1 ( 1) 1/2 3 2 Ai i=l o (la) 2 Ai = lAyi (S xi) Lxi (à yi)j N-1 = le nombre du dernier élément ai de train de codes du tracé Sxi = la composante x de l'élément ai de train de codes syi = la composante y de l'élément ai de train de codes et xi = xi xo Ayi = yi yo Comme chaque xi ou Syi est ou O ou+ 1, le circuit d'évaluation d'aires de la logique 28 d'extraction de traits calcule l'aire d'un segment (ou région) par incrémentation lorsque les trains de codes sont engendrés en utilisant une 05 simple logique efficace, c'est-à-dire lorsque l'évaluation d'aires se fait en parallèle avec l'opération de tracé. En prenant I le nombre de noeuds dans l'intérieur du polygone, le Théorème de PICK établit que: A = ( 1/2) N + I 1 Si le polygone contient une région, le nombre de noeuds constituant la région (en excluant les points noirs qui l'encercle) représente le compte de grille de régions 15 Ainsi: le compte de grille de régions = I = A ( 1/2) N + 1. Si le polygone contient un segment, le nombre de noeuds constituant le segment, en comprenant ceux situés sur 20 son contour, est le compte de grille de segment Ainsi: le compte de grille de segments = I + N = A + ( 1/2) N + 1 Dans la troisième étape, les comptes calculés et réels de points noirs sont comparés par le processeur de 25 reconnaissance 18 et, s'il n'y a pas de différence significative entre eux, tous les points noirs sont considérés comme étant justifiés et la phase cinq est terminée S'il y a une différence significative entre les comptes calculé et réel de points noirs, une recherche de segments et régions 30 supplémentaires est effectuée dans la boîte de caractère. Si aucun nouveau segment ou nouvelle région n'est trouvé, on retourne au processus de la seconde étape de la phase cinq. Autrement dit, le traçage de caractère doit être complété. Un comptage exact de points noirs n'est pas toujours 35 possible lorsqu'un désaccord peut être causé par un pontage ou filtrage par la logique 24 de tracé de contour et par des "bruits" dans la boite de caractère Ainsi, il est nécessaire d'établir des critères qui peuvent être employés pour décider quand la différence entre les comptes réel et calcu40 lé de points noirs est significative. Dans une mise en oeuvre de la présente invention, une différence entre les comptes réel et calculé de points noirs était considérée comme significative lorsqu'elle dépassait huit. Tant qu'il y a une différence significative entre les comptes réel et calculé de points noirs, une recherche de segments et régions non tracés supplémentaires continuera à l'intérieur de la boîte de caractère Cette recherche est conduite en essayant d'effectuer des tracés de contour à 50 chaque transition noirblanc et à la dernière transition blanc-noir le long des vecteurs horizontaux et verticaux présélectionnés dans la boîte de caractère Si l'essai donne un bon tracé contenu entièrement dans la boîte de caractère "courant", et si le segment ou la région tracé n'avait pas été tracé précédemment le nouveau segment ou la nouvelle région est inclus comme partie du caractère et le 05 compte calculé de points noirs est mis à jour La détermination de savoir si le segment ou la région avait été précédemment tracé est obtenue par le processeur de reconnaissance 18 par la comparaison des données transférées des registres 80-86 de la logique de tracé de contour dans la mémoire 10 26, à la fin du, ou des, tracé(s) précédent(s), avec les coordonnées maximum et minimum des segments ou des régions nouvellement tracés Si les coordonnées sont égales, le segment avait été précédemment tracé Dans une mise en oeuvre de l'invention, les vecteurs verticaux et horizontaux 15 pré-sélectionnés, et l'ordre dans lequel ils sont recherchés sont comme suit: ( 1) Vecteur vertical à une moitié de la largeur de la boîte de caractère, ( 2) Vecteur vertical à un quart de la longueur de 20 la boîte de caractère, ( 3) Vecteur vertical aux trois quarts de la largeur de la boîte de caractère, ( 4) Vecteur horizontal à une moitié de la hauteur de la boîte de caractère, ( 5) Chaque vecteur vertical dans la boîte de caractère allant de la gauche vers la droite. Comme précédemment noté, les vecteurs verticaux sont larges de 2 bits et sont recherchés de haut en bas Le vecteur horizontal est haut de 2 bits et il est recherché de 30 gauche à droite La recherche de segments ou de régions supplémentaires sera, bien sûr, arrêtée lorsque la difference entre les comptes réel et calculé de points noirs tombe en dessous du niveau présélectionné auquel la différence devient significative. Il est à noter que les tracés produits par la logique 24 de tracé de contour sont sujets à deux types différents de contrôles Le premier type de contrôle est pour déterminer leur validité et est relatif aux conditions exceptionnelles matérielles de tracé de contour, c'est-à-dire, des 40 points noirs isolés, un tracé hors-haut ou hors-bas, une saturation de mémoire de mouvement De plus, les conditions exceptionnelles matérielles sont un tracé hors-gauche et un tracé hors- droite, ces conditions étant détectées par le processeur de reconnaissance 18 Le second type de contrôle 45 est fait pour assister à l'identification du contour de caractère Le second type de contrôle comprend les déterminations suivantes: ( 1) longueur de tracé trop courte, ( 2) tracé ou caractère trop large, ( 3) position relative du tracé et ( 4) trop de segments ou régions dans le caractère. Quand un tracé ne passe pas un contrôle, ou bien quand il est pris comme n'appartenant pas à un caractère courant, il est ignoré ou bien il est pris comme partie du caractère courant avec un ensemble de bits d'exceptions appropriés pour indiquer ces conditions aux processus ulté10 rieurs. Quant au contrôle de point noir isolé, comme expliqué ci-dessus la logique 24 de tracé de contour est commandée en lui fournissant les coordonnées du point de transition et la direction de recherche quand la transition blanc15 noir a été détectée Une fois commandée, la logique de tracé de contour tracera trois mouvements S'il n'y a que trois points ou moins sur le pourtour du segment, le séquenceur 64 de la logique 24 de tracé de contour signalera que la condition exceptionnelle d'un point noir isolé a été détectée 20 Les points noirs isolés sont considérés comme "bruits" sur le document et sont ignorés, c'est-à-dire qu'aucun signal "commande faite" n'est fourni par le séquenceur 64 de la logique 24 de tracé de contour, et aucun train de codes n'est stocké dans l'extracteur 28 de traits des mémoires de 25 trains de codes 750, 752 et 754. Le contrôle pour voir si une longueur de tracé est trop courte est effectué en comparant le nombre stocké dans le registre 736 d'adresses de mémoire de trains de codes (FIGURE 16 A) avec un nombre pré-sélectionné stocké dans la 30 mémoire 26 du processeur de reconnaissance Tous les tracés de segment nécessitent une longueur minimum de tracé Un segment ayant une longueur de tracé inférieure à ce minimum comme un point noir isolé, sera considéré comme "bruit" sur le document Il est à noter que les tracés de régions ne 35 sont pas sujets au contrôle "longueur de tracé trop courte", parce que de petites, mais significatives, régions peuvent exister Il est aussi à noter que, pendant la recherche de segments dans les phases 1 à 4 de l'opération de traçage de contour de caractère, la nécessité d'une longueur 40 minimum de tracé est aussi utilisée pour des tracés qui sont hors-haut ou hors-bas Les résultats de conditions hors-haut et hors-bas considérées comme "bruits" et de légères saillies du caractère en haut et en bas de la boite de caractère sont ignorés Cependant, pendant la recherche de la 45 limite droite d'un caractère qui va hors-haut ou hors-bas, la nécessité d'une longueur minimum de tracé n'est pas utilisée. Le contrôle "tracé de caractère trop large" n'est effectué que lorsque le premier segment de caractère est tracé dans la première phase de l'opération de traçage de contour Un tracé de caractère est considéré trop large si sa largeur dépasse une et un quart de la largeur du caractère spécifiée dans une table de base active stockée dans la 05 mémoire 26 Si le segment est trop large, la "boîte segment" est renvoyée comme la "boîte de caractère" ayant un bit d'état de caractère-trop-large Si le premier segment est trouvé pendant larecherche du vecteur vertical le plus à gauche-de la fenêtre de recherche de caractère, le reste 10 du vecteur est recherché pour d'autres segments Quand un nouveau segment est trouvé le long de ce vecteur, la boîte de caractère sera agrandie pour contenir le nouveau segment trouvé Si la boîte de caractère agrandie dépasse le seuil de trop grande largeur, le caractère est considéré comme 15 trop large Le traçage de caractère retournera la boîte de caractère agrandie avec un bit d'état de caractère-troplarge Tout nouveau segment trouvé pendant les phases 2-5 de l'opération de traçage de contour qui s'effectuerait dans une boîte de caractère trop large sera exclu du caractère 20 courant. Les positions d'un trace relatif à une fenêtre de recherche de segment, à une fenêtre de recherche de caractère et à une boîte de caractère sont soumises à un nombre de tests pour déterminer si le tracé trouvé appartient au 25 caractère courant Ainsi, le bord droit d'un tracé est comparé au bord gauche de la fenêtre de caractère pendant la phase un Ce contrôle est nécessaire pour permettre le traçage d'un segment d'un caractère localisé vers la gauche du caractère courant, mais ayant une partie qui s'étend dans 30 la boîte de caractère courant. Une seconde sorte de contrôle de limite droite compare la limite droite du tracé avec la coordonnée x du vecteur vertical o l'on trouve la transition qui conduit vers le tracé Ce type de contrôle est effectué pendant la 35 recherche du bord droit d'un caractère après qu'une condition hors-haut ou hors bas ait été détectée dans l'une des phases un ou deux Ce second type de contrôle de bord droit est effectué sur tous tracés, que des conditions exceptionnelles de la'logique de tracé de contour aient été détectées 40 ou pas et assure que la recherche continuera à progresser Le contrôle "position relative de tracé" comprend aussi un contrôle "centre de segment" qui est effectué uniquement pendant la phase 1 de l'opération de tracé de contour Pendant ce contrôle, la localisation du centre 45 d'un segment, tel que déterminé par le processeur de reconnaissance 18 en calculant la moyenne des coordonnées x minimum et maximum, est comparée à la localisation du bord gauche de la fenêtre de recherche de caractère Si le centre du segment est à la gauche du bord gauche de la 50 fenêtre de recherche de caractère le segment est considéré comme appartenant au caractère précédent et est ignoré Ce contrôle est effectué pour permettre l'inclusion d'un segment appartenant au caractère précédent mais pouvant être tracé parce que le "caractère courant" est en train d'être tracé à un niveau plus bas que celui du caractère précédent, c'est-à-dire que le seuil noir/blanc sera recalculé pour chaque caractère Pour un tracé qui est trop large 05 ou pour lequel la mémoire de trains de codes est saturée, il est possible de situer la fenêtre de recherche de caractère vers la droite du centre du tracé Ainsi, le contrôle "centre de segment" est effectué uniquement sur les tracés qui ne sont pas trop larges et qui ne résultent pas de 10 conditions exceptionnelles de logique de trace de contour. La localisation du bord gauche du segment tracé est aussi comparée avec le bord gauche de la fenêtre de recherche de caractère Puisque tous segments qui traversent le bord gauche de la fenêtre de recherche de carctère sont 15 localisés dans la phase un de l'opération de traçage de contour, tout tracé qui traverse le bord gauche de la fenêtre de recherche de caractère dans les phases 2 à 4 doit appartenir au caractère précédent et doit avoir été tracé grâce au matériel de filtrage et/ou traçage à un niveau inférieur à celui utilisé pour le caractère précédent. Le premier type de contrôle comprend aussi un contrôle de contenance qui est effectué sur tout segment ou région supplémentaire localisé pendant la cinquième phase, ou la phase de comptage des points noirs de l'opération de 25 tracé de contour Puisque l'étendue du caractère est déterminée pendant les phases précédentes de l'opération de tracé de caractère, tous les segments et régions encastrés appartenant au caractère courant doivent être contenus dans la boîte de caractère courant Tout tracé arrêté par ce 30 contrôle n'est pas considéré comme partie du caractère courant et est ignoré Puisque les fenêtres de recherche de segment dans les phases 2-4 sont-toujours distantes de la boîte de caractère courant d'un espace égal à l'unité de balayage, le contrôle de contenance permet à la boite de 35 segment ou la boîte de région du nouveau tracé de dépasser la boîte de caractère courant de plus de deux unités de balayage. Comme décrit précédemment, la logique de tracé de contour détecte quand le segment à tracer est hors-haut ou 40 hors-bas de la fenêtre de recherche de caractère Ainsi, le détecteur 58 de tracé horshaut et le détecteur 60 de tracé hors-bas définissent une région verticale dans la mémoireligne 16 o devrait se trouver le caractère Les données de mémoire-ligne extérieures à cette région ne peuvent contenir 45 de données valables Si un tracé dépassait l'une de ces limites, le tracé de contour, dans la manière décrite, sera terminé par l'établissement d'un bit de condition exceptionnelle de hors-haut ou hors- bas, c'est-à-dire que des signaux seront émis par les détecteurs appropriés 58 et 60 vers le 50 séquenceur 64 qui causera l'arrêt de l'opération de tracé. Le processeur de reconnaissance 18 "lira" dans le registre d'état de l'émetteur-récepteur de données 52 de la logique de tracé de contour 24 pour déterminer pourquoi le tracé a été stoppé Il est à remarquer que, pendant la phase 1 de l'opération de traçage, un tracé est soumis aux contrôles de points noirs isolés, de longueur de tracé trop courte, et de bord droit avant de subir le contrôle des conditions de 05 tracé horshaut ou hors-bas Ceci permet d'ignorer le "bruit" situé pré du haut ou du bas de la fenêtre de caractère De même, on ignorera une légère saillie des caractères en dehors de la ligne précédente ou suivante Le contrôle de bord droit empêche les tracés hors-haut ou hors-bas appartenant au caractère précédent de causer l'établissement de bits d'exception ci-dessus mentionnes. De même, dans les phases 2 à 4 les contrôles de points noirs isolés et de longueur de tracé minimum sont prioritaires sur le contrôle pour des conditions de tracé hors15 haut ou hors-bas Cependant, un contrôle de bord gauche est substitué au contrôle de bord droit avant d'effectuer le contrôle pour les conditions de tracé hors-haut ou horsbas. Dans la phase de comptage de points noirs, tout tracé 20 avec une condition hors-haut ou hors-bas est ignoré, c'està-dire que le tracé n'avait pas pu être terminé pendant une phase précédente. Quand une condition hors-haut ou hors-bas est détectée par l'un des détecteurs 58 ou 60 pendant la première des 25 quatre phases de l'opération de tracé de contour, et qu'ainsi le séquenceur a établi le bit d'état d'exception, la boîte de caractère contiendra le tracé avec la condition hors-haut/hors-bas De plus, si une condition de hors-haut ou hors-bas est détectée pendant l'une des phases 1 ou 2, 30 ceci constituera un signal vers le processeur de reconnaissance notant que le bord droit du caractère doit être déterminé En conséquence, la fenêtre de recherche de caractère devra être examinée pour chercher des tracés supplémentaires localisés vers la droite de la boîte de carac35 tère courant qui a été agrandie pour contenir le tracé qui va hors-haut ou hors-bas L'aire recherchée est la partie de la fenêtre de recherche de caractère qui s'étend vers la droite de la boîte de caractère courant Si un bon tracé est trouvé, 'c'est-à-dire un tracé qui n'a pas de hors-haut, 40 pas de hors-bas, pas de saturation de mémoire de mouvement, et si sa longueur est trop courte, le tracé est ignoré et la recherche continue Sans s'inquiéter de savoir si le tracé trouvé est "bon" ou pas, le bord droit du tracé est alors comparé à la coordonnée x du vecteur le long duquel la 45 transition qui rapporte le tracé est trouvée Si le bord droit n'est pas vers la droite du vecteur, le tracé est ignoré Un tracé qui n'a pas été ignoré sera alors inclus comme partie du caractère pourvu que toute la largeur ne soit pas le résultat de condition "caractère trop large". 50 Après que la boîte de caractère ait été agrandie, l'aire vers sa droite est examinée jusqu'à ce que la fin de la fenêtre de caractère soit atteinte. Si la capacité de la mémoire de trains de codes dans la logique 28 d'extraction de traits est dépassée pendant le traçage d'un segment le bit d'état de saturation de mémoire de trains de codes sera établi et le processus de tracé arrêté puisque le tracé est plus long que ce qui peut être 05 stocké et donc doit être enregistré comme "bruit", résultat d'un document non aligné etc et ainsi ne constituant pas une donnée Dans la première phase de l'opération de tracé de contour, un tracé est sujet à un contrôle de points noirs isolés, à un contrôle de longueur de tracé trop court 10 et un contrôle de bord droit prioritaires sur le contrôle de condition de saturation de mémoire de trains de codes Le contrôle de bord droit empêche l'inclusion de tracés avec saturation de mémoire de mouvement appartenant à la boîte de caractère précédent Si le bit d'état de saturation de 15 mémoire de trains de codes est établi, le processeur de reconnaissance 18 mettra à jour la boîte de caractère pour inclure le tracé avec saturation de mémoire de trains de codes, et le traçage du caractère est terminé Pendant Ies quatre dernières phases de l'opération de tracé de contour, 20 un tracé avec saturation de mémoire de mouvement est présumé être une partie du caractère suivant et est ignore. Le nombre maximum de segments et régions, c'est-adire le contrôle pour déterminer s'il y a trop -de segments/régionis dans le caractère, est une fonction de logi25 ciel/matériel Dans une mise en oeuvre de l'invention, les mémoires de trains de codes 750 752 ou 754 stockent respec tivement les éléments de train de codes proportionnels aux trois premiers segments/régions tracés. La logique l'extraction de traits 28, en association 30 avec le processeur 18, effectue la fonction de recherche de chaque segment du caractère courant pour la présence de traits géométriques sûrs Selon la présente invention, huit traits ont été sélectionnés Des exemples de traits choisis, définis par une courbure de contour, sont montrés dans la 35 FIGURE 10 Les informations concernant ces traits sont rassemblées et mises en code et alors utilisées pour représenter les segments du caractère pendant la classification de caractères. L'extraction de traits est une procédure à deux é40 tapes D'abord, les trains de codes stockés dans les mémoires 750, 752 et 754 sont recherchés pour des régions de courbure significative positive, c'est-à-dire convexe, et négative, c'est-à-dire concave Si ces régions satisfont à certaines exigences le centre ou point le plus significatif 45 dans cette région est classé comme un des quatre types de "point d'intérêt" Un point sur le pourtour d'un segment sera qualifié de point d'intérêt s'il répond à des conditions heuristiques définies Dans la seconde étape, les points d'intérêt (PI) sont à nouveau classés selon les 50 traits situés sur le contour de l'aire environnante, c'està-dire que la classification dépendra des différentes combinaisons de courbures et de changements de direction Ainsi. comme il sera expliqué en plus grand détail ci-dessous, la recherche de points d'intérêt est basée sur le calcul d'un angle ou la mesure de la courbure à chaque point d'une séquence de trains de codes La technique employée dans la classification de traits comprend une convolution de la 05 séquence de trains de codes avec une fonction trapézoidale atténuante suivie par l'application d'une fonction différentielle Le calcul réel est décrit par: 0 ' =S Qu o ad, ( 2) Al v=-fi 44 d d' ème o a est le j élément de la séquence de trains de codes, j N est le groupe ou nombre d'éléments de train de codes de chaque côté du point i compris dans le total, m est l'espace entre les deux sommes, et n ig m1 est l'angle ou la courbure au point i de groupe N et d'espace m. Les valeurs de m et N sont choisies pour conserver au mieux les informations concernant la forme des traits tout bi> nt en minimisant les parasites de numérisation L'angle 96 sera positif pour des régions convexes et négatif pour des régions concaves Sa valeur maximum sera habituellement 20 réduite à 4 n, qui est équivalent à 180 degrés de rotation dextrorsum de changement de direction. Avant de décrire le matériel qui effectue les calculs représentés dans la logique 28 d'extraction de traits, le procédé sera illustré en référence aux FIGURES 11 A-11 C et 25 17 Il est supposé que le caractère "s", illustré FIGURE 11 A, ait été trouvé et son contour entièrement tracé La FIGURE 11 B représente l'image de mémoire-ligne du caractère de la FIGURE 11 A comme il devrait être "vu" par le tracé de caractère Dans l'exemple décrit, le caractère consiste en 30 un seul segment Le tracé de ce segment fourni par la logique 24 de tracé de contour est représenté dans la FIGURE ll C, le poin't de départ du tracé étant indiqué par le signe (%). La recherche des points d'intêret suit le pourtour 35 du segment en recherchant des régions qui sont significativement concaves ou convexes comme une "fin de courbe" et/ou la surface externe doucement incurvée de la lettre "O" Basé sur l'amplitude de la courbure et la "durée" de la courbure, un point dans une région convexe ou concave peut être 40 classé comme l'un des quatre types de points d'intérêt Une liste contenant les informations sur chaque point d'intérêt est gardée pour chaque tracé. Une technique de contrôle de niveau est utillisée pour détecter des points d'intérêt le long du pourtour du 45 tracé L'ensemble des angles possibles qui peuvent être rencontrés en un point du pourtour du tracé est ordonné dans une série de niveaux consécutifs Les FIGURES 12 A et 12 B sont des tables de contrôle de niveau utilisées respectivement pour des tracés de segments ou de régions fermées Une fois que les valeurs de sortie haute et basse ont été émises 05 avec des indicateurs de telle sorte que le point maximum ou le point-moyen d'un niveau sont désirés, les points successifs le long du tracé stocké dans la mémoire de trains de codes sont examinés jusqu'à ce que le niveau courant ait été sorti Les valeurs de sortie haute et basse, avec la fonc10 tion trapézolidale atténuante et les fonctions différentielles, sont établies par expérimentation et sont stockées dans la mémoire 26 du processeur de reconnaissance. Il est à noter que, avant que la recherche de points d'intérêt puisse être commencée, un point de départ de 15 recherche appropriée doit être trouvé sur le pourtour du tracé Le point de départ de la recherche doit être dans une région relativement droite du pourtour pour garantir que la recherche n'a pas été commencée près d'un point d'intérêt Le point de départ est déterminé par recherche d'un 20 point du contour avec un angle ou une courbure proche de zéro Dans le cas de tracés très petits ou uniformément ronds, un point de départ ne peut être trouver Si cela arrive, le tracé n'aura aucun point d'intérêt, 'et de ce fait, aucun trait. Une fois que le point de départ de la recherche a été trouvé, on détermine le point final de la recherche La logique 28 d'extraction de traits fait automatiquement le tour jusqu'à la fin du tracé du segment dans la mémoire 42 de trains de codes, de telle sorte que le point final du 30 tracé est le point précédant le point de départ du tracé ce qui forme un tracé ou pourtour effectivement fermé et ce qui permet à tout le tracé d'être recherché par une méthode continue. La FIGURE 13 est un relevé angulaire pour l'exemple 35 de caractère de la FIGURE 11 A Le premier angle relevé correspond au point de départ du tracé (le % dans la FIGURE 11 C) La FIGURE 13 montre aussi la localisation des points de départ de recherche et de fin de recherche Le type de points d'intérêt trouvés pendant la recherche, et leur 40 localisation, sont également indiqués sur la FIGURE 15. Une fois le point de départ de recherche trouvé, le processus de la recherche des points d'intérêt commence au Zéro du Niveau d'Entrée (EO) La valeur de sortie haute pour EO est 2, la valeur de sortie basse est -1 Pour l'exemple 45 de caractère de la FIGURE 9, le niveau EO est sorti à l'adresse de la mémoire de trains de codes (MMA) 5 qui a une valeur de 3 Pour le niveau EO, les longueurs minimum de sortie haute et basse sont faite suffisamment grande pour assurer qu'aucun point d'intérêt ne soit déclaré. La recherche de points d'intérêt est alors au niveau positif 1 (P 1) qui a une valeur de sortie haute de 6 et une valeur de sortie basse de 3 La recherche demeure à ce niveau uniquement jusqu'à MMA 7, qui a une valeur de 11 (octet, c'est-à-dire base, 8) Aucun point d'intérêt n'est déclaré pour le niveau Pl parce que la longueur minimum de sortie haute est 7 et que la durée dans ce niveau n'était que de 2. * La recherche est alors au niveau P 2, avec une valeur de sortie haute de 14 ( 8) et une valeur de sortie basse de 6 Une sortie haute de niveau P 2 dans le niveau P 3 se produit à MMA 11 Aucun point d'intérêt de niveau 2 n'est déclaré parce que la longueur minimum de sortie haute néces10 saire est établie suffisamment haute pour s'assurer qu'aucun point d'intérêt ne soit déclaré pour des sorties hautes de niveau 2. Dans le niveau P 3, la valeur de sortie haute est placée au maximum du matériel de la logique d'extraction de 15 traits, et la valeur de sortie basse est placée au 7 Le niveau P 3 est sorti à MMA 16 ( 8) Un type 3 de point d'intérêt est déclaré, parce que la longueur minimum spécifiée est 1 Ceci oblige un point d'intérêt à être déclaré chaque fois que le niveau P 3 est sorti Pour le niveau P 3, 20 le point qui a l'angle le plus grand est déclaré comme point d'intérêt Dans l'exemple décrit, le point d'intérêt est à MMA 12 ( 8) S'il y a deux, ou plus, points avec la même valeur la plus grande, le point moyen de ces points est déclaré comme point d'intérêt. Puis, le niveau passe du niveau P 3 au niveau Pl qui a une valeur de sortie haute de 6 et une valeur de sortie basse de 3 Ce niveau est immédiatement quitté pour le niveau EO à MMA 17 ( 8). Une sortie basse est prise de EO à MMA 20 ( 8) Un 30 type -1 de point d'intérêt est déclaré quand le niveau Nl est sorti à MMA 37 ( 8) Dans ce cas, le point d'intérêt est déclaré au point moyen du niveau Nl à MMA 27 ( 8) La FIGURE 12 fournit les informations spécifiques concernant toutes les transitions de niveaux qui se sont produites Ces tran35 sitions et les points d'intérêt déclarés sont indiqués sur la FIGURE 14 La recherche de points d'intérêt est terminée quand le point de fin de recherche est atteint, c'est-à-dire MMA 1 dans l'exemple choisi o lle point de départ de recherche était MMA 2 Une entrée de point d'intérêt est 40 faite dans une liste pour chaque point d'intérêt trouvé sur le tracé Cette entrée contient seize mots d'information sur chaque point d'intérêt Quelques unes de ces informations sont rassemblées quand l'entrée du point d'intérêt est créée, c'est-à-dire quand le point d'intérêt est déclare. 45 et le reste des informations est rassemblé quand la recherche des points d'intérêt est terminée Dans l'exemple décrit, huit points d'intérêt ont été trouvés Les informations rassemblées quand le point d'intérêt est déclaré sont son niveau et son adresse dans la mémoire de trains de 50 codes On discutera des informations restantes ci-dessous au cours de la description du fonctionnement de la logique d'extraction de traits. Une fois que la recherche des points d'intérêt est terminée, et les entrées des points d'intérêt alimentées, chaque point d'intérêt est, de plus, classé selon un des huit traits représentés sur la FIGURE 10 Cette classification est en accord avec les tests suivants qui sont effec05 tués séquentiellement pour chaque type de point d'intérêt, tous les nombres étant en octet. Pour le Type -1 de Point d'Intérêt: si Somme Angulaire -37 Type de Trait = BAY si Angle 4-2 4 -3 et si -37 11 Type de Trait = STUB autre: Type de Trait = CURL ___________________________________________________________Pour le Type 3 de Point d'Intérêt: si Angle 4-2 > 15 et si Somme Angulaire > 115 ou si (Angle 4-10 + Angle 4-20) > 24 Type de Trait = SPUR si Angle 4-10 410 ou si Angle 4-20 4 10 Type de Trait = STUB autre: Type de Trait = SPUR ___________________________________________________________Comme chaque point d'intérêt est classé comme trait un mot simple de trait est créé Ce mot contient le type de trait (un des huit), une direction (une des huit), et une position en x et y ( 16 possibilités) Ces mots simples de trait sont placés dans une liste de mots simples de trait comme ils ont été créés L'ordre de ces mots dans la liste indique l'ordre, dans une rotation dextrorsum, des traits 05 sur le tracé de caractère La FIGURE 15 montre l'emplacement et le type de chaque trait sur le tracé de caractère de la FIGURE 11 C La logique 28 d'extraction de traits est montrée sous la forme d'un bloc diagramme dans la FIGURE 16 la FIGURE 16 10 sera décrite en parlant des différentes opérations effectuées dans une extraction de traits Ainsi, dans le but d'effectuer le calcul d'une courbure, le processeur de reconnaissance 18 doit charger les données appropriées dans la logique 28 d'extraction de traits, ces données passant par 15 le bus entrée/sortie 19 et le récepteur 700 Le décodeur 704 d'adresse du bus entrée/sortie, et le circuit logique cycle bus, détectent quand le processeur 18 est en train d'écrire des données à la logique 28 d'extraction de traits et crée des synchronismes d'écriture nécessaires pour le stockage de 20 données dans le registre approprié La mémoire de trains de codes, dans l'exemple décrit, contient trois mémoires 750 752 et 754 Une mémoire appropriée doit, tre choisie pour les données de train de codes pour chaque segment ou région fermée Ceci est réalisé par des données chargées dans la 25 logique sélective 738 de mémoire de trains de codes en venant du processeur 18, ladite logique 738 permettant à une des trois mémoires de trins de codes d'abord de recevoir le tracé désiré, et ensuite de pouvoir analyser le tracé Les données venant du processeur 18 comprennent aussi un para30 mètre de longueur de mémoire de trains de codes qui est chargé dans le registre 710 de longueur de mémoire de trains de codes Les données chargées dans le registre 710 de longueur de mémoire de trains de codes sont utilisées par un circuit 722 de calcul d'adresse de mémoire de trains de 35 codes, par les comparateurs 706 et 740 pour permettre un accès d'environnement des données dans la mémoire de trains de codes, c'est-à-dire que, le tracé étant une courbe fermée, le train de codes doit être stocké dans une mémoire dite "circulaire" Puisque la plupart des calculs d'extrac40 tion de traits nécessitent un accès aux éléments de train de codes soit en avant soit en arrière le long du tracé à partir d'un point courant, le registre 736 d'adresses de mémoire de trains de codes est soit incrementé, soit décrémenté, par le séquenceur 744, ou décallé plus et moins à la 45 fois par le circuit 722 de calcul d'adresse Puisque ce mouvement d'avant et arrière le long du contour comprend le passage par les points de départ et de fin du tracé, la logique du circuit 722 et les comparateurs 740 et 706 compensent cet état de fait Puisque les longueurs des tracés 50 diffèrent, le registre 710 a besoin de définir la longueur qui est l'adresse du dernier point du tracé dans la mémoire de trains de codes. Le registre d'adresse de départ et le compteur 708 seront chargés avec les données du point de départ qui, si la courbure autour d'un point seul doit être déterminée représente l'adresse dans une des mémoires de trains de codes 750, 752 ou 754 du point d'intérêt autour duquel la 05 courbure doit être calculée Le calcul de la courbure autour d'un point est utilisé pour classer par type un point d'intérêt. Les données de courbure "contour bas" sont chargées dans un registre 766 de contour bas pour comparer, dans un 10 comparateur 774, avec les résultats d'un calcul de courbure élaboré dans un circuit de calcul de courbure Cette comparaison permet au processeur de reconnaissance 18 de voir si la valeur de courbure calculée est en-dessous d'une valeur prédéterminée "contour bas". Pareillement, le dispositif comprend un registre 764 de courbure "contour haut" qui peut coopérer avec un comparateur 772. Si l'option de comparaisbn n'est pas utilisée, c'est.à-dire dans le calcul de courbure autour d'un point seul. 20 les registres 766 et/ou 764 doivent être utilisés au-delà des valeurs basse et/ou haute provenant du circuit 762 ou au minimum et/ou maximum quand le calcul de courbure séquentiel est effectué comme il sera décrit ci-après. La logique d'extraction de traits comprend aussi un 25 registre de commandes 718 chargé avec des données fournies par le processeur de reconnaissance 18, le registre de commandes 718 fournissant des entrées de contrôle au séquenceur 744 Ainsi, les données chargées dans le registre de commandes 718 informeront le séquenceur 744 que, par 30 exemple, un calcul de courbure autour d'un point seul est à élaborer. L'extracteur de traits 28 comprend de plus un registre de paramètres de courbure 716 Les données chargées dans le registre 716 comprennent un nombre de sortie 6-bits qui 35 sera additionné aux contenus du registre 708 d'adresse de départ au moyen de la logique 722 de calcul d'adresse pour déterminer l'adresse dans la mémoire de train de codes du point d'intérêt qui peut être sortie du point adressé par le registre'708 de départ Ainsi, le circuit logique 722 40 corrige les adresses dans les mémoires 750 752 et 754 si le signal de sortie du registre 716 permet à l'adresse résultante de traverser le départ ou la fin du tracé, réalisant ainsi l'accès large des données dans les mémoires de trains de codes, comme décrit ci-dessus Le registre 716 de para45 mètres de courbure reçoit aussi une valeur "largeur" qui est d'une unité inférieure au nombre d'éléments de train de codes adjacents ou groupe dans chacun des deux groupes d'éléments additionnés dans le calcul de courbure De plus, le registre 716 mémorise une valeur "espace" qui est la 50 moitié du nombre d'éléments de train de codes se trouvant entre les deux groupes d'éléments qui sont additionnés dans le calcul de courbure En conséquence, l'espace est toujours d'une même valeur Le chargement des données dans le regis- tre 716 engendre aussi la commande départ qui est détectée par le séquenceur 744 pour démarrer l'opération de calcul de courbure. Le calcul de courbure autour d'un point d'intérêt 05 unique est contrôlé par le séquenceur 744 et s'effectue comme suit Un drapeau "occupé" sera établi, le compteur de largeur 730 sera chargé avec le complément des données dans le registre 716 de paramètres de courbure et le compteur d'espaces 732 sera chargé avec les données correspondantes 10 venant du registre 716 Le processeur de reconnaissance 18 peut tester le drapeau d'occupation pour déterminer quand la logique d'extraction de traits a terminée une opération commandée L'accumulateur dans la logique 762 de calcul de courbure est nettoyée Le registre 736 d'adresses de mémoire 15 de trains de codes est chargé avec les adresses venant du circuit 722 de calcul d'adresses de mémoire de trains de codes et le mutiplexeur 734 est ainsi activé Le séquenceur 744 décrémente le compteur 732 et, en synchronisme, le registre d'adresses 736 aboutissant à des éléments de train 20 de codes "sautant" dans la direction arrière, c'est-à-dire, en fait, ledit "espace" La logique dans le registre d'adresses 736 détecte si l'adresse venant du registre 736 d'adresses de mémoire de trains de codes atteint le zéro qui permettra au registre 736 d'être chargé avec des données de 25 longueur de train de codes en provenance du registre 710 sur la prochaine impulsion de décomptage venant du séquenceur 744, le multiplexeur étant activé en conséquence Ce qui précède fournit une information d'entourage dans un mouvement inverse à travers le point de départ et de fin du 30 tracé Le circuit de compensation de contour 758 est mis en drapeau, c'est-à-dire que le point de départ et de fin du tracé a été traversé pendant une opération de calcul de courbure Le circuit de compensation de contour 758 corrige pour la rotation de 360 degrés des éléments de train de 35 codes ce qui arrive pendant un tracé de contour Le séquenceur 744 teste un signal de saturation venant du compteur d'espaces 732 pour arrêter le processus de saut au-dessus des espaces Le séquenceur 744 continue à décrémenter le registre d'adresses 736 et démarre en synchronisme le comp40 tage du compteur de largeur 730 Les éléments de train de codes corrigés venant du circuit 758 de compensation de contour sont additionnés à ceux de l'accumulateur dans le circuit de calcul 762 en synchronisme avec le comptage des compteurs 736 et 730, effectuant ainsi la somme positive du 45 calcul de courbure (Equation 2 ci-dessus) Le séquenceur 744 teste l'information "conduite" venant du compteur 730 pour déterminer quand la dernière addition doit être effectuée et arrête alors l'opération En conséquence, les compteurs de largeur et d'espaces et le registre de mémoire de trains 50 de codes sont à nouveau chargés comme ci-dessus, et la logique de compensation 758 est remise à zéro Le séquenceur 744 vide alors le compteur d'espaces 732 et alimente le compteur d'adresses 736 en synchronisme avec des sauts d'es- pace dans la direction avant Un comparateur 740 détecte si l'adresse venant du compteur d'adresses 736 atteint la longueur de mémoire de train de codes stockée dans le registre 710 et indiquant de ce fait que l'adresse a atteint le 05 début/fin du tracé Le comparateur 740 permettra au registre d'adresses de mémoire de trains de codes 736 d'être vidé sur la prochaine impulsion de comptage avant venant du séquenceur 744, le multiplexeur 734 étant activé en consequence, ceci fournissant une information d'entourage dans un 10 mouvement avant à travers le point départ/fin du tracé Le circuit de compensation de contour 758 sera mis en drapeau, comme décrit ci-dessus, c'est-à-dire qu'une correction des éléments de train de codes est nécessaire pour compenser la rotation de 360 degrés de l'élément de train de codes du 15 départ vers la fin de l'opération de tracé du contour Le séquenceur 744 teste le signal de saturation fourni par le compteur d'espaces 732 et, quand la saturation arrive, stoppe le processus de saut d'espace Le séquenceur 744, en synchronisme, continue l'alimentation du compteur d'adresses 20 736 (en avant), démarre l'alimentation du compteur de largeur 730 et soustrait les éléments de train de codes corrigés fournis par le circuit 758 de compenaation de contour en provenance de l'accumulateur dans le circuit 762 de calcul, effectuant ainsi une somme négative selon l'équation ( 2) 25 Le séquenceur 744 teste une information "conduite" venant du compteur de largeur 730 pour déterminer quand la dernière soustraction doit être effectuée et alors stoppe l'opération Quand l'opération de courbure est terminée le séquenceur 744 efface le drapeau "occupé" et se remet dans l'état 30 d'attente pour attendre la prochaine commande du processeur 18 Le processeur de reconnaissance 18 teste un signal de drapeau "occupé" devenant erroné, le bus 19 entrée/sortie ayant une ligne réservée pour cette fonction et un test drapeau et une instruction de saut dans le processeur 18 qui 35 fournit un test rapide pour un état occupé de l'extracteur de traits 28 Quand le calcul de courbure est effectué, le processeur 18 peur lire la valeur de courbure dans le circuit de calcul 762 et optionnellement l'état de contour haut/bas dans les comparateurs 772 et 774 La logique en40 trée/sortie du circuit 704 activera les multiplexeurs et les pilotes du circuit 702 pour conduire les données désirées dans la logique d'extraction de traits 28 via Je bus 19, et ainsi dans le processeur 18. Le processus décrit ci-dessus permet le calcul de la 45 courbure du tracé autour d'un point unique Il est aussi nécessaire de calculer la courbure du tracé autour d'une série séquentielle de points pour déclarer des points d'intérêt en première instance Pour accomplir cette derniere fonction, le processeur charge le circuit 738 de sélection 50 de mémoire de trains de codes et le registre 710 de longueur de mémoire de trains de codes de la manière décrite cidessus Aussi l'adresse du point de départ est chargée dans le registre 708 d'adresses de départ, ces données représen- tant l'adresse des mémoires de trains de codes du premier élément de train de codes sur le tracé de la série séquentielle d'éléments d'intérêt, c'est-à-dire que la série d'éléments de train de codes autour de laquelle la courbure 05 est calculée est adressée séquentiellement dans la direction "avant" du tracé L'adresse de fin est chargée dans le registre 712 et représente le dernier élément de train de codes de la série d'éléments sur le tracé Des données proportionnelles au contour bas de courbure sont chargées 10 dans le registre de contour 766 pour être comparées avec la valeur de courbure résultant du calcul de courbure dans le comparateur 774, la sortie du comparateur 774 étant testée par le séquenceur 744 pendant l'opération de calcul de courbure séquentielle Le séquenceur arrêtera l'opération 15 si le contour bas est dépassé. Comme décrit immédiatement ci-dessus le registre 764 de contour haut de courbure est chargé avec des informations qui seront comparées dans le comparateur 772 aux résultats du calcul de courbure Le mot de commande est chargé dans le 20 registre de commandes 718 et informera le séquenceur 744 qu'un calcul de courbure séquentiel doit être effectué Le registre 716 de paramètres de courbure est chargé avec des données comme décrit ci-dessus, excepté que le signal de sortie sera zéro pour l'opération de courbure séquentielle 25 L'accumulateur d'additions de courbure dans le circuit 770, un circuit logique 768 de valeur de pic de courbure, et un circuit logique 720 d'adresse d'élément de train de codes de valeur de pic de courbure sont vidés quand le registre 716 de paramètres de courbure est chargé Ceci démarre la 30 série d'opérations de courbure séquentielles. Le calcul de courbure séquentiel est contrôlé par le séquenceur 744 et s'effectue comme suit D'abord, le drapeau "occupé" est mis Le calcul de courbure pour le premier point d'intérêt de la séquence de points est effectué comme 35 décrit ci-dessus Quand le calcul de courbure est terminé, le séquenceur 744 contrôle pour voir s'il existe une des conditions d'arrêt Une condition d'arrêt existera si le comparateur 714 indique que le compteur d'adresse de départ a compté jusqu'à la valeur comprise dans le registre 712 40 d'adresse de fin La condition d'arrêt arrivera aussi si la porte 776 détecte que l'un des comparateurs 772 ou 774 indique que le contour a été dépassé Si l'une des conditions d'arrêt arrive, le séquenceur 744 arrêtera le processus, effacera le drapeau "occupé" et sera remis à zéro. 45 Cependant, si une condition d'arrêt n'intervient pas, le séquenceur 744 continuera l'opération par laquelle la courbure pour le prochain point de la séquence sera calculée par la logique 762 de calcul de courbure suivant une série d'opérations supplémentaire Ainsi, le séquenceur 744 déliv50 re un signal "d'horloge d'addition" de manière que la logique 770 d'addition de courbure additionne la valeur de courbure venant du circuit 762 de calcul de courbure vers un accumulateur dans le circuit 770, pour délivrer une valeur d'addition de courbure Aussi le signal "d'horloge d'addition" permet au circuit logique 768 de valeur de pic de comparer la valeur de courbure calculée à une valeur stockée dans un registre du circuit logique 768 Si la valeur calcu05 lée est plus grande que la valeur contenue dans le registre de valeurs de pic du circuit 768, la valeur calculée sera stockée dans le registre 768 et, en parallèle, la valeur courante dans le compteur d'adresses de départ 708 sera stockée dans un registre d'adresses de pic d'un circuit 10 logique 720 d'adresses de pic de courbure, sauvant ainsi l'adresse identifiant le point de la série de points d'intérêt sur lequel se produit la valeur de pic de courbure Si la valeur de courbure calculée dans le circuit de calcul 762 est plus petite aue la valeur stockée dans le registre 768, 15 le signal "d'horloge d'addition" n'entraîne aucune action dans le registre 768 Le circuit logique 720 d'adresses de pic de courbure contient aussi une logique pour déterminer l'adresse à mis distance entre les adresses de deux valeurs de pics qui ont la même valeur de courbure, c'est-à-dire 20 l'adresse de pic moyenne Chaque fois qu'une nouvelle valeur de pic est stockée dans le registre de valeurs de pic 768 un compteur d'adresses moyennes du circuit logique 720 est aussi chargé avec la valeur courante dans le registre de départ 708 Quand la valeur calculée par le circuit 762 de 25 calcul est inférieure à la valeur contenue dans le registre du registre 768 de valeur de pic, le compteur d'adresse moyenne est incrémenté pour chaque autre cycle d'horloge d'addition venant du séquenceur 744 Si la valeur calculée par le circuit 762 est égale à la valeur contenue dans le 30 registre 768, la valeur dans le compteur d'adresses moyennes du circuit logique 720 est chargée dans le registre d'adresses de pic du circuit 720, stockant ainsi l'adresse moyenne. Le signal "d'horloge d'addition" venant du séquenceur 744 incrémentera aussi le compteur d'adresses de départ dans le 35 registre/compteur 708, marquant ainsi le prochain point dans la séquence de points d'intérêt Si le comparateur 706 détecte que la valeur contenue dans le compteur d'adresses de départ du registre/compteur 708 a atteint la valeur dans le registre'de longueur 710, indiquant le dernier point du 40 tracé, le signal "d'horloge d'addition" remettra à zéro le compteur dans le registre/compteur 708 plutôt que de l'incrémenter, ce qui met en oeuvre un tour supplémentaire. Suivant l'émission du signal "d'horloge d'addition", le séquenceur 744 séquencera le calcul de courbure autour du 45 prochain point identifié par le compteur 708 dans l'opération de courbure séquentielle Le séquenceur 744 séquence par un algorithme à quatre étapes le calcul de coubure pour ces points subséquents le long de la séquence de points d'intérêt, c'est-à-dire que puisqu'il est presque impossi50 ble que quatre termes additionnés dans l'équation de courbure ( 2) pour deux points adjacents sur un tracé soient les mêmes, il est donc nécessaire d'additionner et de soustraire seulement un total de quatre termes dans l'accumula- teur 762 pour chaque calcul de courbure successif, accélérant ainsi le calcul de courbure séquentiel L'algorithme "soustrait", de la valeur dans l'accumulateur de courbure du circuit de calcul 762, les deux éléments de train de codes 05 fournis par le calcul de courbure précédent qui ne sont pas compris dans le calcul de courbure courant L'algorithme additionne aussi, à la valeur contenue dans l'accumulateur de courbure, les deux nouveaux éléments de train de codes utilisés dans le calcul de courbure courant qui n'étaient 10 pas utilisés dans le calcul de courbure précédent, ces deux nouveaux éléments étant additionnés et soustraits dans l'accumulateur 762 selon l'équation de courbure ( 2) Le circuit 722 de calcul d'adresse de mémoire de trains de codes fournit les adresses des éléments de train de codes à l'une des 15 mémoires 750, 752 et 754 pour accéder aux éléments de train de codes devant être additionnés et soustraits des valeurs stockées dans l'accumulateur de courbure du circuit de calcul 762 comme commandé par le séquenceur 744 utilisant les information dans le registre et compteur d'adresses 708 et 20 les valeurs d'espace et de largeur dans le registre 716 de paramètres de courbure Le circuit de calcul d'adresses 722 utilise aussi les informations longueur stockées dans le registre 710 pour compenser le passage sur le début et fin du contour et fournir la possibilité d'une boucle requise 25 Le circuit de compensation de contour 758 reçoit aussi des signaux de compensation venant du circuit de calcul 722 et les éléments de train de codes quand est traversé le début/fin du contour du tracé. Quand le contrôle d'opération par le séquenceur 744, 30 comme expliqué dans le paragraphe immédiatement précédent, est terminé, le séquenceur 744 testera les conditions d'arrêt comme décrit ci-dessus, et continuera l'opération décrite ci-dessus si les conditions d'arrêt manquent. Le processeur de reconnaissance 18 la logique d'ex35 traction de traits pour déterminer une "non occupation'" et, quand une "non occupation" est détectée il lit les informations provenant des différents registres et accumulateurs à travers le multiplexeur du circuit 702, pour déterminer la cause de là fin de l'opération et les résultats du calcul 40 tel que décrit ci-dessus en accord avec les explications du calcul de courbure du tracé autour d'un point unique En faisant ainsi, le processeur 18 teste les états de contour haut/bas dans les comparateurs 772 et 774 pour déterminer si l'opération de calcul de courbure séquentiel est arrêtée 45 parce que une valeur de contour haut/bas de courbure est atteinte Le processeur 18 peut aussi lire la valeur de pic des courbures calculée dans le circuit logique 768 de valeur de pic de courbure et l'adresse dans le cicuit logique 720 représentant la valeur de pic de courbure que le processeur 50 18 peut de plus déterminer pour être un point d'intérêt. Aussi, la somme de toutes les valeurs de courbure calculée, telle que stockée dans le circuit 770 de somme de courbure sera lue par le processeur 18. La logique d'extraction de traits calcule aussi la direction dans laquelle le trait indique un point intéressant Ceci est accompli en calculant la direction "moyenne" dans laquelle les groupes définis des éléments de train de 05 codes sont "pointés" autour du point d'intérêt Le calcul de direction d'extraction de traits est une addition d'éléments spécifiques, la somme desquels doit être normalisée par le processeur de reconnaissance 18 en la divisant par le nombre d'éléments pour trouver la direction moyenne Une 10 rotation senestrorsum de 90 degrés de la valeur somme normalisée indique la direction moyenne de mouvement le long du tracé qui est essentillement tangentielle au tracé au point d'intérêt, attendu que la direction de pointage est perpendiculaire au point d'intérêt. La logique d'extraction de traits 28 effectue aussi une opération de position absolue dans le but de trouver les coordonnées x et y dans les plans 16 de mémoires lignes d'un point d'intérêt sur le contour d'un tracé Dans le but d'effectuer cette opération, les coordonnées absolues x et y 20 de n'importe quel autre point sur le contour du tracé doivent être connues L'opération de la détermination de la position absolue est commencée par le processeur 18 chargeant les données explicitées ci-dessous dans la logique 28 d'extraction de traits et la logique 24 de tracé de contour 25 En considérant la logique 24 de tracé de contour, les registres 54 et 56 des coordonnées x et y, qui peuvent incrémentés et décrémentés par la PROM 756 et le multiplexeur 760 de la logique 28 d'extraction de traits, fournissent les coordonnées absolues d'un point d'intérêt pour la détection de 30 position absolue et les autres opérations. Les données chargées par le processeur 18 au début d'une opération de détection de position absolue comprend la sélection de mémoire de train de codes, alimentant le circuit 738 de sélection de mémoire, et la longueur de mémoire 35 de train de codes qui est chargées dans le registre 710, les deux décrites ci-dessus relativement au calcul de la courbure du tracé autour d'un point unique Additionnellement, l'adresse de départ, c'est-àdire l'adresse du point ayant des coordonnées connues, est chargée dans le registre 736 40 d'adresse de mémoire de train de codes Les registres logiques 54 et 56 de tracé de contour recevront des informations proportionnelles respectivement aux coordonnées x et y du point de départ (dans les plans 16 de mémoires lignes). L'adresse de fin, c'est-à-dire l'adresse du point d'inté45 rêt pour lequel les coordonnées absolues sont trouvées, sera chargée dans le registre 712 d'adresse de fin de la logique d'extraction de traits 28 Finalement, le registre de commandes 718 reçoit des informations qui permettent à ce registre d'ordonner au séquenceur de commencer une opération 50 de position absolue. Le séquenceur 744 établira le "drapeau occupé" et, ensuite, l'adresse dans le registre 736 permettra à la mémoire de train de codes sélectionnée par les données stockées dans le circuit 738 de sélection de mémoires de sortir un élément de train de codes pour la PROM 756 La PROM 756 convertit la représentation de la direction en coordonnées "sensiblement polaires" en coordonnées de direc05 tions rectangulaires x et y qui des valeurs de + 1, -1 ou O, ces valeurs étant équivalentes à des signaux d'incrémentation, de décrémentation, ou de maintien Le multiplexeur 760 convertit les signaux en impulsions d'incrément/décrément sur commande émise par le séquenceur 744 Ces impulsions 10 aboutissent à l'incrémentation, la décrémentation ou le maintien des valeurs des coordonnées absolues qui ont été stockées dans les registres 54 et 56 de la logique de tracé de contour Puisque la logique 24 de tracé de contour n'est pas occupée, le signal "tracé occupé" vers le multiplexeur 15 760 n'existe pas, ce qui sélectionne les signaux venant de la PROM 756. En continuant avec une explication de l'opération de position absolue, le séquenceur 744 incrémente le registre 736 en synchronisme avec le impulsions incrément/décrément 20 venant du multiplexeur 760 et teste la sortie du comparateur 742 pour voir s'il y a une "comparaison vraie", c'est-àdire pour tester si les coordonnées absolues du point d'intérêt ont été trouvées Le comparateur 742 reçoit, comme entrées, les données dans le registre 736 d'adresses de 25 mémoire de train de codes et dans le registre de fin 712. Incidemment, de la manière décrite ci-dessus concernant le calcul de la courbure du tracé autour d'un point unique, pendant l'incrémentation du registre 736, si la logique de comparaison 740 fournit un signal de comparaison "vraie" au 30 registre 736, indiquant que le registre 736 est à la dernière adresse comme stockée dans le registre 710, le registre 736 sera effacé sur la prochaine impulsion d'incrément venant du séquenceur 744, ce qui produit un signal de "boucle" Si un signal de sortie de comparaison vraie est fourni 35 par le comparateur 742, indiquant que les coordonnées absolues du point d'intérêt ont été trouvées, le séquenceur arrête, efface le drapeau d'occupation et se remet à zéro. Si la comparaison n'est pas vraie, le séquenceur 744 continue l'opération de position absolue comme décrit ci-dessus. 40 Quand le processeur de reconnaissance 18 détermine que le drapeau n'est pas occupé, les coordonnées absolues du point d'intérêt peuvent être lues à partir des registres 54 et 56 d'adresses logiques de tracé de contour par l'intermédialre du bus entrée/sortie l 9. La logique d'extraction de traits 28 est aussi utilisée pour chercher la position relative d'un point d'intérêt dans une région ou "boîte" définie En réalisant cette opération de position relative, la logique 28 d'extraction de traits divise effectivement les deux dimensions x et y de 50 la "boîte en huit parties, chacune aboutissant à soixante quatre sousdivisions ou "sous-boîtes" L'extracteur de traits détermine alors dans laquelle de ces sous-boîtes se trouve le point d'intérêt Comme dans le cas de l'opération de position absolue, les coordonnées absolues dans les plans de mémoires lignes 16 de quelques points du contour du tracé doivent être connues dans le but de déterminer la position relative En plus, les coordonnées absolues dans les plans 05 16 de mémoires lignes de la boîte doivent être connues En déterminant la position relative, le processeur de reconnaissance 18 charge les informations suivantes dans la logique d'extraction de traits 28 et la logique de tracé de contour 24 comme décrit ci-dessus: Sélection de mémoires de trains de codes (dans 738) Longueur de mémoire de trains de codes (dans 710) Adresse de départ (dans 736) Coordonnée x (dans 54) Coordonnée y (dans 56) De plus, les informations sont ohargées dans le registre 712 qui représente l'adresse du point d'intérêt pour lequel doit être trouvée la position relative De même le registre 800 est chargé avec des informations qui définissent la coordonnée x du côté gauche de la boîte et le registre 802 est chargé avec des données qui définissent la dimension x de la boîte De façon similaire, le registre 806 est chargé avec des données qui définissent la coordonnée ydu haut de la boîte tandis que le registre 808 est chargé avec des données qui définissent la dimension y de la boîte Finale25 ment, le registre de commandes 718 est chargé pour effectuer une opération de position relative. Pendant l'opération de position relative, le séquenceur 744 effectue cette opération suivant le processus ciapres: Instauration du drapeau "occupé", Détermination des coordonnées absolues du point d'intérêt comme décrit ci-dessus, Effaçage des compteurs 814, 820 et de l'accumulateur 818 dans le circuit logique 805 La même opération est effec35 tuée sur les compteurs et accumulateurs similaires de la logique 704 de calcul de position x'qui comprend le même sous-système comme illustré dans le dessin pour la logique 705 de calcul de position y, Emission 'par le séquenceur 744 d'impulsions d'horloge 40 vers les compteurs 814 et 820 et vers l'accumulateur 818 de la logique 805 et, en synchronisme, vers les compteurs et accumulateurs équivalents du circuit de calcul 804. La valeur dans l'accumulateur 818 augmente par étapes équivalentes au l/8 ième de la hauteur de la boîte comme un 45 résultat du circuit logique 816 émettant des valeurs équivalentes à 1/8 ième de la hauteur de la boîte utilisant la valeur de hauteur dans le registre 808. Le compteur 814 incrémente en synchronisme jusqu'à ce que le comparateur 812 détecte que le nombre dans l'accumu50 lateur 818 est plus grand que la sortie du soustracteur 810 à l'instant o la sortie du comparateur 812 empêche le compteur 814 de continuer à compter. Le compteur 820 qui compte en synchronisme avec le compteur 814 et l'accumulateur 818 est testé par le séquenceur 744 pour détecter quand les huit cycles d'horloge sont passés indiquant ainsi quand la sortie de l'accumulateur 818 a atteint toute le hauteur de la boîte A ce point 05 l'opération de position relative est arrêtée, le drapeau d'occupation est effacé et le séquenceur 744 remis à zéro La valeur dans le compteur de position 814 représente la position relative du point d'intérêt dans la direction y Le compteur 814 peut avoir une valeur de O à 7, le O 10 étant au sommet de la boîte L'opération concernant la position x dans le circuit 804 est similaire Le processeur de reconnaissance 18 peut lire les positions relatives x et y respectivement de la logique 804 de calcul de la position x et du compteur 814 via le bus entrée/sortie 19. En déterminant la distance " 2 d" entre deux points d'intérêt sur le contour du tracé, la logique 28 d'extraction de traits exécute le calcul suivant: ( 3) 2 d = xl + làyf + max (la x|, yj dans laquelle x est la distance x entre les deux points et y est la distance y entre les deux points. L'opération de distance est commandée par le processeur de reconnaissance 18 chargeant les données suivantes dans la logique 28 d'extraction de traits: ( 1) sélection de mémoire de trains de codes (dans 738) ( 2) longueur de mémoire de train de codes (dans 710) ( 3) adresse de départ, c'est-à-dire adresse de l'un des deux points d'intérêt qui est chargée dans 30 le registre 736; ( 4) adresse de fin, c'est-à- dire l'adresse de l'autre point d'intérêt qui est chargée dans le registre 712: ( 5) effaçage du registre t x 830, 35 ( 6) effaçage du registre Ay 832; ( 7) chargement du registre de commandes 718 avec des données qui ordonneront au séquenceur 744 de démarrer l'opération de distance 2 d. Le séquenceur 744 effectue l'opération de distance 2 d 40 comme suit: ( 1) le drapeau d'occupation est mis: ( 2) des impulsions d'incrément/décrément venant du multiplexeur 760 sont créées comme décrit ci-dessus, dans la description de l'opération de position absolue: ceci permet45 tant aux registres 830 et 832 de t x et a y d'accumuler les valeurs a x et y du point d'intérêt départ au point représenté par l'adresse courante dans le registre 736 Le registre 736 -est alimenté en synchronisme par le séquenceur 744 avec des impulsions incrément/décrément venant du mul50 tiplexeur 760 avec "boucle", comme décrit ci-dessus dans l'opération de position absolue; ( 3) le processus de l'étape ( 2) ci-dessus continue jusqu'à ce que la logique de comparaison 742 l'arrête comme décrit aussi ci-dessus; ( 4) le registre Ax 830 et le registre y 832 contiennent maintenant les distances à x et y entre les points d'intérêt Puisque les valeurs dans les registres 05 830 et 832 sont "signées" ces valeurs doivent être converties en nombres absolus par les circuits logiques 834 et 836 de valeurs absolues La logique de comparaison 840 détecte la plus grande valeur entre t x venant du circuit logique 834 et Ay venant du circuit logique 836 et active le 10 multiplexeur 842 pour introduire la valeur la plus grande dans l'additionneur 844 L'additionneur 844 additionne ses trois entrées, effectuant ainsi l'équation 2 d ci-dessus avec le résultat stocké dans le registre 846; ( 5) le séquenceur 744 efface le drapeau occupé et se 15 remet à zéro. Le processeur de reconnaissance 18 peut lire la valeur de distance 2 d venant du registre 846 La distance 2 d minimum est d'intérêt dans le fait qu'elle localise unpoint le long d'un segment défini du tracé de contour le plus prés d'un 20 point de référence sur le tracé, mais non dans une section définie du tracé La distance 2 d minimum est calculée par le premier résultat de l'opération de distance 2 d comme décrit ci-dessus, o l'adresse de départ est celle du point de référence et l'adresse de fin est celle du premier point sur 25 le segment du tracé du contour qui doit être recherché Ceci pré-établit la valeur A x dans le registre 830, la valeur a y dans le registre 832 et la distance 2 d dans le registre 846 du point de référence au premier point sur le segment Le processeur de reconnaissance 16 charge alors de 30 la façon suivante: ( 1) l'adresse de fin, c'est-à-dire, l'adresse du dernier point sur le segment de tracé à rechercher, est chargée dans le registre 712; ( 2) les données de commandes sont chargées dans le 35 registre de commandes 718 qui ordonne au séquenceur de commencer l'opération de distance 2 d minimum. Le séquenceur 744 effectue alors l'opération de distance 2 d minimum comme suit: ( 1) le drapeau d'occupation est établi; ( 2) le registre Ax 830 et le registre 3 y 832 accumule les valeurs tx et Ay comme le registre 736 crée les adresses de mémoire train de codes comme décrit ci-dessus dans la description de l'opération distance 2 d En même temps, la logique 834, 836, 840, 842 et 844 calcule la 45 distance 2 d depuis le point de référence jusqu'au point courant sur le segment représenté par l'adresse venant du registre 736 d'adresses de mémoire de train de codes La logique de comparaison 848 compare les valeurs venant de l'additionneur 844 et du registre 846, et si la valeur 50 venant du registre 844 est plus petite, c'est-à-dire une valeur minimum, le registre 846 est remis à jour avec la nouvelle valeur minimum et le registre 850 est remis à jour avec l'adresse venant du registre 736 indiquant l'adresse du point le plus proche du point de référence. ( 3) le processus de l'étape ( 2) ci-dessus continue jusqu'à ce que la logique 742 signale au séquenceur 744 d'arrêter quand le dernier point a été testé Le drapeau 05 d'occupation est alors abaissé et le séquenceur 744 se remet à zéro. Le processeur 18 peut maintenant lire l'adresse du point le plus proche du point de référence venant du registre 850 et la distance minimum venant du registre 846. La présente invention peut calculer l'aire aussi bien pendant une opération de tracé de contour que pendant une opération commandée par le processeur de reconnaissance 18 L'aire à déterminer est, ou bien celle d'un tracé entièrement fermé d'un segment, ou bien celle d'un tracé partiel, 15 c'est-à-dire une section de segment, quand l'aire calculée est celle entourée par le contour du tracé entre deux points d'intérêt qui définissent le tracé partiel Dans ce dernier cas, en conséquence, l'aire calculée est celle définie par le tracé partiel et la corde tracée entre les deux points 20 d'intérêt La valeur de l'aire calculée sera réellement le double de l'aire vraie ( 2 A) est sera un nombre muni d'un signe tel que l'aire d'un segment, c'est,à-dire une courbure nette convexe, est positive, tandis que celle d'une région entourée d'est-à- dire une courbure nette concave, est néga25 tive Le calcul de l'aire ( 2 A) est incrémenté comme le contour est tracé ou suivi à partir du premier point d'intérêt, qui sera le départ du tracé, jusqu'au second point d'intérêt, qui sera la fin du tracé Evidemment, pour un tracé entièrement fermé, le second point d'intérêt sera le 30 point immédiatement derrière le premier point d'intérêt du tracé. En effectuant le calcul de l'aire, la valeur A x accumulée dans le registre 830 et la valeur a y accumulée dans le registre 832 sont combinées aux signaux de direction 35 de mouvement du tracé en x et en y, signaux élaborés par la PROM 756 et émis par le multiplexeur 790 Ces signaux de direction de mouvement sont utilisés dans les circuits 864 et 866 d'ajustement de Ax et Ay Les signaux de résultats de tx et AY sont accumulés dans un accumulateur 880 40 lorsque le contour est tracé, selon la version suivante de l'Equation (la): 2 A = Z /û(ô) o Pxi = direction de mouvement de tracé en x venant du multiplexeur 790 pour le point i: 45 Syi = direction de mouvement de tracé en y venant du multiplexeur 790 pour le point i; 8 xi = l Z' yvenant du registre 830 qui est la distance x depuis le point de départ jus- qu'au point courant sur le contour; dy = Sy/' venant du registre 832; iP &=/ J,=b Yë -_a Le point d'intérêt départ (p) est stocké dans le registre 05 736 d'adresse de mémoire de trains de codes quand l'opération de calcul d'aire est commencée Le second point d'intérêt (q) est stocké dans le registre 712 d'adresse de fin. Le circuit logique 864 effectue le calculs,(az X) et le circuit logique 866 effectue le calcul-u&(O. 10 L'additionneur 872 effectue la somme des signaux de sortie des circuits logiques 864 et 866 Le signal de sortie de l'additionneur 882 est délivré à un circuit 876 logique dit "négatif" et traversera le circuit 876 sans négation puis sera accumulé dans l'accumulateur 880, incrémenté quand le 15 contour est tracé ou suivi Les registres 860 et 862 sont mis à l'état O par le processeur 18 peur l'opération de calcul d'aire, les sorties des circuits logiques 868, 870 874 et 878 étant alors O* Ceci, en retour, fait que le circuit logique 882 de signes ne permet pas à la logique 876 20 négative de changer le signe de la valeur émise par l'additionneur 872 qui est arrivée à l'accumulateur 880 via le circuit 876 logique négatif. Le processeur de reconnaissance 18 charge les données suivantes dans la logique 28 d'extraction de traits: ( 1) la sélection de mémoire de trains de codes (dans 738) ( 2) la longueur de la mémoire de trains de codes (dans 710) ( 3) l'adresse du départ, qui est chargée dans le 30 registre 736, représentant le point d'intérêt départ qui est le départ du tracé à partir duquel l'opération d'aire doit être effectuée. ( 4) l'adresse de fin, chargée dans le registre 712, représentant le point d'intérêt fin qui est la fin du tracé 35 à partir duquel l'oparation d'aire doit *etre effectuée Pour un tracé fermé, comme noté ci-dessus, le point fin serale point immédiatement derrière le point départ. ( 5) Le registre t x 830 est propre. ( 6) Le registre \Y 832 est propre. ( 7) Le processus d'extraction de traits est commencé dès le transfert des données, sous la commande du processeur 18 de reconnaissance, venant du registre 830 dans le registre 860 et venant du registre 832 dans le registre 862, ceci effaçant les registres 860 et 862 Les données venant du processeur de reconnaissance 18 permettent aussi d'effacer les accumulateurs 880 et 878. ( 8) Les données sont chargées dans le registre de commande 718 ordonnant au sequenceur 744 de démarrer l'opération d'aire 2 A. Pour achever la mise en route, le sequenceur 744 effectuera l'opération de calcul d'aire 2 A comme suit: ( 1) Le drapeau d'occupation est établi ( 2) Le multiplexeur 760 fournira des impulsions incrément/décrément x/y qui permettront à axi d'être accumulée dans le registre 830 et à dyi d'être accumulée dans le registre 832, ( 3) Les impulsions d'accumulation sont élaborées et émises vers l'accumulateur d'aire 880, ceci accumulant les valeurs d'aire incrémentées calculées par les circuits logiques 864 et 866 à partir de la valeur A xi venant du registre 830 et de la valeur ej yi venant du registre 832 et des 15 directions de mouvements du tracé x'et y provenant du multiplexeur 790 Le circuit logique 864 est constitué d'inverseurs, d'additionneurs et de multiplexeurs qui passent soit à l'état O, ou 4, ou az comme une fonction de c: pour effectuer le calcul yc(A 7) 20 Le circuit logique 8 6 effectue le calcul-Sz (g 4)V d'une façon similaire Le circuit 876 est une porte OU exclusif et un additionneur qui soit transmet, soit rend négative la valeur en provenance du circuit 872 comme une fonction du signe élaboré par le circuit 882 qui, pour 25 l'opération 2 A, doit toujours transmettre la valeur provenant du circuit 872 lorsque les registres 860 et 862 ont été effacés, Les multiplexeurs 760 et 790 sont activés par le signal "tracé occupé" éteint pour sélectionner les directions dé mouvements x/y du tracé, provenant de la PROM 756 30 comme résultat de la logique 24 de tracé de contour non occupée. ( 4) Le séquenceur 744 fournit des impulsions d'incrément vers le registre 736 d'adresses de mémoire de train de codes permettant l'accès séquentiel aux éléments de train 35 de codes provenant de l'une des mémoires 750, 752 ou 754 en synchronisme avec les étapes ( 2) et ( 3) ci-dessus La logique de comparaison 740, en association avec la logique du registre 73, fournit un signal de "boucle fermée", comme décrit ci-dessus. ( 5) Les étapes ( 2)-( 4) continuent en synchronisme, accumulant les aires incrémentées dans l'accumulateur 880 selon l'équation d'addition d'aires 2 A ci-dessus, jusqu'à ce que la logique de comparaison 742 signale au séquenceur 744 que le second point a été atteint sur le contour, ce qui 45 arrête les impulsions d'incrémentation Le drapeau d'occupation est alors effacé et le séquenceur 744 est remis à zero. Dès que le drapeau d'occupation est effacé, le processeur 18 peut lire la valeur 2 A venant de l'accumulateur 880 via le 50 bus 19 entrée/sortie. Si l'opération d'aire 2 A doit être effectuée pendant l'opération de tracé du contour, le registre -x 830, le registre /Ay 832, les registres 860 et 862 et les accumu- lateirs 880 et 878 sont effacés comme décrit ci-dessus avant d'envoyer la commande continue de tracé vers la logique 24 de tracé du contour Le signal "tracé occupé" permet aux multiplexeurs 760 et 790 de transmettre les signaux -de 05 direction de mouvements x et y du tracé provenant du registre de coordonnées horloge 582, du contrôleur de tracé 66 dans la logique 24 du tracé de contour. Une opération logique supplémentaire d'extraction de traits comprend le calcul de l'aire approximative de la 10 déviation d'un contour entre deux points, sur le contour partant d'une ligne droite tracée entre les deux points, ce calcul fournissant une indication sur la rectitude du segment entre les deux points L'opération de déviation consiste à calculer l'aire absolue comprise entre le contour et la 15 corde tracée entre les deux points Ceci est obtenu en calculant l'aire incrémentée de la manière décrite ci-dessus dans les précisions données pour l'opération 2 A Cependant, dans l'opération de déviation, la logique de négative 876 contrôlée par l'accumulateur 878 et la logique de signes 20 882, rendra négative ou non l'aire incrémentée selon le côté de la corde o se trouve le point courant sur le contour à suivre Le contrôle par la logique négative 876 permet ainsi à l'accumulateur 880 d'accumuler une aire absolue La sortie de la logique de signes 882 est une indica25 tion pour savoir si la pente de la ligne du point de départ vers le point courant est inférieure ou supérieure à la pente de la corde du point de départ vers le point final, et ceci indique de quel côté de la corde se trouve le point courant, c'est-à-dire si Dx/Dy est inférieur ou supérieur à 30, zt/A)éf, c'est-à-dire si ( 5) (Dy -') (Dx y') O. o Dx = distance x totale entre le point de départ et le point d'arrivée. Dy = distance y totale entre le point de départ 35 et le point d'arrivée " xi = distance x entre le point de départ et le point courant. yi = distance y entre le point de départ et le point courant. Puisque A xi du point courant est l'accumulation de signaux de direction de mouvements x du tracé élaborés entre le point de départ et le point courant, et que A yi du point courant est l'accumulation des signaux de direction de mouvements y du tracé élaborés entre le point de départ et le 45 point courant: ( 6) x = ZL ú ' et _/ l'accumulateur 878 contient: (Dy Ax) (Dx A y) i i en accumulant: qui peut être exprimé comme: -1 ( 7) ES -^ X D Bah) Le registre 860 contient Dx et le registre 862 contient Dy Ces deux valeurs sont calculées en menant l'opération de distance 2 d, décrite ci-dessus, depuis le point de départ, 10 les deux points du contour entre lesquels la déviation de contour doit être trouvée, jusqu'au point d'arrivée, aboutissant ainsi dansle registre 830 produisant Dx et dans le registre 832 fournissant Dy Le contenu du registre 830 est alors transféré dans le registre 860 et le contenu du regis15 tre 832 est transféré dans le registre 862, comme décrit dans l'opération ci-dessus d'aire 2 A Les registres 830 et 832 etles accumulateurs 878 et 880 sont effacés et l'opération d'aire 2 A est effectuée depuis le point de départ jusqu'au point d'arrivée Cependant, lorsque les registres 20 860 et 862 ne sont plus en fonctionnement, l'accumulateur 878 accumulera la somme des signaux fournis par les circuits logiques 868 et 870 c'est-à-dire que le circuit logique 868 fournit le calcul suivant: Dy Sx et le circuit logique 870 effectue le calcul suivant: -Dx S Y j Le signe de la valeur dans l'accumulateur 878 indique de quel côté de la corde se situe le point courant, et contrôle la logique négative 876 à travers le circuit logique 30 de signe 882 L'opération de déviation s'effectue de la même manière que le calcul d'aire 2 A décrit ci-dessus, excepté que les registres 860 et 862 sont chargés respectivement avec Dx et Dy provenant de l'opération de distance 2 d, au lieu d'être effacés. Pour résumer brièvement ce qui précède, l'opération de courbure séquentielle sera utilisée pour trouver des points d'intérêt, les circuits 720 et 768 de valeur de pic fournissant des informations proportionnelles aux valeurs et localisation des points d'intérêt L'opération de courbure 40 autour d'un point unique est utilisée pour classer les points d'intérêt trouvés Les calculs de la direction et de la position sont effectués pour obtenir des données comprises dans leslistes de mots simples Les résultats des calculs de distance et d'aire sont parfois utilisés pour prévenir des substitutions. Comme il sera décrit ci-dessous, en détail, les résultats des calculs effectués dans la logique 28 d'extrac05 tion de traits sont stockés, dans la mémoire 26 du processeur de reconnaissance, sous forme de listes de traits et également sous forme de listes de mots simples abrégés Selon la présente invention, les informations de direction, position, et type de traits, sont stockées d'une manière 10 compacte qui permet un test à grande vitesse de ces informations Les mots 16-bits qui contiennent ces informations comnipactes peuvent être rattachés aux mots simples. La forme de mot simple permet par simple masquage c'est-àdire conforme à un "ET" logique, et par une procédure de 15 test, c'est-à-dire de comparaison, de déterminer si un trait et ses symboles tombent dans quelque ensemble désiré ou non désiré La forme de mot simple est aussi utilisée pour stocker des informations concernant le nombre de régions fermées et de segments, leurs positions et aires et concer20 nant le nombre de traits géométriques de différents types. Une fois que les mots simples pour caractériser géométriquement et topologiquement un modèle d'entrée aient été créés et stockés, la "règle" de test de mots simples sera effectuée Utilisé ici, le terme de "règle" signifie un 25 ensemble de tests effectué sur des mots simples ou des éléments d'une liste de points d'intérêt Chaque prototype distinct topologiquement d'un caractère est représenté par une règle Dans une mise en oeuvre de l'invention, permettant de lire des caractères manuscrits tels que les chiffres 30 de O à 9, des lettres majuscules, un trait d'union, c'est-àdire trente sept caractères, cent cinquante règles sont suffisantes pour identifier uh caractère avec des taux de substitutions et de rejets relativement bas. Le test suivra une procédure allant d'un simple con35 trôle du nombre de régions et/ou de segments à un contrôle compliqué de type, de position, de direction et de séquence d'évènement de beaucoup de traits, aussi bien désirés que non désirés, sur le contour d'un segment Chaque test a une série associée de symboles de traits aussi bien que de 40 réponses espérées, pour qu'il puisse être correctement répondu au test Dans le but d'augmenter la vitesse du processus, les tests utilisés fréquemment sont microcodés. Les tests utilisés le moins fréquemment sont appelés des sous-routines. Si tous les tests d'une règle ont été effectués avec succès, la règle est considérée comme un succès et le caractère a été normalement identifié Cependant, parmi les caractères très similaires, existent des conflits qui ne peuvent pas être résolus sur la base de tests standard dispo50 nibles Dans ces cas on utilise un code spécial de prévention de substitution qui examine avec soin certaines portions de clé d'un modèle d'entrée pour essayer de mieux séparer de telles situations de conflits Ces portions de clé sont examinées en utilisant les informations qui sont stockées dans la mémoire de trains de codes et dans la liste de points intéressants, plutôt-que de compter sur les mots simples Si le modèle tombe correctement dans une série de 05 paramètres désirés du code de prévention de substitution, le modèle est identifié et le code ASCII associé est transmis à l'utilisateur Si aucune rencontre n'est trouvée parmi les règles de base le caractère est rejeté. Dans l'intérêt d'un test d'accélération, les mots 10 simples comprennent des informations concernant le caractère dans une forme de code de test série qui plus amplement décrit ci-après Des informations générales sur le caractère lui-même sont codées avec des informations sur chaque tracé de caractère et sur les traits trouvés sur chaque tracé Les 15 informations sont codées de telle sorte que de multiples aspects du caractère peuvent être testés simultanément en utilisant une seule paire de masques et de mots tests Ce codage permet aussi de tester chaque aspect pour une série de valeurs plutôt qu'une seule valeur Dans la formation de mots simples, il y aura un mot qui contient des informations simples concernant le caractère dans son ensemble Ce mot 16-bits,, qui contient le compte de segments et de régions du caractère, a le format suivant: ____-_______________________________________-25 O O O O O O O O L L L L S S S S _____________________________________________15 8 7 4 3 0 dans lequel: LLLL est le nombre de régions intérieures dans un caractère courant, et SSSS est le code pour le nombre de segments extérieurs dans un caractère courant selon la table suivante: 0000 = O 0001 = 1 0011 = 2 Olll = 3 1111 = 4 1110 = 5 ou plus Il y a trois mots simples différents pour créés pour 35 chaque segment du caractère courant Ces trois mots additionnent les informations sur le segment lui-même et sur le nombre et le type de traits trouvés sur le segment Ce premier mot contient des informations sur la position de chaque segment dans la boîte de caractère et ainsi, il est 40 plus utile pour classer des caratères à multiples segments. Puisque les petits segments d'un caractère à multiples segments sont habituellement de simples barres, des segments rectilignes, les mots de segment pour tous les petits segments contiennent des informations donnant l'orientation et 45 la longueur relative des segments Ce mot a le format suivant: _____________________________________________u u u o o y y y x x x X X X X X _____________________________________________15 13 12 11 10 8 5 4 O dans lequel: u est inutilisé oo est le code pour l'orientation du segment (seulement les petits segments), _____________________________________________00 = horizontal 01 = courbe vers haut 11 = vertical 10 = courbe vers bas yyy est le code pour la position y 10 du segment, et xxx est le code pour la position x du segment selon le schéma suivant _____________________________________________000 = position O 001 = position 1 011 = position 2 111 = position 3 xxxxx est le code pour la longueur relative du segment (seulement petits segments) _______________________________________________________________-_________________________00001 = longueur 1 00011 = longueur 2 00111 = longueur 3 01111 = longueur 4 _____________________________________________Les deux autres mots qui définissent chaque segment 20 consistent en des mots simples de traits de segments Ces mots contiennent des informations sur le nombre de différents traits qui ont été trouvés sur chaque segment Le format du mot simple O de trait de segments est _________________________________________________t t t t t t t t b b b b S S S s 15 8 7 4 3 O dans lequel: tttttttt est le code pour le compte total de traits pour ce segment, 00000000 = 0 00000001 = 1 00000011 = 2 00000111 = 3 00001111 = 4 00011111 = 5 00111111 = 6 01111111 = 7 11111111 = 8 11111110 = 9 11111100 = 10 11111000 = 11 11110000 = 12 11100000 = 13 11000000 = 14 10000000 = 15 05 ou plus bbbb est le code pour le nombre de INLETS et de BAYS pour ce segment, et ssss est le code pour le nombre de STUBS et de SPURS pour ce segment. __________________________-____________________10 0000 = 0 0001 = 1 0011 = 2 0111 = 3 1111 = 4 1110 = 5 1100 = 6 1000 = 7 ou plus Le format du second mot simple de trait de segment est: ______________________________-________________n N N N N N N N p p p p p p p p 15 8 7 O dans lequel: nnnnnnnn est le code pour le nombre de traits négatifs (à l'exclusion de traits de type nul, c'est-à-dire de traits sensiblement négatifs) 20 sur le segment, et pppppppp est le code pour le nombre de traits positifs sur le segment. __________________________________________________00000000 = 0 00000001 = 1 00000011 = 2 00000111 = 3 00001111 = 4 00011111 = 5 00111111 = 6 01111111 = 7 11111111 = 8 11111110 = 9 11111100 = 10 11111000 = 11 11110000 = 12 11100000 = 13 11000000 = 14 10000000 = 15 ou plus Il n'y a qu'un mot qui contient des informations simples de régions Ce mot qui contient les informations sur 30 la position et la taille relative des régions a le format suivant: u a a a a y y y x x x u u u u u _________________________________________________15 14 11 10 8 7 5 4 O dans lequel: aaaa est le code pour la taille relative de la région, __________________________________________________05 0000 = petit 0001 = petit-moyen 0011 = moyen-grand 0111 = grand àyyy__ _ _ _ _ _ _ _ _ yyy est le code pour la position y, et xxx est le code pour la position x. __________________________________________________000 = position O 001 = position 1 011 = position 2 111 = position 3 Une liste de mots simples de traits est créée pour chaque segment de caractère courant Une liste est aussi créée pour la région de caractères à région unique Le premier mot de cette liste contient le nombre de traits 15 trouvés sur la région Il est suivi par un mot simple pour chaque trait La liste de mots simples est répétée en mémoire pour fournir un automatique bouclage pendant le test Le format de mot simple de traits est: O d d d d y y y x x x t t t t t _________________________________________________20 15 14 11 10 8 5 4 0 dans lequel: dddd est le code pour la direction de trait, ________________________________________________000 = E 0001 = NE 0011 = N 0111 = NW 1111 = W 1110 = SW 1100 = S 1000 = SE yyy est le code pour laposition y du trait xxx est le code pour la position x du trait, et ttttt est le code pour le type de trait. ___________________________-____________________11000 = INLET 10000 = BAY 00000 = NULL FEATURE 00001 = ARC 00011 = CURL 00111 -= WEDGE 01111 = STUB 11111 = SPUR ________________________________________________05 000 = position O 001 = position 1 011 = position 2 111 = position 3 ________________________________________________Comme noté ci-dessus, dans une mise en oeuvre de l'invention, la procédure de classification emploie 150 règles, chaque règle étant associée à un certain prototype 10 de caractère Chaque règle est une section de codes à exécuter Llensemble des règles est sub-divisé en trois parties correspondant à trois différentes bases c'est-à-dire alphanumérique, numérique et alphabétique- seulement Il y a trois listes de règles utilisées, à savoir une liste de règles 15 alphanumériques, une liste de règles numériques, et une liste de règles alphabétiques En retour, chaque liste est divisée en quatre parties avec les sous-listes correspondant aux caractères ayant un, deux, trois, ou quatre segments Les règles d'une sous-liste sont ordonnées suivant la fré20 quence de l'existence des prototypes correspondants Par exemple, la première règle dans la liste alphabétique est une règle pour le plus commun prototype du caractère "A" le second est le plus commun prototype pour le "B", etc La dernière entrée de chaque sous-liste contient l'adresse du 25 processus de rejet pour des caractères qui ne sont pas reconnaissables Une telle structure pour la liste de règles utilisées permet l'entretien et la souplesse désirés Pae exemple, toutes les règles requises pour une application particulière peuvent être extraites de la liste générale de 30 règles utilisées qui comprend toutes les règles existantes En continuant à exposer l'exemple qui emploie environ règles, 117 de ces règles sont des règles pour un segment, dix sont des règles pour deux segments pour vingt six caractères alphabétiques, dix caractères numériques et un 35 caractère spécial, c'est-à-dire un trait d'union Ainsi, il y a environ, en moyenne, trois règles et demies par caractère Une liste de règles numériques comprend quarante sept règles, quarante six étant des règles pour un segment, et une étant une règle pour deux segments, ce qui fait une 40 moyenne de 4,7 règles par caractère La liste des règles alphabétiques contient 114 règles dont 105 sont des règles pour un segment, ce qui fait une moyenne de 4,5 règles par caractère alphabétique Certaines règles sont utilisées dans plus d'une liste de règles La différence de base entre la liste alphanumérique et les listes numérique et alphabétique est qu'un nombre de règles pour des prototypes qui peuvent rentrer en conflit et qui ne peuvent être compris dans la 05 liste de règles alphanumériques ont été inclus dans les deux listes numérique et alphabétique Par exemple la règle pour la boucle fermée de la lettre "G" est comprise dans la liste de règles alphabétiques et ne peut pas être comprise dans la liste alphanumérique, du fait d'un conflit évident avec 10 le caractère " 6 " (six). La structure et l'utilisation des listes de règles et des tables de bases sont illustrées sur la FIGURE 18 La liste des bases possibles est une liste de seize mots qui contient une adresse pour chaque base de caractères manus15 crits alphanumériques et alphabétiques qui sont possibles. En utilisant FONTPTR comme adresse de bases, le code de sélection de base est utilisé comme index dans cette liste pour retrouver l'adresse d'une liste de bases correcte Si la base sélectionnée n'est pas la bonne, I'adresse signale 20 l'adresse "Processus Mauvaise Base" Cette liste est normalement stockée dans le code ROM dans la mémoire 26 du processeur de reconnaissance. En considérant les tables des listes de règles, le premier mot de cette table de cinq mots contient deux carac25 tères ASCII qui indiquent la traduction et la modification. Les quatres mots restants contiennent l'adresse de la liste de règles pour des caractères avec, respectivement, un, deux, trois et quatre segments Si une liste de règles n'existe pas pour un nombre donné de segments, l'adresse 30 signale l'adresse du processus "Trop de Segments" Les "Listes de Règles Possibles" elles-mêmes contiennent un nombre variable de deux entrées de mots Le premier mot est l'adresse d'une règle de prototype de caractère, le second mot est le code ASCII du caractère La dernière entrée de chaque 35 liste contient l'adresse du processus de rejet qui est pour des caractères non reconnaissables. Les Règles de Prototype de Caractères consistent en une séquence de tests spécialisés et de codes de prévention de substitution Si un test fait défaut, un arrêt de la 40 règle est fait et l'exécution est démarrée dans la règle suivante de la liste des règles possibles Si la règle est terminée avec succès, c'est-à-dire si le caractère est reconnu, le code ASCI Ipour le caractère est obtenu de la localisation qui suit l'adresse de la règle de la liste des 45 règles possibles. Chaque règle est un code exécutable et comprend un ensemble de tests binaires et de réponses à ces tests pouvant être affirmatives ou négatives Un caractère est considéré comme accepté par une règle quand la réponse à 50 chaque test de cette règle rencontre la réponse souhaitée pour ce test Autrement, le caractère est rejeté par la règle et il est étudié par la règle suivante Dans chaque règle, les tests sont classés selon leur vitesse d'exécu- tion Ainsi, des tests simples et rapides qui contrôlent des informations topologiques et globales concernant des caractères sont exécutés en premier. Le premier test de chaque règle est un test de rou05 tine microcodé qui dans le cas présent, peut être appelé "CSWORD" Ce premier test compare le nombre de segments et régions fermées d'un caractère avec des nombres déterminés. Les nombres déterminés de segments et de région sont donnés par des mots 16-bits suivant la demande de test Si la 10 réponse au premier test est affirmative et le nombre réel de segments et de régions rencontre le nombre déterminé, le test suivant est exécuté Le second test est normalement effectué par le même test de routine microcodé "CSWORD" et compare le nombre total de traits, le nombre de SPURS/STUBS 15 et le nombre de BAYS/INLETS avec les quantités déterminées. Comme le nombre attendu de segments et régions ces informations sont codées et stockées dans la forme d'une paire de mots masque/test qui suit la demande de test Ce second test peur être suivi d'un test similaire qui compare le nombre 20 total de convexités et de concavités sur le pourtour du caractère Dans le cas o le caractère contient une ou des régions fermées, un test spécial doit être exécuté pour contrôler la ou les positions du centre de la du des régions et sa taille (ou leurs tailles) Dans le cas de deux 25 régions fermées, un autre test est utilisé pour contrôler le chevauchement vertical de ces régions Ce test est appelé "C 2 LAKES" Un test supplémentaire qui est souvent utilisé pour le caractère avec des régions est un contrôle pour les SPUR ou STUB internes, c'est-àdire une saillie à 30 l'intérieur de la région Ce test est particulièrement utilisé pour la séparation de conflits tels que "Q et 9 ", et "B et D". Les tests rapides préliminaires sont suivis par des tests "dans l'ordre dextrorsum" plus puissants et consommant 35 nécessairement plus de temps et, si demandé, des codes de prévention de substitution Le diagramme fonctionnel pour une règle particulière est donné sur la FIGURE 19, son code étant montré sur la FIGURE 20 Dans le cas d'un caractère à segments multiples, chaque segment est testé par un ensemble 40 séparé de tests comprenant un test "d'ordre dextrorsum". Concernant le test "d'ordre dextrorsum", le test de base dans chaque règle est un test d'ordre structurel dextrorsum qui replace la procédure d'analyse grammaticale dans l'approche syntactique pour la reconnaissance d'un modèle 45 qui a caractérisé l'Art antérieur Dans l'Art antérieur, en utilisant l'approche théorique de décision, l'identification des caractères était tentée par simple test de la présence ou de l'absence de certains traits géométriques et/ou topologiques Selon la présente invention, l'identification des 50 caractères est basée sur le test de la présence de traits géométriques souhaités dans une séquence définie d'événements géométriques sur le contour De plus la procédure de test peut comprendre des contrôles pour certains traits non désirés entre les traits désirés sur le contour De plus, selon la présente invention, des traits sont testés pour s'assurer qu'ils se situent dans un éventail de valeurs. Un test "d'ordre dextrorsum" comme employé dans la 05 mise en oeuvre de la présente invention, peut être compris en considérant les figures 21 A et 21 B qui comprennent respectivement l'image du caractère "N", comme obtenue à la sortie de la mémoire ligne avec traits indiqués, et une liste de ces traits Tout caractère "N" imaginable peut être décrit par la liste de traits de la figure 21 B sans perdre de vue que les traits et symboles de traits doivent être remis en ordre pour adapter position, direction et variations de style En partant de la BAY (B X 3, Y 3, N) cette BAY pourrait avoir n'importe quelle position x et y et 15 une direction N, NE ou NW selon l'otientation du caractère. Ainsi, les différentes possibilités pour la BAY sont B;/XO 123,Y 0123;/N, NE,NW (type, position, direction) En se déplaçant sur le pourtour du caractère dans le sens dextrorsum, le trait suivant enregistré est un SPUR à savoir: 20 S;/X 3 Y O;N Ce SPUR pourrait être un STUB si la fin de la courbe est courte et a x position 2, y position 1 et la direction NE ou NW Ainsi, une description générale de SPUR S;/X 3,Y O;/N est S(T); /X 23,Y 01;/N,NE,NW En procédant de cette manière, une description structurelle générale du 25 caractère "N" peut être donnée comme suit: B X 0123 Y 0123 N,NE,NW S(T) X 23 Y 01 o N,NE,NW S(T,W,C) X 23 Y 23 S,SE,SW *B X 0123 Y 0123 S,SE,SW S(T) X 01 Y 23 S,SE,SW S(T,W,C) X 01 Yo 01 N,NE,NW En utilisant les codes de test d'ensemble, et la technique masque/test, chaque entrée dans la table ci-dessus peut être représentée par une paire de mots de masque et test Le test "d'ordre dextrorsum" est une routine microcodée qui fait une comparaison entre une liste de traits réels pour un caractère iitroduit et une liste donnée de mots masque/test dans un ordre dextrorsum Si certains traits de la liste de traits tombent dans une série pré-déterminée, et le nombre 40 de traits dans la liste de traits est plus ou moins égal au nombre d'entrées dans la table "d'ordre dextrorsum", le caractère est considéré accepté par le test "d'ordre dextrorsum" Par exemple, le caractère "N" est accepté par le test "d'ordre dextrorsum" défini dans la table ci-dessus 45 Cependant, dans beaucoup de cas, quelques sous-ensembles de listes de traits de caractères s'ajustent à un test donné "d'ordre dextrorsum" en dépit du fait que le caractère n'est pas décrit par le test donné Par exemple le caractère "W" avec la liste de traits suivante: (C;/X 1 Y O;/N) (B;/X 2,Y 3;/N) (S;/X 3 YO;/NE) (W;/X 2,Y 3;/SN) (B;/X 1,Y 2;/S) (T:/XO,Y 3;/SW) (S:/XO,Y O;/NW) (B;/XO,Y 2;/N) sera accepté par le test "d'ordre dextrorsum" pour le caractère "N" donné par la table ci-dessus En conséquence, un test spécial "d'ordre dextrorsum" avec des traits "indésirables" sera effectué Un trait qui est supposé être 05 présent dans un caractère est appelé "désirable" Des tests microcodés peuvent être utilisés pour détecter un ou deux traits indésirables entre chaque deux traits desirables Un trait indésirable est espéré sûrement absent dans le prototype de la règle, c'est-à-dire le prototype pour lequel la 10 règle a été établie Si quelque trait du caractère introduit rencontre un certain trait indésirable dans le test "d'ordre dextrorsum", le caractère est rejeté Par exemple le trait indésirable (B;/X 0123,Y 0123;/n'importe quelle direction) peut être choisi entre les première et dernière entrées 15 dans la table de la liste de traits ci-dessus pourle caractère "N" afin de rejeter le caractère "W" Ce trait indésirable est sûrement absent dans "N" Deux types de test "d'ordre dextrorsum" qui comprennent des traits indésirables, ont été développés L'un de 20 ces tests permet la détection d'un trait indésirable entre chaque deux traits désirables tandis que l'autre permet la détection de deux traits indésirables entre chaque deux traits désirables Un trait "factice" est une paire de mots masque et test pour lesquels aucun mot simple possible 25 n'existe En d'autres termes, le masque "factice" appliqué à n'importe quel mot simple n'est jamais égal au test "factice" Dans une mise en oeuvre de la présente invention, O et 100000 sont utilisés respectivement pour masque "factice" et test "factice" Un exemple de test "d'ordre dextrorsum" avec un trait factice, trait ( 6) et cinq traits indésirables pour le caractère "R" est montré sur la figure 19 Le trait factice peut facilement être remplacé par un trait indésirable. Comme expliqué ci-dessus, la forme de mots simples et 35 la liste de mots simples permettent une comparaison efficace entre un modèle introduit et une série de modèles prototypes stockés Les modèles prototypes sont stockés comme combinaisons de tests avec des mots pré- déterminés de masque et de comparaison, avec des codes spécialisés de tests en profon40 deur Les modèles introduits sont stockés comme listes de mots simples de traits et de listes de traits détaillés Les pourtours de caractère qui sont stoçkés comme séquences de codes de mouvement sont aussi accessibles aux codes de classification quand c'est nécessaire Le test pour certi45 fier si un trait donné (ou une combinaison de traits) tombe dans une série désirée afin de rencontrer un modèle mémorisé est sorti par plusieurs types de tests qui ont été introduits dans le microcode du Processeur de Reconnaissance. Quelques uns de ces tests le plus communément utilisés sont: 50 1 test CSXORD, ou test de contrôle du mot simple, 2 test CSWLST, ou test de contrôle de liste de mots simples, 3 test CLOKAL, ou test d'ordre dextrorsum sans traits non désirés, 4 test CLOKU 1, ou test d'ordre dextrorsum avec un trait non désiré possible entre des traits désirés, et, 5 test CLOKU 2, ou test d'ordre dextrorsum avec deux traits non désirés permis entre des traits adjacents désirés. L'opération de simplification de ces tests peut être comprise en se reférant à la FIGURE 24, qui contient un 10 diagramme fonctionnel de l'algorithme pour ce test, désigné par un test de Contrôle de Mots Simples ou le test CSWORD La FIGURE a une représentation de la section de la mémoire du Processeur de Reconnaissance qui contient le code d'opération pour CSWORD. Les paramètres d'entrée nécessaires pour la routine CSWORD sont stockés dans le mémoire du processeur de reconnaissance dans un emplacement suivant immédiatement le code d'opération CSWORD. Les paramètres sont: 1 l'adresse du mot simple dans la mémoire du processeur de reconnaissance, 2 le mot masque devant être employé par ce test, et, 3 le mot de comparaison devant être employé par ce test. Le mot simple est chargé en premier dans un emplacement de stockage temporaire dit ci-après TEMPO, après quoi le produit logique (opération ET bit par bit) du mot masque et les contenus du TEMPO sont restockés dans le TEMPO 30 Ensuite, le mot de comparaison est soustrait du contenu du TEMPO et les bits du drapeau du processeur de reconnaissance et les codes de conditions sont établis selon le résultat de cette soustraction Si le mot test rencontre le contenu du TEMPO, le drapeau 2 est établi et le test CSWORD est considéré comme avoir été satisfait. Un test qui est typique des tests de type "d'ordre dextrorsum plus compliqué" peut être compris en se reférant aux FIGURES 25 A et 25 B qui représentent le diagramme fonctionnel (et représentation de la mémoire pertinente du pro40 cesseur de reconnaissance) pour le test "d'ordre dextrorsum" avec un trait non désiré (CLOKU 1) Le but de ce test est de certifier si un ensemble de traits donnés est présent sur le contour d'un segment ou d'une région, et si ces traits sont présents dans un ordre dextrorsum spécifique Aussi bien, ce 45 test est capable de créer une condition de mauvaise rencontre si un trait sur le contour situé entre deux traits désirés rencontre un trait non désiré spécifié De plus ce test est capable de spécifier quels traits désirés devraient être ajoutés ou identifiés pour l'utiliser dans des proces50 sus ultérieurs de tests en profondeur Cette combinaison de possibilités résulte d'une technique très puissante pour la sélection des modèles qui sont plus amplement analysés que pourrait être le cas si l'ensemble entier de traits devait tout simplement être présent, dans n'importe quel ordre sur le contour du caractère avec une possibilité de présence de beaucoup d'autres traits. Les paramètres d'entrée pour ce test sont l'adresse 05 de la liste de mots simples, le nombre de traits désirés sur le contour les mots masques et les mots de comparaison pour les traits désirés, et les mots masques et les mots de comparaison pour les traits non désirés Un registre (R 10) dans le processeur de reconnaissance est utilisé pour main10 tenir l'adresse d'un emplacement de mémoire qui contient l'adresse de la liste de mots simples Le nombre de traits désirés, et les mots masques et de comparaison pour traits désirés et non désirés sont stockés dans des emplacements de la mémoire du processeur de reconnaissance qui suivent le 15 code d'opération CLOKU 1. Le test CLOKU 1 confirme d'abord que le nombre de traits désirés est inférieur ou égal au nombre de mots simples dans la liste de mots simples Ensuite, une recherche de fa liste de mots simples est faite pourrencontrer le 20 premier trait désiré Si aucune rencontre n'est faite parmi les mots simples stockés, le test est en défaut et le drapeau 2 est effacé L'exécution continue dans l'emplacement suivant la liste de paramètres pour le test Si une rencontre est trouvée, le microcode du CLOKU 1 contrôle le bit qui 25 est utilisé pour indiquer si c'est un trait pour lequel un test supplémentaire doit être fait Si le bit indicateur est établi le microcode saute vers une section spéciale qui contient les instructions pour stocker le nombre d'entrée du trait choisi, c'est-à-dire son nombre séquentiel dans la 30 liste des mots simples stockés. En suivant le contrôle du bit indicateur, le CLOK Ul détermine s'il y a des traits supplémentaires désirés qui doivent être analysés S'il y en a les mots masques et de comparaison pour les traits suivants désirés et non désirés, 35 sont chargés dans des emplacements de stockage temporaire S'il y a des mots simples supplémentaires, CLOKU 1 contrôle pour voir si le mot simple suivant rencontre le trait désiré, ou pas, ou s'il rencontre le trait non désiré Une rencontre au trait désiré entraîne une boucle au point de 40 contrôle du bit indicateur Une rencontre à un trait non désiré, cause une mise en défaut du test De la même façon, si la liste de mots simples est épuisée sans une rencontre à un trait désiré, le test est mis en défaut. Comme indiqué précédemment, la partie de base de 45 chaque règle dans le code de classification est une description soigneuse de la forme du caractère au moyen d'un test "d'ordre dextrorsum" avec, dans la plupart des cas ou sans traits indésirables Dans quelques rares cas, il peut être nécessaire pour une prévension de substitution, d'utiliser 50 un test dans le sens "négatif" C'est-à-dire que, pour qu'un caractère soit accepté, la réponse au test souhaitée est négative Parmi ces tests qui peuvent être appliqués dans un mode négatif, sont une recherche pour un certain type de trait, une recherche pour un nombre donné de traits d'un certain type, et un test "d'ordre dextrorsum", sans trait non désiré. Comme noté brièvement ci-dessus, dans certains cas 05 difficiles l'ensemble de traits peut être insuffisant pour permettre une distinction entre deux caractères ou plus apparemment différents c'est-à-dire deux caractères différents qui apparaissent structurellement identiques Dans de telles situations, on utilise des algorithmes spéciaux qui 10 opèrent directement sur le train de codes plutôt que sur l'ensemble de traits identifiés Par exemple, les caractères "U" et "V" sont souvent écrits dans des formes dont les différences sont pratiquement indiscernables Un calcul basé sur l'acuité de l'angle interne ou externe, ou un 15 calcul du rapport de l'aire enfermée à la taille du caractère, est nécessaire pour résoudre cette situation En général, pour chacun des deux carctères en conflit la décision de reconnaissance est basée sur le calcul de certains paramètres géométriques de la forme du caractère et sur la 20 comparaison de ces paramètres avec des seuils déterminés heuristiquement. En règle générale, il y a deux possibilités pour aboutir à cette décision de reconnaissance basée sur la comparaison avec un seuil Chaque caractère considéré ap25 partient ou bien à la classe 1, c'est-à-dire avec un paramètre de décision supérieur au seuil, ou bien à la classe 2 c'est-àdire avec un paramètre de décision inférieur ou égal au seuil En plus de cette décision "binaire", une paire de seuils peut être déterminée et un caractère considéré comme 30 appartenant à la classe 1 si le paramètre de décision est supérieur au premier seuil, et appartenant à la classe 2 si le paramètre de décision est inférieur au second seuil. S'il arrive que la valeur du paramètre de décision soit entre les valeurs des seuils, alors le caractère est consi35 déré comme ambigu Selon une réalisation préférée de la présente invention, les deux approches sont utilisées suivant le type de la paire en conflit Dans le cas ou deux seuils sont utilisés les règles pour chaque prototype de la paire en conflit correspondante sont fournies avec le même 40 code de prévention de substitution mais avec différents seuils et des signes d'inégalité, Chaque entrée dans le test "d'ordre dextrorsum" est associée à un certain point sur le pourtour du caractère Chaque trait dans la liste de-traits pour un caractère 45 donné est associé à une des seize positions ( 4 x 4) et à huit directions possibles Si des informations plus précises concernant la position et la direction d'un trait sont nécessaires, de telles informations peuvent être obtenues à partir du point de la liste de type d'intérêt pour le 50 trait Parfois, un trait ne peut être identifié sur la seule base de son type, de sa position et de sa direction. Cependant, ce trait peut normalement être identifié sur la base de l'ordre de son apparition Ainsi pour identifier le trait, le test "d'ordre dextrorsum" doit être mis en drapeau, c'est-à-dire que le premier bit dans le mot masque doit être établi Ce qui précède permet une correspondance "d'un pour un" entre les traits identifiés pendant le test 05 "d'ordre dextrorsum" avec la liste entière des points d'intérêt. Le code de prévention de substitution le plus commun est une comparaison de la distance appropriée ou à deux dimensions entre deux points du pourtour du caractère avec 10 un seuil donné c'est-à-dire une distance minimum ou maximum entre deux traits La distance entre deux points peut être calculée directement en unités de balayage utilisant la logique d'extraction de trait, comme décrit ci-dessus, ou bien peut être convertie sous une forme normalisée par le 15 processeur de reconnaissance La normalisation peut être faite en respectant la hauteur, la largeur la diagonale ou tout autre mesure de la boite du catactère Par exemple, comme il est décrit à la figure 22, les caractères "H" et "N" sont structurellement identiques, c'est-à-dire qu'ils 20 ont des ensembles identiques de traits dans l'ordre dextrorsum Cependant, la différence visible entre eux peut être déterminée au moyen des positions relatives des BAYS Dans le caractère "H", la BAY face au nord doit être plus haute que la BAY face au sud tandis que le contraire est vrai pour 25 le caractère "N" Dans l'exemple décrit, la distance entre deux BAYS le long de l'axe Y pour le caractère "H" doit être supérieure à O c'est-à- dire que la BAY inférieure est considérée comme étant la première, la BAY supérieure étant la seconde, l'axe Y étant dirigé du Nord au Sud, un seuil 30 étant déterminé heuristiquement. Un autre exemple est montré figure 23 décrivant des images possibles des caractères " 4 " et "X" Afin de faire la distinction entre les deux caractères de la figure 23, ces caractères ayant des ensembles de traits structurelle35 ment identiques, l'angle entre les traits No 1 et 5 est contrôlé Pour le caractère "X", cet angle doit être environ de 180 degrés tandis que pour le caractère " 4 ", cet angle peut être approximativement entre 45 et 135 degrés. Pour permettre la distinction entre des paires de 40 caractères telles que " 9 " et " 4 " "U" et "V" " O " et "D" la détermination de la rectitude d'une ligne est requise Une routine spéciale de calcul de déviation qui utilise la logique d'extraction de traits est valable pour calculer une déviation d'un contour partant d'une ligne droite entre les 45 deux points donnés sur le pourtour d'un caractère L'aire enfermée entre le tracé du contour et la ligne droite reliant deux points donnés est calculée, normalisée au carré de la distance entre ces points et peut être comparée avec une valeur de seuil. Une fin de courbe est normalement décrite par le type de trait appelé SPUR ou STUB Il y a un nombre de formes différentes pour la fin d'une courbe représentée par un SPUR après l'extraction de trait Il est souvent nécessaire de distinguer ces SPURS afin d'éviter une substitution Par exemple, un "H" et un "M" sans convexité au milieu, ou un "t 9 " et un " 8 " avec la région fermée du bas pleine, sous souvent difficiles à classer Cependant, les SPURS du haut 05 sont différents pour un "H" et un "M" tandis que les SPURS du bas sont aussi souvent différents pour " 9 " et " 8 " Une routine qui analyse l'épaisseur croissante d'une courbe partant du point de courbure maximale peut être employée Les distances successives entre les points opposés sur les 10 côtés du contour des courbes sont calculées par la logique d'extraction de traits et tous les incréments jusqu'au point final pré-déterminé sont additionnés Les points de départ et de fin sont mis en drapeau dans le test "d'ordre dextrorsum" La somme des incréments est normalisée à la distance 15 entre les points de départ et de fin et comparée à une valeur de seuil. Bien qu'un mode préféré de réalisation ait été illustré et décrit de différentes modifications et substitutions peuvent être faites sans sortir de l'esprit et-de la portée 20 de l'invention En conséquence, il est entendu que la présente invention a été décrite à titre illustratif mais non limitatif. 2549259. R E V E N D I C A T I O N S 1 Procédé d'identification caractérisé par le fait qu'il comprend les étapes suivantes: mémorisation d'informations proportionnelles à au moins une portion d'un contour d'un objet à identifier, analyse des informations mémorisées pour certifier la localisation de points sur le contour de l'objet qui soient en accord avec des conditions de courbure présélectionnée, au moins quelques uns de ces points certifiés étant des points de pic de courbure qui se situent dans des régions de 10 longueur et de courbure présélectionnées sur le contour dudit objet, analyse des informations mémorisées pour déterminer la forme géométrique de régions adjacentes du contour de l'objet pour les points certifiés, identification de chaque région analysée du contour comme un trait d'un ensemble présélectionné de traits sur la base d'une forme géométrique, analyse des formes mémorisées pour déterminer la position relative à l'objet comme un ensemble de chaque trait 20 identifié, analyse des informations mémorisées pour déterminer la direction de chaque trait relativement à une orientation prédéterminée, préparation d'une description d'ensemble codée et tes25 table de ladite portion de contour dudit objet dans son intégralité, préparation d'une description d'ensemble codée et testable de traits identifiés sur ladite portion de contour et leurs inter-relations, génération d'une série de, descriptions généralisées qui définit la forme géométrique de toutes les permutations probables des objets à reconnaître, lesdites descriptions généralisées comprenant les traits désirés et non désirés et étant dans ledit code testable, OS comparaison de la description codée avec les descriptions généralisées d'une série de descriptions généralisées, et, notification de l'identité de l'objet quand la description codée rencontre une description généralisée. 2 Procédé selon la revendication 1, caractérisé par le fait que l'objet à identifier est un dessin et dans lequel les étapes de mémorisation d'informations sont les suivantes: création d'une représentation binaire bidimentionnelle du dessin, et, génération et mémorisation de signaux proportionnels aux changements de direction entre points adjacents qui comprennent la représentation binaire du dessin quand le contour de la représentation du dessin est tracé dans une première direction. 3 Procédé selon la revendication 2, caractérisé par le fait que l'étape de la génération et de la mémorisation de signaux proportionnels aux changements de direction comprend: le traçage du contour d'un premier segment du dessin et la génération d'un train de signaux codés proportionnels 25 aux changements dans la direction requise pour le traçage, détermination pour connaître si le dessin contient un second segment ou une région entièrement enfermée dans un segment précédemment tracé, traçage du contour d'un quelconque second segment et 30 d'une telle région enfermée et génération d'un train de signaux codés proportionnels aux changements de direction requis pour le traçage, et, mémorisation des signaux codés proportionnels aux segments tracés et aux régions enfermées dans des endroits de mémoire accessibles séparément. 4 Procédé selon la revendication 1, caractérisé par le fait que l'étape de génération d'une série de descriptions généralisées comprend: la production d'une série de questions et de réponses qui représentent tous les prototypes uniques de topologie connue de tous les objets possibles. Procédé selon la revendication 3, caractérisé par le fait que l'étape de comparaison comprend: le test de la description codée du contour entier du dessin par rapport aux descriptions généralisées comprenant le nombre de segments et de régions enfermées, lesdites descriptions généralisées comprenant aussi le nombre de traits identifiés, et, le test de la description codée des traits identifiés et de leur inter-relation par rapport aux descriptions généralisées comprenant les traits désirés en ordre séquentiel avec au moins quelques uns des traits désirés qui sont séparés par au moins un premier trait non désiré. 6 Procédé selon la revendication 5, caractérisé par le fait que l'étape de la création d'une représentation binaire bidimentionnelle comprend: production d'une image d'une portion d'un document, l'image comprenant au moins un premier dessin à identifier, 25 et numérisation et mémorisation de l'image. 7 Procédé selon la revendication 6, caractérisé par le fait que l'étape de traçage comprend une analyse séquentielle de l'image numérisée pour localiser une transition entre 30 deux niveaux binaires. 8 Procédé selon la revendication 3, caractérisé par le fait que l'étape de génération d'une série de descriptions généralisées comprend la production d'une série de questions et de réponses qui représentent tous les prototypes topolo- giquement uniques de tous les dessins possibles. 9 Procédé selon la revendication 8, caractérisé par le fait que l'étape de comparaison comprend: le test de la description codée-du contour entier du 05 dessin par rapport aux descriptions généralisées comprenant le nombre de segments et de régions enfermées et comprenant le nombre de traits identifiés, et le test de la description codée des traits identifiés et de leur inter-relation par rapport aux descriptions géné10 ralisées comprenant des tests désirés en ordre séquentiel avec au moins quelques uns des traits désirés qui sont séparés par au moins un premier trait non désiré. Procédé selon la revendication 9, caractérisé par le fait que l'étape de création d'une représentation binaire 15 bidimentionnelle comprend: la production d'une image d'une portion d'un document, l'image comprenant au moins un premier dessin à identifier. et la numérisation et la mémorisation de l'image. 11 Procédé selon la revendication 10, caractérisé par le fait que les étapes de traçage comprennent l'analyse séquentielle de l'image numérisée pour localiser une transition entre les deux niveaux binaires. 12 Procédé d'identification de dessin, caractérisé par le 25 fait qu'il comprend les étapes suivantes: la création et la mémorisation d'une représentation binaire bidimentionnelle d'une image du dessin inconnu, le traçage complet du contour extérieur de la représentation de l'image mémorisée dans une première direction 30 par laquelle le tracé entourera des régions de contour ayant une certaine courbure, l'identification de régions sur le contour tracé ayant une courbure qui satisfait à des critères présélectionnés incluant l'amplitude et le type, les régions de courbure convexe étant identifiées par des détections de points correspondant à des pics de de courbure, le classement de chaque région identifiée sur la base de formes géométriques, la détermination de l'orientation de chaque région classifiée relativement à un système de coordonnées prédéterminé, la préparation et la mémorisation d'un ensemble de descriptions codées et testables de contour de dessins in10 connus en temps que fonction de la forme des régions identifiées, leur orientation et leur position relative sur le contour tracé, la génération et la mémorisation d'un ensemble de descriptions compactes testables de chaque prototype unique 15 topologiquement pour chaque dessin à identifier, lesdites descriptions de prototype comprenant des informations proportionnelles aux régions de forme désirée et non désirée, et la comparaison en série de descriptions de dessins in20 connus codés avec des descriptions prototypes et notification de l'identité d'un dessin quand les descriptions se rencontrent. l 3 Procédé selon la revendication 12, caractérisé par le fait que l'étape de traçage comprend la production et la 25 mémorisation d'une description codée en série du contour tracé, ladite description codée en série étant proportionnelle aux chanqments de direction entre des points adjacents sur le contour de la representation de l'image mémoriséep pendant ledit traçage de cel le-ci dans ladite première di30 rection, et par le fait que l'étape d'identification de régions comprend: l'analyse de la description codée en série pour localiser de régions de courbure convexe excédant des limites de courbure prédéterminée, l'analyse de régions localisées de courbure convexe pour déterminer le point de pic de courbure, et la mémorisation de l'adresse de chacun de ces points de pic de courbure. 14 Dispositif pour l'identification de dessins, caractérisé par le fait qu'il comprend: des moyens pour créer une représentation binaire bidimentionnelle d'une image d'un dessin inconnu qui doit être identifié, des premiers moyens de mémoire pour mémoriser ladite représentation d'un image, des moyens pour tracer complètement le contour des segments constituant l'image de la représentation du dessin mémorisée dans lesdits premiers moyens de mémoire, chaque 15 tracé étant dans une seule direction, lesdits moyens de traçage engendrant une série de signaux proportionnels aux changements de direction entre des points adjacents qui sont dénombrés pendant le traçage desdits contours, des seconds moyens de mémoire pour mémoriser lesdits 20 signaux représentatifs des changements de direction engendrés par lesdits moyens pour tracer, des moyens commandables par les signaux représentatifs des changements de direction mémorisés dans lesdits seconds moyens de mémoire pour l'identification de points d'intérêt 25 situés dans des régions de courbure prés Mlectionnée sur les contours tracés, au moins quelques uns de ces points identifiés étant des points de courbure aique qui relie des regions de courbure et longueur présélectionnées, cesdits moyens d'identification de points fournissant des signaux de 30 sortie qui comprennent l 'adresse, dans lesdits seconds moyens de mémoire, de chaque point d'intérêt identifié, des troisièmes moyens de mémoire pour mémoriser les signaux de sortie fournis par les moyens d'identification desdits points, par quoi lesdits troisièmes moyens de me- moire contiennent les adresses desdits points d'intérêt identifiés, des moyens de classification commandables par lesdits signaux mémorisés dans lesdits seconds et troisièmes moyens 05 de mémoire pour classifier les régions du contour comprenant chaque *point identifié comme un type de trait d'un ensemble de traits présélectionnés, lesdits moyens de classification fournissant des signaux de sortie codés qui identifient chaque trait par type, orientation et position, des moyens commandables par lesdits signaux de sortie fournis par lesdits moyens de classification pour engendrer et mémoriser une description d'ensemble codée et testable du dessin inconnu, ladite description codée définissant le dessin inconnu comme une fonction de ses traits; de leur 15 orientation et de leur position relative, et des moyens pour comparer en série ladite description codée du dessin inconnu avec la description d'ensemble codée et testable de prototype de chaque dessin qui peut être identifié, lesdits moyens pour comparer produisant un signal 20 de sortie qui identifie le dessin inconnu quand les descriptions codées se rencontrent. Dispositif selon la revendication 14, caractérisé par le fait que lesdits moyens pour comparer en série comprennent des moyens pour mémoriser une description d'ensemble 25 compacte et testable de chaque prototype topologiquement unique de chaque dessin à identifier, lesdites descriptions de prototypes comprenant des informations proportionnelles l'ensemble des traits désirés et non désirés. 16 Dispositif selon la revendication 15, caractérisé par 30 le fait que lesdits moyens d'identification des points comprennent: des moyens pour calculer la courbure du contour tracé de la représentation image du dessin inconnu, lesdits moyens pour calculer la courbure détectant des régions de courbure convexe excédant une courbure prédéterminée limite et fournissant des signaux de sortie qui définissent de telles régions, des moyens commandables par lesdits signaux de sortie 05 fournis par cesdits moyens pour calculer les courbures pour analyser lits signaux représentatifs des changements de direction mémorisés dans lesdits seconds moyens de mémoire et se situant dans les régions détectées de courbure convexe pour y déterminer le point correspondant à un pic de cour10 bure et des moyens pour engendrer un signal de sortie qui comprend l'adresse de chaque point de pic de courbure déterminé. 17 Dispositif selon la revendication 14, caractérisé par 15 le fait que lesdits moyens d'identification de point comprennent des moyens pour calculer la courbure de contour tracé de la représentation image du dessin inconnu, lesdits moyens pour calculer la courbure détectant des régions de courbure convexe excédant une courbure limite prédéterminée 20 et fournissant des signaux de sortie qui définissent de telles régions, et dés moyens commandables par lesdits signaux de sortie fournis par lesdits moyens pour calculer la courbure, pour analyser lesdits signaux représentatifs des changements de direction mémorisés dans lesdits seconds 25 moyens de mémoire et se situant dans les régions détectées de courbure convexe et pour y déterminer le point de pic de courbure,et des moyens pour engendrer un signal de sortie qui comprend l'adresse de chaque point de pic de courbure. 18 Dispositif selon la revendication 14, caractérisé par 30 le fait que lesdits moyens de classification comprennent: des premiers moyens d'analyse commandables par lesdits moyens mémorisés dans lesdits seconds et troisièmes moyens de mémoire, pour analyser le contour tracé de la représentation image des segments du dessin inconnu adjacents à chaque point d'intérêt identifié, les dits premiers moyens d'analyse fournissant des signaux de sortie proportionnels à la courbure et au changement de direction desdites régions adjacentes du contour, des moyens commandables par lesdits signaux fournis par lesdits premiers moyens d'analyse pour l'identification de chaque région du contour analysée comme un trait d'un ensemble de traits présélectionnés sur la base d'une forme géométrique, des seconds moyens d'analyse commandables par les signaux mémorisés dans lesdits seconds et troisièmes moyens de mémoire pour déterminer la position relative de la représentation image du dessin comme un ensemble de chaque trait identifié et fournissant un signal de sortie proportionnel à 15 leurdite position relative, et des troisièmes moyens d'analyse commandables par les signaux mémorisés dans lesdits seconds et troisièmes moyens de mémoire pour déterminer la direction de chaque trait identifié dans un système de coordonnées prédéterminé et 20 fournissant un signal de sortie proportionnel à cette direction prédéterminée. 19 Dispositif selon la revendication 14, caractérisé par le fait que lesdits moyens pour tracer comprennent: des moyens pour tracer complètement le contour d'un 25 premier segment d'un dessin dans une première direction et engendrant un train de signaux codés proportionnels aux changements de direction nécessaires pour le traçage, des moyens pour balayer la représentation image mémorisée dans lesdits premiers moyens de mémoire, pour détermi30 ner si le dessin inconnu contient un second segment ou une région entièrement entourée dans ledit premier segment et fournissant un signal de sortie proportionnel à la présence d'un second segment ou d'un région enfermée, et des moyens commandables par les signaux de sortie fournis par lesdits moyens de balayage pour permettre auxdits moyens pour tracer complètement de tracer le contour de chaque second segment et de chaque région enfermée, pour que lesdits moyens de traçage puissent engendrer un train de 05 signaux codés proportionnels aux changements de direction nécessaires pour tracer chaque second segment ou région enfermée. Dispositif selon la revendication 19, caractérisé par le fait que lesdits troisièmes moyens de mémoire mémorisent 10 les trains de signaux codés proportionnels à chaque segment tracé et à chaque région enfermée dans un endroit de mémoire accessible séparément. 21 Dispositif selon la revendication 14, caractérisé par le fait que lesdits moyens pour engendrer une représentation 15 binaire bidimentionnelle d'une image d'un dessin inconnu comprennent des moyens pour produire une image d'une portion d'un document l'image comportant au moins un premier dessin à identifier et des moyens pour numériser ladite image. 22 Dispositif selon la revendication 21, caractérisé par 20 le fait que lesdits moyens pour tracer comprennent: des moyens pour balayer l'image numérisée, pour localiser des transitions entre deux niveaux binaires 23 Dispositif selon la revendication 22, caractérisé par le fait que lesdits moyens pour tracer comprennent: des moyens pour tracer complètement le contour d'un segment du dessin dans une première direction et pour engendrer un train de signaux codés proportionnels aux changements de direction nécessaires pour le traçage, des moyens pour balayer la représentation image mémo30 risée dans lesdits premiers moyens de mémoire pour déterminer si le dessin inconnu contient un second segment ou une région complètement enfermée dans ledit premier segment, et pour fournir un signal de sortie proportionnel à la présence d'un second segment ou d'une région enfermée, et des moyens commandables par les signaux de sortie fournis par lesdits moyens de balayage pour permettre auxdits moyens pour tracer complètement le contour de tracer le contour de chaque second segment et de chaque région enfer05 mée, pour que lesdits moyens de traçage puissent engendrer un train de signaux codés proportionnels aux changements de direction nécessaires pour le traçage de chaque second segment ou région enfermée. 24 Dispositif selon la revendication 23, caractérisé par 10 le fait que lesdits moyens pour comparer en série comprennent des moyens pour mémoriser une description d'ensemble compacte testable de chaque prototype topologiquement unique de chaque dessin à identifier, ladite description unique de prototype comprenant des informations proportionnelles aux 15 régions de forme désirée et non désirée. Dispositif selon la revendication 24, caractérisé par le fait que lesdits moyens d'identification de points comprennent: des moyens pour calculer la courbure du contour tracé 20 de la représentation image du dessin inconnu et pour fournir des signaux proportionnels à celle-ci, des moyens de contrôle de niveau commandables par les signaux fournis par lesdits moyens de calcul, pour identifier lesdits points d'intérêt basés sur des durées et des 25 amplitudes de courbure, au moins quelques uns de ces points étant des points de pic de courbure se situant dans lesdites régions de courbure convexe, lesdits points étant identifiés comme un d'une pluralité de types de points d'intérêt, et des moyens pour engendrer des signaux qui comprennent 30 l'adresse dans lesdits seconds moyens de mémoire et le type de chaque point d'intérêt identifié. 26 Dispositif selon la revendication 25 caractérisé par le fait que lesdits moyens de classification comprennent: des premiers moyens d'analyse commandables par les signaux mémorisés dans lesdits seconds et troisièmes moyens de mémoire, pour analyser le contour tracé de la représentation image du segment du dessin inconnu adjacent à chaque point d'intérêt identifié, lesdits premiers moyens d'analyse 05 fournissant des signaux de sortie proportionnels à la courbure et au changement de direction desdites régions de contour adjacentes, des moyens commandables par lesdits signaux fournis par lesdits premiers moyens d'analyse, pour identifier cha10 que région de contour analysée comme un trait d'un ensemble de traits présélectionnés sur la base d'une forme géométrique des seconds moyens d'analyse commandables par les signaux mémorisés dans lesdits seconds et troisièmes moyens de 15 mémoire, pour déterminer la position relative de la représentation de l'image du dessin comme un ensemble de chaque trait identifié, et pour fournir un signal de sortie proportionnel à ladite position relative, et des troisièmes moyens d'analyse commandables par les 20 signaux mémorisés dans lesdits seconds et troisièmes moyens de mémoire, pour déterminer la direction de chaque trait identifié relativement à un système de coordonnées prédéterminé, et pour fournir un signal de sortie proportionnel à ces directions déterminées.