Brevet FR2791775A1 — publié le 20001006

La présente demande est liée à la demande de brevet des Etats Unis également en attente N de série 08/892 734 déposée le 15 juillet 1997 (Bordereau de mandataire 65.0265), la demande de brevet des Etats Unis N de série 08/782 740 déposée le 13 janvier 1997 (Bordereau de mandataire 65.255), la demande de brevet des Etats Unis N de série 09/012 227 déposée le 23 janvier 1998 (Bordereau de mandataire 65.0255P1), la demande de brevet des Etats Unis N de série ............ déposée la même date que cette demande (Bordereau de mandataire 65. 0287) et la demande de brevet des Etats Unis N de série ........... déposée à la même date que cette demande (Bordereau de mandataire 65.0293), dont les contenus sont incorporés ici par référence. Une partie de l'exposé du présent document de brevet contient des éléments qui sont soumis à protection de droits d'auteur. Le propriétaire des droits d'auteur n'émet aucune objection à la reproduction par facsimile de l'un quelconque des éléments exposés dans le brevet, tels qu'ils apparaissent dans les fichiers ou enregistrements du Bureau des brevets et des marques, mais se réserve par ailleurs tous droits d'auteur, quels qu'ils soient. 37 CFR1.71. La présente invention concerne la détection de défauts dans des substrats configurés, par exemple des tranches semi-conductrices, en particulier sur la base de particularités qui apparaissent dans des images de contraste de tension. La fabrication de dispositifs semi-conducteurs implique de nombreuses étapes de processus d'où résultent des configurations sur un substrat. Si les configurations d'un étage intermédiaire de production sont défectueuses, il peut en résulter une microplaquette défectueuse, ce qui réduit les rendements. On connaît des procédés et appareils d'inspection des configurations sur des tranches semiconductrices à des étapes intermédiaires de production, ce que l'on appelle l'inspection "en cours". Ces procédés et appareils incluent des systèmes et des procédés basés sur l'identification. de défauts de configuration visibles dans des images optiques de la tranche. Au moins l'une des approches est basée sur des images de contraste de tension de la tranche, acquises en utilisant un microscope à balayage électronique, ou SEM selon les initiales du terme anglo-saxon Scanning electron beam, ainsi que décrit dans les brevets des Etats Unis N 5 502 366 et 5 578 821 et mis en application dans le système SEMSpec, commercialisé par KLA-TENCOR Corp. Un procédé antérieur de détection de défauts à partir d'images de contraste de tension est basé sur un calcul de la différence des valeurs d'intensité de pixels, pixels par pixels, entre une image de la configuration à inspecter et une image de référence. Dans ce procédé, deux images de contraste de tension, ou deux régions d'une seule image de contraste de tension, sont comparées. Pour extraire des défauts, les deux images ou les deux régions de l'image sont corrigées en premier lieu quant à des différences de brillance et de contraste, et sont alignées l'une avec l'autre. Puis, la différence des valeurs d'intensités de pixels est calculée, pixel par pixel, pour produire une image de différence. Un effet de seuil est appliqué à l'image de différence résultante afin de produire une image de défauts dans laquelle les valeurs de pixels sont binaires. Des particularités de l'image de défaut qui satisfont à certaines conditions, par exemple de dimension ou de configuration, ou d'intensité, minimales, sont considérées comme des défauts. Des statistiques des défauts des images sont ensuite calculées et un compte rendu est effectué. Par exemple, le défaut le plus grand et le nombre total de défauts peuvent être fournis pour chaque image. Puis, les images sont visualisées sur la base de statistiques de façon que les défauts les plus significatifs soient d'abord traités et analysés, ce qui réduit considérablement le temps de visualisation. Une force de ce procédé est qu'il n'exige que peu de connaissances des particularités ou des structures électriques des images de contraste de tension, et qu'il suffit de savoir qu'elles sont de la même dimension approximative dans les deux images ou régions de l'image, et qu'un alignement et une normalisation d'image corrige les différences d'ensemble dans les images ou dans les régions de l'image. Ce procédé permet de détecter des défauts de contraste de tension sans exiger de connaître d'abord quelles configurations électriques sont en cours d'inspection. Mais cette force est également une faiblesse. Toutes les différences d'images sont considérées comme des défauts potentiels, même si elles ne le sont pas, et il n'est donc pas possible de différencier entre des défauts dits "killer" selon le terme anglo-saxon, c'est-à-dire tueurs, des défauts de "nuisance", et de "faux" défauts. Un défaut tueur est un défaut de signification électrique dans le test final d'une microplaquette, qui conduit à une fiabilité réduite ou à une performance électrique réduite. Un "faux" défaut est un compte-rendu, produit par un système de détection de défauts, d'un défaut qui ne correspond pas à un parasite de surface ou d'image, et qui résulte par exemple d'une erreur du système de défauts. Un défaut de "nuisance" est un parasite de surface ou d'image qui est réel mais n'est ni un défaut tueur, ni un défaut pertinent par ailleurs. Certains parasites du processus d'inspection sont dus à un défaut d'alignement d'image, à des distorsions locales de l'image et à des absences de linéarité du processus de balayage utilisé pour acquérir des images de contraste de tension. Puisque l'apparition de défauts tueurs est en général très rare, le nombre de défauts de nuisance détectés peut être beaucoup plus grand que le nombre de défauts tueurs. Dans des systèmes classiques d'inspection à base de pixels, 90% ou davantage des défauts inclus dans les comptesrendus peuvent être des défauts de nuisance. Séparer ces derniers des défauts tueurs exige une visualisation et une évaluation par des personnels, ce qui exige du temps et est onéreux. Le taux élevé de défauts de nuisance et de faux défauts, et le besoin d'une intervention humaine, rendent difficiles l'amélioration de la performance du processus d'inspection pour le rendre plus utile dans la fabrication de tranches semi-conductrices. Des solutions existantes pour réduire les taux de défauts de nuisance et de faux défauts provoqués par un mauvais alignement, par exemple un positionnement précis de l'étage de tranche, une imagerie plus uniforme et plus facile à répéter, et des algorithmes perfectionnés de détection de défauts, n'éliminent pas le problème et réduisent typiquement la sensibilité à des défauts tueurs. En même temps, ces solutions exigent davantage de traitement, et donc davantage de temps de traitement et d'équipement de traitement. Ceci réduit tant le débit que le rapport entre la performance et le prix. Un autre inconvénient est que le procédé ne peut détecter que des différences d'intensité de pixel à pixel puisqu'il est à base de pixels. Ceci rend difficile, sinon impossible, la détection de certains types de défauts. La demande de brevet des Etats Unis également en attente N de série ............ (Bordereau de mandataire 65. 0287) décrit des techniques d'amélioration de la visibilité, dans une image de contraste d'image, de défauts électriquement significatifs dans des particularités comme des orifices de contact non remplis. Ces techniques provoquent une modification de la dimension apparente de l'orifice de contact non rempli dans l'image de contraste de tension, en fonction de la connectivité électrique de matière dans l'orifice de contact. Alors qu'un procédé de comparaison d'images à base de pixels pourrait détecter la modification de dimensions en tant que différences d'intensité pour des pixels qui entourent l'orifice de contact, et que calculer une différence d'intensité de pixel pourrait montrer un défaut en configuration torique, ceci ne révélerait pas la manifestation fondamentale de ce type de défauts : une modification apparente de dimension de la particularité plutôt qu'une modification d'intensité. La Figure 1 représente un procédé antérieur dans lequel des images ont été acquises et traitées en parallèle. La partie d'acquisition d'image commence par l'installation d'un fichier de lot à l'étape 105, - suivie par une acquisition d'image à l'étape 110, une mémorisation de l'image à l'étape 115 et un déplacement vers une image suivante à l'étape 120. Des images sont mémorisées dans le dispositif de mémoire 125 à disque. Les étapes 110,115 et 120 sont répétées pour d'autres régions d'une tranche et l'imagerie d'une autre tranche débute lorsque l'imagerie de la tranche précédente est achevée. Dès lors qu'une image a été acquise, un traitement d'image s'effectue en parallèle avec l'acquisition de nouvelles images : traitement d'image commence par un alignement de l'image acquise avec une image de référence à l'étape 130, puis la différence des niveaux d'intensité des images est calculée à l'étape 135 pour produire une étape de différence. Le bruit est réduit dans l'image de différence à l'étape 140, et les particularités de l'image de différence sont ensuite comptées à l'étape 145. Des particularités de l'image de différence sont triées à l'étape 150 et sont visualisées par du personnel à l'étape 155 pour décider celles des particularités qui sont considérées comme des défauts. Il est souhaitable de fournir des procédés et des appareils qui permettent un moindre taux de défauts de nuisance et un moindre besoin d'intervention humaine, et donc une amélioration tant du débit que du rapport entre la performance et les coûts. De façon générale, les procédés et appareils de la présente invention emploient un traitement d'image à base de particularités pour détecter, quantifier et analyser des défauts lors de l'inspection de substrats configurés, comme des tranches semi-conductrices, à partir d'images de contraste de tension obtenues par faisceau électronique. De façon plus particulière, selon un premier aspect, l'invention fournit un procédé d'inspection d'un substrat configuré, caractérisé en ce qu'il comprend les étapes consistant à: a. préparer une image de référence et une image de test; b. extraire des particularités à partir de l'image de référence et extraire des particularités à partir de l'image de test; c. mettre en concordance des particularités de l'image de référence et des particularités de l'image de test ; d. comparer des particularités de l'image de référence et de l'image de test afin d'identifier des défauts. Le procédé peut comprendre en outre l'étape consistant à: aligner l'image de test avec l'image de référence avant de mettre en concordance des particularités de l'image de référence et des particularités de l'image de test. Le procédé peut comprendre en outre l'étape consistant à: enregistrer des défauts identifiés lors de la comparaison de particularités de l'image de référence et de l'image de test. L'image de référence peut être une image de contraste de tension d'un premier substrat configuré, l'image de test étant une image de contraste de tension d'un deuxième substrat. L'image de référence peut être une image de contraste de tension d'une première région d'un substrat configuré, l'image de test étant une image de contraste de tension d'une deuxième région du même substrat configuré. L'image de référence peut être une image de cellules qui se répètent d'un substrat configuré, l'image de test étant une duplication de l'image de référence, décalée d'une cellule par rapport à l'image de référence. Préparer l'image de référence et l'image de test peut comprendre les sous-étapes consistant à lisser l'image de référence et lisser l'image de test. Préparer l'image de référence et l'image de test peut comprendre les sous-étapes consistant à normaliser l'image de référence et normaliser l'image de test. Préparer l'image de référence et l'image de test peut comprendre les sous-étapes consistant à mémoriser l'image de référence et mémoriser de l'image de test. Extraire des particularités peut comprendre les sous-étapes consistant à: extraire des particularités à partir de l'image de référence et ensuite extraire des particularités à partir de l'image de test. Préparer une image de référence et une image de test et extraire des particularités à partir des images peuvent comprendre les étapes consistant à: mémoriser une image de référence et extraire des particularités à partir de l'image de référence, et mémoriser une image de test et extraire des particularités à partir d'une image de test. On peut prévoir que l'image de test et l'image de référence comprennent des données de pixels qui incluent une information d'emplacement et d'intensité, et qu'extraire des particularités à partir de l'image de référence et de l'image de test comprenne les sous- étapes consistant à: appliquer un effet de seuil à l'information d'intensité pour produire une image à niveau binaire qui inclut des régions de particularités et des régions sans particularités ; utiliser l'image de niveau binaire en tant que masque pour définir comme particularités les régions de l'image de test qui correspondent aux régions de particularités de l'image de niveau binaire. On peut prévoir que l'image de test et l'image de référence comprennent des données de pixels qui incluent une information d'emplacement et d'intensité et qu'extraire des particularités à partir de l'image de référence et de l'image de test comprenne les sous- étapes consistant à: comparer de façon répétitive l'image de test à une particularité modèle pour produire des données de corrélation qui représentent une corrélation de particularités de l'image de test avec l'image modèle; appliquer un effet de seuil aux données de corrélation pour identifier les emplacements de particularités à l'intérieur de l'image de test ; détecter des bords de particularités aux emplacements de particularités identifiés. Comparer des particularités de l'image de référence et de l'image de test pour identifier des défauts peut comprendre les sous-étapes consistant à: calculer des propriétés de particularités, comparer des propriétés de particularités calculées, et déterminer des résultats de comparaison qui satisfont à des critères prédéterminés de défauts. Comparer des particularités de l'image de référence et de l'image de test pour identifier des défauts peut comprendre les sous-étapes consistant à: calculer des propriétés de particularités dans l'image de référence; calculer des propriétés de particularités dans l'image de test; comparer des propriétés de particularités calculées dans l'image de test à des propriétés de particularités calculées dans l'image de référence; calculer des statistiques de comparaison de propriétés de particularités ; déterminer des statistiques de comparaison qui satisfont à des critères prédéterminés de défauts. Le procédé peut comprendre en outre un compte-rendu de statistiques de propriétés de défauts. Extraire des particularités à partir de l'image de référence peut comprendre les sous-étapes consistant à: calculer un niveau moyen d'arrière-plan de l'image de référence, enlever de l'image de référence le niveau moyen d'arrière-plan afin de produire une première image de référence modifiée, appliquer un effet de seuil à la première image de référence modifiée pour produire une deuxième image de référence modifiée, et identifier des particularités de la deuxième image de référence modifiée. Extraire des particularités à partir de l'image de test peut comprendre les sous-étapes consistant à: calculer un niveau moyen d'arrière-plan de l'image de test, enlever de l'image de test le niveau moyen d'arrière-plan afin de produire une première image de test modifiée, appliquer un effet de seuil à l'image de test modifiée pour produire une deuxième image de test modifiée, et identifier des particularités de la deuxième image de test modifiée. Extraire des particularités à partir de l'image de référence peut comprendre les sous-étapes consistant à: mettre en concordance un gabarit de particularités dans l'image de référence et identifier des particularités de l'image de référence qui concordent avec le gabarit de particularités. Extraire des particularités à partir de l'image de référence peut comprendre les sous-étapes consistant à: calculer un niveau moyen d'arrière-plan de l'image de référence, enlever de l'image de référence le niveau moyen d'arrière-plan afin de produire une première image de référence modifiée, mettre en concordance un gabarit de particularités dans la première image de référence modifiée, et identifier des particularités dans la deuxième image de référence modifiée qui concordent avec le gabarit de particularités. Extraire des particularités à partir de l'image de test peut comprendre les sous-étapes consistant à: mettre en concordance un gabarit de particularités dans l'image de test et identifier des particularités dans l'image de test qui concordent avec le gabarit des particularités. Extraire des particularités à partir de l'image de test peut comprendre les sous-étapes consistant à: calculer un niveau moyen d'arrière-plan de l'image de test, enlever de l'image de test le niveau moyen d'arrière-plan afin de produire une première image de test modifiée, mettre en concordance un gabarit de particularités dans la première image de test modifiée, et identifier des particularités dans la deuxième image de test modifiée qui concordent avec le gabarit de particularités. Selon un deuxième aspect, l'invention réalise un appareil d'inspection d'un substrat configuré caractérisé en ce qu'il comprend un système informatique ; et des instructions de commande du système informatique destinées à préparer une image de référence et une image de test d'au moins un substrat configuré, extraire des particularités de l'image de référence et d'extraire des particularités de l'image de test, mettre en concordance des particularités de l'image de référence et les particularités de l'image de test ; comparer des particularités de l'image de référence et de l'image de test afin d'identifier des défauts. Les instructions peuvent commander le système informatique de manière à aligner l'image de test avec l'image de référence avant de mettre en concordance des particularités de l'image de référence et des particularités de l'image de test. Les instructions peuvent commander le système informatique de manière à enregistrer des défauts identifiés lors de la comparaison de particularités de l'image de référence et de l'image de test. L'appareil peut comprendre en outre: un sous-système d'imagerie à faisceau électronique pour acquérir des images de contraste de tension d'un substrat configuré à utiliser comme images de test. Les instructions peuvent commander le système informatique de manière à lisser au moins soit l'image ~ de référence, soit l'image de test. Les instructions peuvent commander le système informatique de manière à normaliser au moins soit l'image de référence, soit l'image de test. Les instructions peuvent commander le système informatique de manière à extraire en premier lieu des particularités de l'image de référence et extraire ensuite des particularités de l'image de test. Les instructions peuvent commander le système informatique de manière à calculer des propriétés de particularités de l'image de référence et de l'image de test, comparer des propriétés de particularités calculées, et déterminer des résultats de comparaison qui satisfont à des critères prédéterminés de défauts. Les instructions peuvent commander le système informatique de manière à calculer un niveau moyen d'arrière-plan de l'image de référence, enlever de l'image de référence le niveau moyen d'arrière-plan afin de produire une première image de référence modifiée, appliquer un effet de seuil à la première image de référence modifiée pour produire une deuxième image de référence modifiée, et identifier des particularités de la deuxième image de référence modifiée. Les instructions peuvent commander le système informatique de manière à calculer un niveau moyen d'arrière-plan de l'image de test, enlever de l'image de test le niveau moyen d'arrière-plan afin de produire une première image de test modifiée, appliquer un effet de seuil à l'image de test modifiée pour produire une deuxième image de test modifiée, et identifier des particularités de la deuxième image de test modifiée. Les instructions peuvent commander le système informatique de manière à extraire des particularités d'une image en mettant en concordance un gabarit de particularités dans l'image et en identifiant des particularités dans l'image qui concordent avec le gabarit de particularités. Selon un troisième aspect, l'invention fournit un produit programme informatique comprenant un support lisible par ordinateur contenant des instructions de commande d'un système informatique caractérisé en ce que ces instructions consistent à: préparer une image de référence et une image de test qui représentent des configurations d'au moins un substrat configuré, extraire des particularités de l'image de référence et des particularités de l'image de test, mettre en concordance des particularités de l'image de référence et des particularités de l'image de test, et comparer des particularités de l'image de référence et de l'image de test afin de d'identifier des défauts. Les buts, particularités et avantages de la présente invention exposés ci-dessus ainsi que d'autres ressortiront davantage de la lecture de la description qui suit d'un mode de réalisation préféré, en se référant aux dessins dans lesquels: la Figure 1 est un schéma logique d'un procédé antérieur d'acquisition d'images, mis en #uvre en parallèle avec un traitement d'image; la Figure 2 est un schéma d'un système cohérent avec la présente invention; la Figure 3 est un schéma logique de haut niveau de certains procédés cohérents avec la présente invention ; la Figure 4 est une vue à écran divisé qui représente deux images de contraste de tension de microplaquettes d'une tranche semi-conductrice partiellement fabriquée; la Figure 5 est une illustration de haut niveau de procédés cohérents avec la présente invention pour mettre en concordance des particularités entre des images de contraste de tension d'orifices de contact; la Figure 6 est un schéma logique qui représente des procédés cohérents avec la présente invention; la Figure 7 représente de façon plus détaillée un mode de réalisation de l'étape 610 de la Figure 6, cohérent avec la présente invention; la Figure 8 représente de façon plus détaillée un mode de réalisation de l'étape 630 de la Figure 6, cohérent avec la présente invention; la Figure 9 représente de façon plus détaillée un mode de réalisation des étapes 610,615 et 620 de la Figure 6, cohérent avec la présente invention; la Figure 10 représente de façon plus détaillée un mode de réalisation de l'étape 630 de la Figure 6, cohérent avec la présente invention; la Figure 11 représente de façon plus détaillée un mode de réalisation de l'étape 635 de la Figure 6, cohérent avec la présente invention; la Figure 12 représente de façon plus détaillée un mode de réalisation du procédé de la Figure 6, cohérent avec la présente invention; la Figure 13 représente de façon plus détaillée un mode de réalisation de l'étape 9620A de la Figure 9, cohérent avec la présente invention; la Figure 14 représente de façon plus détaillée un mode de réalisation de l'étape 9620B de la Figure 9, cohérent avec la présente invention; La Figure 15 représente de façon plus détaillée une variante de mode de réalisation de l'étape 9620A de la Figure 9, cohérent avec la présente invention; la Figure 16 représente de façon plus détaillée une variante de mode de réalisation de l'étape 9620B de la Figure 9, cohérent avec la présente invention; les Figures 17A, 17B, 17C et 17D représentent un schéma logique d'une mise en application, cohérente avec la présente invention, de détection de défauts à base de particularités; les Figures 18A à 18H illustrent une extraction de particularités par application d'un effet de seuil d'une manière cohérente avec la présente invention; les Figures 19A à 19B illustrent une extraction de particularités par concordance avec un modèle, d'une manière cohérente avec la présente invention; les Figures 20A à 20F illustrent un processus de détection de défauts cohérent avec la présente invention ; la Figure 21 représente un tracé de la zone calculée de particularités d'image de test par rapport à la zone calculée de particularités d'image de référence ; les Figures 22A à 22C illustrent une extraction de particularités par application d'un effet de seuil adaptatif, d'une manière cohérente avec la présente invention ; les Figures 23A à 23D illustrent un exemple d'un fonctionnement en mode en réseau ; la Figure 24 représente un schéma logique d'un procédé d'exécution, en mode en réseau, d'une comparaison de cellule à cellule en vue d'une détection de défauts. La Figure 2 représente schématiquement un exemple de système 200 destiné à vérifier des tranches en utilisant des techniques de contraste de tension cohérentes avec la présente invention. Le système 200 comprend un sous-système 205 de faisceau électronique, par exemple un sous-système d'imagerie par faisceau électronique d'un système Schlumberger IDA 1000, qui inclut un affichage facultatif 210, un étage motorisé 213 de tranche, une colonne 215 à électrons qui inclut un étage et une chambre de vide, un processeur 220 d'image, une mémoire 225 de données, par exemple une unité de disque à 100 Goctets, et, facultativement, un sous-système d'ordinateur ou sous-système informatique 230 à affichage 235. Le sous-système 205 de faisceau électronique, le processeur 220 d'image et le soussystème informatique 230 communiquent entre eux par l'intermédiaire d'un bus 240 de réseau ou d'une autre connexion appropriée. Le sous-système 205 de faisceau électronique peut être, par exemple, un système de test IDS 10000 à faisceau électronique, comme celui qui est commercialisé par Schlumberger Automated Test Systems de San José, Californie, à logiciel modifié pour permettre des opérations cohérentes avec l'invention, de la manière décrite de façon plus détaillée ci-dessous. De telles opérations peuvent inclure, par exemple, un traitement asynchrone d'images multiples, un traitement d'alignement et une visualisation d'image, une création et un affichage de topologie de défauts de tranches, et une importation et une exportation d'images à visualiser. Le soussystème 205 de faisceau électronique peut également inclure des modifications comme une énergie ou un courant plus élevé de faisceau électronique, ainsi qu'un canon de noyage à chargement préalable et des éléments matériels et un logiciel correspondants pour appliquer un chargement stable réglable de surface d'une tranche à polarité sélectionnée de chargement, comme décrit dans la demande de brevet des Etats Unis également en attente, N de série 08/892 734, déposée le 15 juillet 1997 de C. W. LO et al. L'étage motorisé 215 de tranche peut être, par exemple, un étage motorisé de tranche model MWS comme celui qui est commercialisé par Schlumberger Automated Test Systems de San José, Californie, pour manier et positionner une tranche par rapport à la colonne d'électrons (non représentée) d'un sous-système 205 à faisceau électronique. Le processeur 220 d'image peut être, par exemple, un groupe de stations de travail ou d'ordinateurs personnels en réseau, par exemple un groupe d'ordinateurs personnels en réseau équipés de processeurs Pentium II. La mémoire 225 de données offre une capacité de mémorisation d'images de référence et de traitement asynchrone d'images multiples. Le sous-système informatique facultatif 230 à affichage 235 est agencé pour permettre à une personne de surveiller et de visualiser des processus et des images liés à l'inspection de tranches, et d'effectuer des opérations de vérification. Des procédés cohérents avec la présente invention extraient des particularités à partir d'une image, par exemple en appliquant un effet de seuil pour produire une version binaire de l'image de particularités et ensuite une image facultative d'échelle des gris, ou en comparant des particularités de l'image à un gabarit de particularités. Les images peuvent être alignées pour appliquer des particularités, ou bien des versions binaires de l'image de particularités peuvent être alignées et des particularités correspondantes peuvent alors être mises en concordance. En d'autres termes, des particularités comme celles qui peuvent présenter une signification électrique sont extraites de l'image de contraste de tension et sont ensuite mises en concordance particularité par particularité avant que la détermination des défauts ne soit effectuée. Cette approche offre, par rapport aux procédés antérieurs à base de pixels, les avantages suivants: 1. Taux réduit de défauts de nuisance et de faux défauts et sensibilité accrue aux défauts tueurs. 2. Réduction du bruit de grenaille, par calcul de moyennes des valeurs de pixels sur l'ensemble de la particularité. 3. Seules les parties d'images à signification électrique probable sont extraites, de façon à simplifier et à accélérer le processus de détermination de défauts. 4. Des propriétés éventuellement significatives des particularités, comme la superficie, l'intensité moyenne, la somme de l'intensité, la configuration, les moments, etc., peuvent être calculées et comparées parce que le processus est basé sur des particularités et non sur des pixels. 5. La charge de travail de traitement peut être réduite. En comparant des images particularité par particularité et non pixel par pixel, le nombre des opérations est déterminé par le nombre de particularités, typiquement quelques centaines, et non par le nombre de pixels, typiquement des centaines de milliers ou des millions. Des ressources de calcul sont donc rendues disponibles pour améliorer la robustesse de détection de défauts. 6. Un alignement d'images de référence et de test ou de régions d'une image n'exige pas une précision de l'ordre du pixel. Un alignement d'images doit seulement être assez proche pour que des particularités correspondantes entre images ou régions d'une image soient correctement en concordance. Par conséquent, la précision requise pour l'étage d'alignement et les algorithmes d'alignement d'images est déterminée par des dimensions de particularités et non par des dimensions de pixels. La Figure 3 est un schéma logique de haut niveau de certains procédés cohérents avec l'invention. A l'étape 305, une interface graphique d'utilisateur affiche une "recette de tâche" à visualiser par une personne. Lorsque l'opérateur a sélectionné ou entré des paramètres pour la tâche, les algorithmes de traitement d'images, ou d'IP selon les initiales du terme anglo-saxon Image processing, et les paramètres de traitement d'image sont chargés dans la mémoire active à l'étape 310, ainsi qu'une image de gabarit si elle est nécessaire pour la tâche. A l'étape 315, une source de données d'images est sélectionnée, par exemple soit une image vidéo directe ou, en d'autres termes, de données réelles, soit une image précédemment acquise mémorisée sur disque. A l'étape 320, une image de référence R et une image de test T à traiter sont chargées dans la mémoire active, ainsi qu'une image arbitre A si elle nécessaire pour la tâche. L'utilisation d'images arbitres est décrite plus loin de façon plus détaillée. En général, une image arbitre est utilisée lors d'une comparaison d'images de deux régions d'une tranche afin d'enlever une ambiguïté quant à celle des deux images qui est défectueuse, par exemple lors de comparaisons d'images ou de parties d'image représentant des structures répétitives sur une tranche, comme des cellules voisines dans une mémoire. A l'étape 235, l'image de référence et l'image de test sont alignées, ainsi que l'image arbitre si elle est requise pour la tâche. En variante, l'étape 325 est sautée si l'alignement d'image n'est pas nécessaire, par exemple lorsqu'un étage de précision élevée est utilisé et/ou lorsque les images ont été alignées préalablement. A l'étape 335, une détection de défauts à base de particularités est exécutée. A l'étape 340, les résultats de la détection de défauts, par exemple des emplacements, dimensions, types de défauts etc. sont sauvegardés dans une base de données et/ou le compte- rendu est effectué et l'image est facultativement sauvegardée en outre pour référence ultérieure. A l'étape 345, des images et résultats intermédiaires, par exemple une topologie de défauts et des statistiques concernant l'emplacement, les dimensions, le type etc. de défauts sont affichés facultativement sur un écran d'affichage 350 pour surveillance par un opérateur humain. La Figure 4 est une vue à écran partagé qui représente deux images à contraste de tension de microplaquettes d'une tranche semi-conductrice partiellement fabriquée. Les images sont acquises à une étape de fabrication qui suit une gravure d'orifices de contact à travers une couche diélectrique pour exposer des éléments de contact. Chacun des points noirs représente un orifice de contact. L'image 410 du côté gauche de la Fig. 4 est une image de référence prise sur une première microplaquette. L'image 420 est une image de test prise sur une deuxième microplaquette. Il est souhaité d'inspecter l'image 420 pour identifier des défauts à signification électrique, par exemple des orifices de contact manquants ou incomplètement formés. Des procédés cohérents avec la présente invention permettent une inspection par mise en concordance de particularités incluses dans les deux images. La Figure 5 est une illustration de haut niveau de procédés cohérents avec la présente invention pour mettre en concordance des particularités entre des images de contraste de tension d'orifices de contact. Pour la commodité de l'illustration, seul un petit nombre d'orifices de contact est représenté aux images de la Figure 5, bien que les techniques soient applicables à des champs beaucoup plus grands d'orifices de contact, ainsi qu'à des images de particularités, incluses dans des semi-conducteurs mais autres que des orifices de contact. Une image de référence 510 inclut cinq orifices de contact, représentés sous la forme de points noirs 512, 514, 516,518 et 520, mais il y manque un orifice de contact à un emplacement situé en 522. Une image de test 524 comprend les orifices de contact sous la forme de points noirs en 526,528, 530,532, 534 et 536. L'image de test est alignée avec l'image de référence 510 à l'étape 538. L'alignement est indiqué à des fins d'illustration par des cases en traits interrompus 540 et 542 qui indiquent les régions de recouvrement des images 510 et 524 : exemple la particularité 512 correspond à la particularité 526, la particularité 514 correspond à la particularité 528, la particularité 516 ne comporte aucune contrepartie dans l'image de test, la particularité 518 correspond à la particularité 532, la particularité 520 correspond à la particularité 534, et l'emplacement 522 correspond à la particularité 530. La particularité 536 d'image 524 ne comporte aucune contrepartie dans l'image de référence 510. Des particularités sont extraites des images aux étapes 544 et 546. Les particularités extraites des images sont numérotées de façon à indiquer que les particularités sont identifiées comme particularités à la suite de l'extraction de particularités. A cette étape, il n'existe aucune correspondance entre les numéros de particularités d'une image de référence et les numéros de particularités d'une image de test. Les Figures 20A à 20F illustrent un processus de mise en concordance de particularités, cohérent avec la présente invention. La Figure 20A représente une partie d'une image de référence à plusieurs particularités représentant des contacts d'une tranche, comme les contacts 2005 ou 2010, le point central et la frontière de chaque particularité étant respectivement marqués par une croix et un cercle. La Figure 20B représente une partie d'une image de test qui inclut elle aussi une série de particularités représentant des contacts d'une tranche, le point central et la frontière de chaque particularité étant marqués respectivement par une croix et un cercle. La Figure 20C représente l'image de référence qui comporte des anneaux additionnels qui entourent chaque particularité pour indiquer une limite de déport acceptable lors de la comparaison des particularités de l'image de test avec celles de l'image de référence. La Figure 20D représente l'image de test de la Figure 20B à laquelle est superposée l'image de référence de la Figure 20C. De faibles erreurs d'alignement sont visibles. On peut voir que le centre de l'une des particularités de l'image de test, la particularité 2015, est situé en dehors de la limite acceptable de déport de la particularité 2010. On peut voir aussi que la particularité centrale de l'image de référence, la particularité 2020, ne comporte aucune contrepartie dans l'image de test. La Figure 20E représente des particularités qui sont "mises en concordance" dans le processus. La Figure 20F représente les particularités que le processus a identifié comme des "défauts", un compte-rendu de particularités manquantes étant effectué pour la particularité 2020 et un compte-rendu de particularité décalée étant effectué pour la particularité 2010 parce que la particularité 2015 de l'image de test est à l'extérieur de la limite acceptable de déport. Après l'identification des défauts, un recouvrement contrastant, par exemple une couleur contrastante, peut être affichée avec l'image de test pour rendre les défauts directement visibles à un observateur. Après cette identification et cette numérotation des particularités, des propriétés des particularités extraites sont déterminées. Dès lors que les particularités ont été extraites, calculer une ou plusieurs propriétés des particularités est un processus de calcul simple et direct. Des propriétés peuvent inclure, sans que cette liste soit limitative, la superficie, les dimensions, la configuration, la centre de gravité, l'intensité moyenne qui est particulièrement importante pour réduire le bruit dans des images à faisceau électronique à bruit de grenaille limité, la somme de l'intensité et l'écarttype de l'intensité. Le tableau I donne des exemples de certaines propriétés de particularités, par exemple les coordonnées x, y du centre de gravité de la particularité, la superficie A et l'intensité moyenne (I) de pixels. Les valeurs données le sont à titre d'illustration et ne sont pas nécessairement mises à l'échelle des images de la Figure 5. Tableau 1 (Particularités Extraites) Image de référence 510 Image de test 524 N x y A I N xyAI R1 1,2 1,1 3,0 40 Tl 1,3 1,0 2,0 44 R2 5,2 1,0 3,5 45 T2 5,4 1,1 2,5 81 R3 6,2 3,1 3,0 50 T3 3,2 3,0 2,0 50 R4 1,2 5,1 2,5 42 T4 1,3 5,0 2,5 54 R5 5,3 5,1 3, 0 48 T5 5, 2 5, 0 3, 0 52 où N désigne le numéro de particularité. A l'étape 548, des particularités sont mises en concordance. Par exemple, les particularités 512 à 520 sont identifiées comme particularités R1 à R5 de l'image de référence 510, tandis que l'emplacement 522 ne contient aucune particularité. Les particularités 526 à 534 sont identifiées comme particularités Tl à T5 de l'image de test 524. Les particularités R1, R2, R4 et R5 de l'image de référence 510 sont respectivement mises en concordance avec les particularités Tl, T2, T4 et T5 de l'image de test 524. La particularité R3 de l'image de référence 510 ne comporte aucune contrepartie dans l'image de test 524 parce qu'elle est en dehors du champ de vision de l'image de test 524. La particularité T3 de l'image de test 524 ne comporte aucune contrepartie dans l'image de référence 510 parce qu'elle est manquante dans l'image de référence. Le Tableau 2 représente un exemple simple de comparaison de propriétés de particularités mises en concordance. Une particularité numérotée de l'image de référence (R N ) est comparée à une particularité de l'image de test (T N ), une différence entre la superficie de particularité de l'image de référence (Aref) et la superficie de particularité de l'image de test (Atest) est calculée pour obtenir une valeur de différence entre les superficies (Adif), un rapport entre Aref et Atest est calculé pour obtenir une valeur de rapport des superficies (Aratio). Ce rapport pourrait être utilisé comme mesure de défaut. Par exemple, tout rapport supérieur à un certain seuil, 1,2 par exemple, pourrait être considéré comme une particularité défectueuse. Un test est effectué pour déterminer si la valeur Aratio est ou non supérieure à une valeur de seuil (Ar > 1,2). Tableau 2 (Particularités Comparées) Particularités avec concordance RN - TN Aref Atest Adif Aratio Ar>1,2 Défaut? RI - Tl 3,0 2,0 1,0 1,5 Vrai Oui R2 - T2 3,5 2,5 1,0 1,4 Vrai Oui R4 - T4 2,5 2,5 0,0 1,0 Faux Non R5 - T5 3,3 3,0 0,3 1,1 Faux non Particularités sans concordance R3 - TE Hors champ de vision Inconnu Inconnu RX - T3 Manque dans champ de vision N/D Oui* * défaut dans l'image de référence (peut se produire lorsque l'image de référence est celle d'une microplaquette réelle). N/D signifie non disponible Lorsque les propriétés des particularités ont été calculées, elles peuvent être comparées individuellement ou en combinaison(s). Un compte-rendu de défauts peut être effectué, par exemple, si les propriétés des particularités diffèrent d'une ampleur prédéterminée. Numériquement, cette comparaison peut être, sans que ceci soit limitatif, une soustraction ou un rapport qui sont l'un et l'autre communément utilisés, ou une fonction plus grand que ou plus petit que, etc. Combiner des propriétés peut augmenter la sensibilité de détection des défauts sans augmenter le rapport nuisance-défauts. Par exemple, la somme des intensités de tous les pixels de la particularité combine une mesure de superficie et un calcul de moyenne d'intensité, et est particulièrement adapté pour détecter un défaut dont le résultat est une variation subtile du niveau de gris, mais qui modifie aussi la dimension apparente de la particularité défectueuse comme c'est le cas pour des contacts ou des orifices traversants, comme décrit dans la demande de brevet des Etats Unis également en attente N de série déposée le (Bordereau de mandataire 65. 0287). Le Tableau 2 montre aussi des défauts classés comme des particularités manquantes ou des particularités additionnelles. Une autre approche consiste à calculer des statistiques, par exemple des moyennes, des écartstypes et/ou des régressions linéaires, sur des différences entre les propriétés concernées. Les particularités dont les propriétés diffèrent, par exemple de deux écarts-types, de la répartition de différence, peuvent faire l'objet de comptes-rendus de défauts. Cette approche évite le besoin de définir un seuil fixe quant à la différence entre particularités de propriétés. On notera en effet que les seuils fixes sont enclins aux erreurs parce qu'ils peuvent être fixés incorrectement et parce qu'ils ne s'adaptent pas, même s'ils sont fixés correctement, à des variations subtiles de l'image, par exemple un contraste ou une brillance qui varie. En revanche, le seuil est adaptatif à l'intérieur d'une plage sélectionnée de signification statistique. La moyenne et l'écart-type de différences de propriétés de particularités sont eux-mêmes une mesure de la densité de défauts sur la tranche. Cette approche adaptative est utile, par exemple, dans le cas d'une tranche défectueuse à nombreux défauts, puisque l'écart-type est grand et que seuls les principaux défauts font l'objet de comptes-rendus. Dans le cas d'une tranche de mauvaise qualité, la moyenne et l'écart-type euxmêmes indiquent un mauvais rendement. Dans le cas d'une tranche à haut rendement, des défauts tueurs ressortent clairement à partir de la répartition de différences et peuvent faire l'objet de comptes-rendus corrects en tant que défauts. La Figure 21 représente un exemple de tracé de la superficie calculée de particularités d'image de test en fonction de la superficie calculée de particularités d'une image de référence. Des superficies d'images en concordance parfaite seraient tracées sur la ligne 2100 de "concordance parfaite". Des zones de particularités dont les valeurs sur le graphes sont très éloignées de la ligne 2100, comme les zones 2105, 2110,2115, sont directement identifiées comme défauts tueurs potentiels. La Figure 6 est un schéma logique qui représente des procédés cohérents avec la présente invention. Une détection de défauts, à base de particularités, débute à l'étape 605. A l'étape 610, des images de référence et de test et, facultativement, une image d'arbitrage sont préparées. A l'étape 615, les images de référence et de test sont alignées facultativement l'une avec l'autre, à volonté ou selon les besoins. Des procédés d'alignement d'images sont connus dans l'art et ne seront pas détaillés ici : peut se référer par exemple au brevet des Etats Unis N 5 054 097 de Flinois et al., qui représente des techniques d'alignement d'images, et des produits comme le système d'imagerie à faisceau électronique IDS 10000 commercialisé par Schlumberger Technologies, Inc. de San José, Californie, incluent des capacités d'alignement. Des particularités sont extraites des images à l'étape 620. L'étape d'alignement 615 et l'étape d'extraction 620 de particularités peuvent être exécutées dans un ordre ou dans l'autre, ou simultanément, sans affecter le résultat, à moins que l'algorithme d'alignement n'utilise pour l'alignement une information de particularités extraites. Des particularités extraites sont mises en concordance à l'étape 625 en utilisant facultativement une information d'alignement. Les particularités sont comparées à l'étape 630 pour identifier les défauts. A l'étape facultative 635, le compte-rendu des défauts identifiés est effectué et/ou un enregistrement de ceux-ci est sauvegardé. Le compte-rendu peut par exemple prendre la forme d'un affichage ou d'une impression de l'image de test avec un revêtement contrastant, par exemple de couleurs différentes, qui représente les défauts identifiés, ainsi que les statistiques de particularités sous forme de tableau. L'étape 640 contrôle si une autre image doit être inspectée quant à des défauts. Si tel est le cas, le processus est répété, en recommençant à l'étape 610. Dans le cas contraire, le processus est terminé à l'étape 645. Si elle n'est pas nécessaire, la préparation de l'image de référence peut être sautée à l'étape 610. Par exemple, il n'est pas nécessaire de préparer l'image de référence à chaque répétition si c'est la même image de référence qui est utilisée chaque fois qu'une image de test doit être inspectée, ou si l'image de référence à utiliser pendant la répétition suivante est l'image de test provenant de la répétition précédente. La Figure 7 représente de façon plus détaillée un mode de réalisation de l'étape 610 où les images sont, soit lues lorsqu'il s'agit d'images précédemment acquises et mémorisées, soit acquises à l'étape 7610A. Les images sont lissées à volonté à l'étape facultative 7610B. Les images sont normalisées à volonté à l'étape facultative 7610C. Des procédés de lissage d'images comme un lissage spatial gaussien, et des procédés de normalisation d'images comme une normalisation d'intensité de pixel, sont connus dans l'art. Puisque le but du lissage est une minimisation de bruit ou une élimination de bruit, d'autres techniques peuvent être utilisées pour réduire le bruit, par exemple augmenter le courant de faisceau pendant une acquisition d'image et calculer une moyenne temporelle, au lieu d'effectuer un lissage spatial. La Figure 8 représente de façon plus détaillée un mode de réalisation de l'étape 630. Des propriétés de particularités de l'image sont calculées à l'étape 8630A. Les propriétés calculées des particularités sont comparées à l'étape 8630B. Il est déterminé à l'étape 8630C si les résultats de la comparaison satisfont à des critères de défauts. La Figure 9 représente une méthode possible de mise en oeuvre des étapes 610,615 et 620. Une image de référence R est lue et mémorisée ou est acquise, à l'étape 9610A. L'image de référence R est lissée à l'étape facultative 9610B. Des particularités sont extraites de l'image de référence R à l'étape 9620A. L'image de test T est lue et mémorisée, ou est acquise, à l'étape 9610C. L'image de test T est lissée à l'étape facultative 9610D et normalisée à l'image de référence à l'étape facultative 9610E. L'image de test T est alignée avec l'image de référence R à une étape facultative 615. Les particularités sont extraites de l'image de test T à l'étape 9620B. La Figure 10 représente de façon plus détaillée un mode de réalisation de l'étape 630 dans laquelle les particularités sont comparées pour identifier les défauts. Des propriétés des particularités de l'image de référence R et de l'image de test T sont calculées à l'étape 10-630A. Les propriétés calculées de particularités de l'image de référence et de l'image de test T sont comparées à l'étape 10-630B. Des statistiques de comparaison de propriétés sont calculées à l'étape 10-630C. A l'étape 10-630D, il est déterminé si les statistiques de comparaison de propriétés satisfont à des critères prédéterminés de défauts. La Figure 11 représente de façon plus détaillée un mode de réalisation de l'étape 635 au cours de laquelle sont effectués un compte-rendu ou une mémorisation des données concernant des défauts détectés. Il est déterminé à l'étape 11-635A si des défauts ont été identifiés. Si tel est le cas, le compte-rendu des statistiques des propriétés des particularités de défauts est effectué, à l'étape 11- 636B. Le compte-rendu, ou la sauvegarde en mémoire, des statistiques de propriétés de défauts et/ou d'autres informations d'image sont effectués à l'étape 11-635C. La Figure 12 représente de façon détaillée un autre mode de réalisation qui illustre des variantes de modes de répétition. Une détection de défauts à base de particularités commence à l'étape 605. L'image de référence et l'image de test sont préparées à l'étape 610. L'image de référence est préparée à une étape 12-610A, comme aux étapes 9610A, 9610B et 9620A de la Figure 9. Les images sont alignées à une étape facultative 615. Des particularités sont extraites à l'étape 620. Des particularités sont mises en concordance à l'étape 625. Des particularités sont comparées pour identifier les défauts à l'étape 630. Un compte-rendu et/ou une sauvegarde des données de défauts sont effectués à une étape facultative 635. Le processus se répète ensuite : le mode opératoire consiste à explorer une image de référence, puis une image de test, puis une image de référence, puis une image de test selon une configuration en alternance désignée par RTRT... selon les initiales des mots référence et test, l'étape 12-610A est exécutée à chaque répétition ; le mode opératoire consiste à explorer une seule fois une image de référence et à la comparer ensuite à de multiples images de test, selon une configuration séquentielle désignée par RTTT..., ici aussi selon les initiales des mots référence et test, la répétition débute à l'étape 12-610B. Lorsque toutes les images ont été inspectées, la détection de défauts à base de particularités se termine à l'étape 640. Un compte-rendu et/ou une mémorisation des résultats de détection de défauts pour l'inspection sont effectués à l'étape 1245. Le processus se termine à l'étape 1250. La Figure 13 représente de façon plus détaillée un mode de réalisation de l'extraction des particularités à partir de l'image de référence R à l'étape 9620A. Un niveau moyen d'arrière-plan de l'image de référence R est calculé à l'étape 13- 9620A1. Le niveau d'arrière-plan est enlevé des intensités de pixels de l'image de référence R afin de produire une première image de référence modifiée R1 à l'étape 13-9620A2. Enlever le niveau d'arrière-plan est exécuté facultativement parce que certaines images de contraste de tension ne présentent pas un contraste uniforme. Le résultat du contraste non uniforme peut être de rendre compte de faux défauts si de simples algorithmes de soustraction de pixels sont utilisés, sans effectuer d'abord une soustraction ou une normalisation du niveau d'intensité de pixels de l'arrière-plan. L'arrière-plan est la zone de l'image comprise entre les particularités. Les particularités d'une tranche sur laquelle une détection de défauts est exécutée sont typiquement des conducteurs, par exemple des fils, des orifices métallisés ou des contacts. La zone qui entoure ces particularités est typiquement diélectrique, de nos jours du SI02 la plupart du temps. La zone d'arrière-plan d'une image de la tranche représente le diélectrique. Des parasites qui résultent d'une charge non uniforme de la surface de la tranche provoquent parfois un potentiel de surface légèrement différent et donc une intensité d'arrière-plan qui varie pour des points différents de l'image. Enlever ou normaliser l'intensité de pixels d'arrière-plan peut améliorer la robustesse de l'extraction de particularités. Dans le cadre du présent document, le terme d'enlèvement de 1"'arrière-plan" doit être compris comme incluant, soit une soustraction du niveau d'arrière-plan, soit une normalisation du niveau d'arrière-plan, soit toute autre technique appropriée pour compenser un contraste non uniforme d'une image. Les pixels de la première image de référence modifiée RI sont traités par effet de seuil à l'étape 13-9620A3 pour produire une deuxième image modifiée de référence R2, par exemple une image binaire. Des particularités de la deuxième image de référence modifiée R2 sont identifiées à l'étape 13-9620A4. En général, le but de l'enlèvement d'arrière-plan est d'améliorer les particularités. D'autres techniques d'amélioration de particularités sont également connues. Par exemple, si la particularité à extraire consiste en longues lignes droites, une amélioration de bord peut être exécutée sur l'image avant l'extraction des particularités. La Figure 14 représente de façon plus détaillée un mode de réalisation d'extraction de particularités à partir d'une image de test T, à l'étape 9620B. Un niveau moyen d'arrière-plan de l'image de test T est calculé à l'étape 14-9620B1. Le niveau d'arrière-plan est enlevé des intensité de pixels de l'image de test T afin de produire une première image de test modifiée Tl à l'étape 14-9620B2. Les pixels de la première image de test modifiée Tl sont traités par effet de seuil à l'étape 14-9620B3 afin de produire une deuxième image de test modifiée T2, par exemple une image binaire. Des particularités de la deuxième image de test modifiée T2 sont identifiées à l'étape 14- 9620B4. La Figure 15 représente de façon plus détaillée un mode de réalisation d'extraction de particularités à partir d'une image de référence R, à l'étape 9620A. Un niveau moyen d'arrière-plan de l'image de référence R est calculé à l'étape 15-9620A1. Le niveau d'arrière-plan est enlevé de l'image de référence R à l'étape 15-9620A2. A l'étape 15-9620A3, un gabarit de particularités est ensuite mis en concordance, soit dans l'image de référence, soit dans l'image qui en résulte après enlèvement du niveau d'arrière-plan. Des particularités de l'image de référence qui sont en concordance avec le gabarit au-dessus d'un certain seuil, par exemple au-dessus d'une intensité moyenne prédéterminée, sont identifiées à l'étape 15-9620A4 comme particularités présentes dans l'image de référence. La Figure 16 représente un autre mode de réalisation d'extraction de particularités à partir d'une image de test T, à l'étape 9620B. Un niveau moyen d'arrière-plan de l'image de test T est calculé à l'étape facultative 16-9620B1. Le niveau d'arrière- plan est enlevé des intensité de pixels de l'image de test T à l'étape 16-9620B2. A l'étape 16-9620B3, un gabarit de particularités est ensuite mis en concordance, soit dans l'image de test, soit dans l'image qui résulte de celle-ci après enlèvement du niveau d'arrière-plan. Des particularités de l'image de test qui sont en concordance avec le gabarit au- dessus d'un certain seuil, par exemple au-dessus d'une intensité moyenne prédéterminée, sont identifiées à l'étape 16-9620B4 comme particularités présentes dans l'image de test. Les Figures 17A, 17B, 17C et 17D représentent un schéma logique d'une mise en application de détection de défauts à base de particularités, qui est cohérent avec la présente invention. En se référant en premier lieu à la Figure 17A, le processus débute à l'étape 1700. Il peut être mis en oeuvre sur un système informatique qui emploie un logiciel quelconque approprié de système d'exploitation, par exemple le . logiciel de système d'exploitation VxWorks, commercialisé par WindRiver Systems. A l'étape 1702, les paramètres d'opération sont téléchargés, c'est-à- dire qu'ils sont reçus par le processus, pour déterminer par exemple les images de référence et de test à comparer, les drapeaux, etc. A l'étape 1704 il est contrôlé s'il existe des images de référence à comparer à des images de test. Puisque le processus a débuté à l'instant, et qu'il existe au moins une image de référence à utiliser pour comparaison, la commande passe à l'étape 1706. A l'étape 1706, l'image de référence traitée préalablement est chargée pour être utilisée par le processus, par exemple à partir de la mémoire de masse 1708 ou du disque 1710. La mémoire de masse est une grande mémoire vive à haute vitesse. A l'étape 1712, un contrôle est effectué pour assurer que l'image de référence est chargée. Dans le cas contraire, il est rendu compte, à l'étape 1714, de l'absence d'image de référence, et la commande passe à l'étape 1770 (Figure 17D). Si la réponse est positive, il est contrôlé à l'étape 1716 si d'autres images de test doivent être traitées. En se référant à l'étape 1716 de la Figure 17B, si aucune autre image de test n'est à traiter, la commande passe à l'étape 1770, de la Figure 17D. Si une autre image de test doit être traitée, l'image de test est chargée à l'étape 1718 à partir d'une source 1720 d'images réelles, par exemple un tampon d'exploration d'image, ou à partir d'une source 1722 d'images mémorisées comme une mémoire de masse. A l'étape 1724, il est contrôlé si l'image de test est chargée. Dans le cas contraire, il est rendu compte, à l'étape 1726, de l'absence d'image de test et la commande passe à l'étape 1770, de la Figure 17D. Si la réponse est positive, il est contrôlé à l'étape 1728 de la Figure 17C si les images de test doivent être préalablement traitées. Si tel est le cas, un traitement préalable est effectué à l'étape 1730 et la commande passe à l'étape 1732. A l'étape 1732, il est contrôlé si les images de référence et de test sont déjà alignées. On remarque en effet que les images peuvent être alignées préalablement sur la base de l'exactitude et de la répétabilité de l'étage, ou en mettant en oeuvre un générateur analogique de balayage, comme dans le sous-système d'imagerie à faisceau électronique du système d'imagerie faisceau électronique IDS 10000 de Schlumberger, ou un générateur numérique de balayage ou "DSB". Si la réponse est positive, la commande passe à l'étape 1742. Dans le cas contraire, un alignement approximatif est effectué à l'étape 1734. A l'étape 1736, il est contrôlé si l'alignement approximatif est adéquat. Si tel est le cas, les paramètres d'alignement sont mis à jour à l'étape 1738 et, à l'étape 1740, ils sont sauvegardés dans un fichier et/ou envoyés à un ordinateur de commande, qui peut par exemple mettre en oeuvre un système d'exploitation en temps réel comme VxWorks de Windstar Systems, Inc. ou qui peut être un ordinateur à carte unique comme l'ordinateur Mizar à carte unique s'il n'existe pas de système d'exploitation en temps réel, et la commande passe à l'étape 1742. A l'étape 1742, il est contrôlé si la qualité de l'alignement approximatif est bonne. Si tel est le cas, un drapeau est placé à l'étape 1744 : il s'agit d'un drapeau "aligné" si un générateur analogique de balayage est utilisé, ou d'un drapeau "DSB aligné" si un générateur de balayage numérique est utilisé. A l'étape 1746, il est contrôlé si les images doivent être alignées finement. Dans le cas contraire, la commande passe à l'étape 1750 de la Figure 17D. Si la réponse est positive l'alignement des images de test et de référence est exécuté à l'étape 1748 et la commande passe ensuite à l'étape 1750 de la Figure 17D. En se référant à la Figure 17D, des particularités sont extraites de l'image de test 1750 et mémorisées dans la mémoire locale à l'étape 1752. Des particularités de l'image de référence sont restituées de la mémoire locale à l'étape 1754 et sont mises en concordance avec les particularités de l'image de test à l'étape 1756. A l'étape 1758, des particularités sont comparées pour trouver des défauts. Les défauts sont mémorisés à l'étape 1760, par exemple dans une mémoire locale. Une "image de défauts" est calculée à l'étape 1762, par exemple une image binaire ou une image d'échelle des gris qui représente les défauts identifiés à l'étape 1758. Des résultats de défauts sont calculés à l'étape 1766, par exemple une information statistique concernant la nature et les quantités de défauts. Les résultats de défauts sont mémorisés à l'étape 1768, par exemple dans une mémoire de masse. A l'étape 1770, un compterendu mis à jour de défauts est préparé. Des résultats et des images de défauts sont mémorisés dans la mémoire de masse à l'étape 1772 et/ou dans une mémoire à disque à l'étape 1774. Les Figures 18A à 18H illustrent une extraction de particularités par application d'effet de seuil d'une manière cohérente avec la présente invention. Dans cet exemple, seuls des pixels dont la valeur d'intensité est supérieure à un niveau de seuil sont considérés comme faisant partie d'une particularité. A la Figure 18A, une image 1800 d'échelle de gris contient un champ de particularités de contact, par exemple des particularités 1805 qui apparaissent "brillantes" par rapport à l'intensité de l'arrièreplan. A la Figure 18B, une observation tridimensionnelle de l'image en 1810 montre le champ de particularités, leurs intensités de pixels étant tracées dans la troisième dimension. Un plan 1815 qui passe par les particularités représente un seuil à appliquer aux intensités de pixels. La Figure 18C est un tracé le long d'une ligne qui coupe une rangée de particularités, en représentant l'intensité d'échelle des gris des pixels. Un seuil d'intensité de pixels en 1820 représente la manière dont des régions à particularités et sans particularités peuvent être directement séparées dans cette image. Des bords d'une particularité 1825 sont vus en 1830 et 1835. Le niveau du seuil affecte l'emplacement où les bords de la particularité sont définis. La Figure 18D représente les particularités de la Figure 18C après effet de seuil. La Figure 18E représente une image résultante dans laquelle les particularités sont définies par des pixels à valeur binaire. L'image résultante de la Figure 18E est combinée avec l'image d'échelle des gris de la Figure 18A, par exemple par une opération d'analyse de particularités d'image, appelées parfois dans l'art et en particulier dans ce document des blobs selon le terme anglo-saxon, ou en utilisant la topologie de particularités binaires identifiées comme masque, de manière à produire une liste de particularités d'images, ou blobs, qui définissent une image de sortie. Par exemple, l'opération d'analyse de blobs peut être réalisée par la bibliothèque d'imagerie Matrox en utilisant un ordre comme "matrox blob calculate(E,A,linked list of blob feature s)" ou, littéralement, calculer particularités d'images ou blobs de matrox (E, A, liste liée de particularités de particularités d'images ou blobs) où E et A sont des données d'entrée qui représentent les images des Figures 18E et 18A, respectivement. La Figure 18F représente l'aspect que pourraient présenter les particularités de la Figure 18D après une analyse de particularités d'images ou blobs et une assignation de numéros de particularités comme Tl à T3. La Figure 18G est une image de sortie qui représente les particularités identifiées Tl à T6. La Figure 18H représente une structure de données, produite par l'opération d'analyse de particularités d'images ou blobs, qui identifie les particularités par numéros de particularités et par propriétés de particularités, par exemple la position x, y dans l'image, la superficie et l'intensité. Les propriétés des particularités peuvent être comparées, mémorisées et analysées à volonté. Il s'est avéré que l'application d'un effet de seuil fonctionne bien dans certaines situations, par exemple pour des contacts très sombres sur un arrièreplan gris. Mais l'application d'un effet de seuil souffre de limites, par exemple lorsque cette opération se fie à un opérateur humain pour fixer un seuil approprié et/ou lorsque le niveau de gris de la particularité concernée est semblable à celui d'un arrière-plan et que la particularité ne peut être identifiée que par des variations d'intensité aux bords des particularités. On peut éviter de se fier à un opérateur humain en utilisant un effet de seuil adaptatif, dans lequel les valeurs de seuils ne sont pas fixes mais peuvent varier sur l'image. Ceci peut être utilisé pour remédier à des différences de contraste dans une image dues à des effets comme une charge de surface du spécimen dans une image de contraste de tension, ou comme des différences d'éclairage dans une image optique. Le seuil adaptatif ou variable peut être déterminé, par exemple en utilisant un déport fixe par rapport au niveau de gris moyen local ou par rapport à un niveau d'arrière-plan local déterminé pendant l'enlèvement de l'arrièreplan. Un avantage de l'approche par seuil adaptatif consiste en ce qu'elle s'adapte à des variations de niveaux de gris dues à une charge non uniforme de l'arrière-plan isolant - un problème classique dans le cas de systèmes à faisceaux à particules chargées. Les Figures 22A à 22C illustrent une extraction de particularités par application d'effet de seuil adaptatif d'une manière cohérente avec la présente invention. La Figure 22A représente un profil 2205 d'une image de contraste de tension pour un substrat configuré comportant des orifices de contact qui apparaissent sous forme de zones sombres ou d'un contraste d'arrière-plan non uniforme ou progressif. Le profil 2205 est un tracé de contraste d'image dans la direction x le long d'une ligne qui coupe trois orifices de contact. Le contraste d'arrière-plan non uniforme ou progressif peut résulter, par exemple, d'une charge non uniforme de matière diélectrique. Les dépressions 2210,2215 et 220 du profile 2205 représentent, respectivement, des orifices de contact. A titre d'illustration, la Figure 22A représente aussi un seuil fixe non adaptatif 2225. Des limitations du seuil fixe peuvent être vues à partir de la représentation binaire 2230 dont le niveau varie à chaque point où le profil 2205 croise le seuil 2225, mais qui ne représente pas exactement les emplacements des orifices de contact. La Figure 22B représente un profil 2235 à seuil adaptatif créé par lissage du profil 2205. La Figure 22C représente le profil 2235 de seuil adaptatif superposé au profil 2205. L'avantage d'un seuil adaptatif peut être vu à partir de la représentation binaire 2240 dont le niveau varie à chaque point où le profil 2205 croise le seuil 2235, et qui représente exactement les emplacements des orifices de contact. Une mise en concordance de modèle d'image peut être utilisée en substitution à des techniques de seuil, ou en combinaison avec elles. C'est un modèle de la particularité à extraire qui est utilisé, au lieu de l'intensité d'image, pour identifier les emplacements où les particularités se trouvent. Un exemple simple de ce procédé consiste à corréler le modèle de particularité avec l'image afin de produire une image de corrélation. L'image de corrélation est traitée par effet de seuil afin d'identifier des particularités, en utilisant un seuil de niveau de corrélation au lieu d'un seuil de niveau d'intensité. Des bords de la particularité dans l'image sont ensuite détectés en utilisant des techniques de mises en concordance de configurations. Des techniques de mise en concordance de configurations sont par exemple connues par le document de R. Haralick et al. Computer and Robot Vision, c'est-à-dire Informatique et vision robotique, Vol. II, Addison Wesley (ISBN 0-201-56943- 4) dont le contenu est incorporé ici par cette référence. Des programmes de logiciels de concordance de configurations sont commercialisés dans les Matrox Imaging Libraries, ou Bibliothèques d'imagerie de Matrox, de Matrox Limited, et dans le logiciel PatMax de la Cognex Corporation. Il est possible aussi d'utiliser une mise en concordance synthétique de modèles dans laquelle le modèle n'est pas un modèle d'image physique mais est au contraire constitué de configurations géométriques simples, par exemple des rectangles, des cercles, des anneaux, des lignes, qui peuvent se combiner pour former un modèle idéalisé, synthétique, de la particularité à mettre en concordance. Un exemple d'un modèle synthétique peut être un tore construit à l'aide d'un anneau sombre et d'un cercle brillant plus petit. La mise en concordance avec le modèle comprendrait trois étapes dans cet exemple : Trouver tous les "anneaux sombres" de l'image ; trouver tous les "cercles brillants" ; 3 trouver tous les "cercles brillants" à l'intérieur des "anneaux sombres". Selon ce procédé, une plage complète de particularités semblables à des tores peut être extraite sans qu'il soit nécessaire de connaître la relation exacte entre les parties claire et sombre de la particularité, en sachant seulement que la partie claire est à l'intérieur de la partie sombre. Les Figures 19A à 19G illustrent une extraction de particularités par mise en concordance avec le modèle, d'une manière cohérente avec la présente invention. A la Figure 19A, une image 1900 d'échelle des gris contient un domaine de particularités de contact comme des particularités 1905. Une particularité est sélectionnée comme modèle, la particularité 1910 par exemple. A la Figure 18B, une vue tridimensionnelle de l'image en 1915 représente le champ de particularités, leurs intensités de pixels étant représentées dans la troisième dimension. La Figure 19C représente un champ de particularités qui inclut une particularité 1920 à contact incomplet, ainsi qu'une particularité modèle 1925 superposée, pour corrélation. La Figure 19D est une vue de l'image de la Figure 19C prise le long de la ligne 19D-19D, représentant une corrélation de chaque particularité avec la particularité modèle 1925. Les pointes de corrélation 1930 et 1935 représentent une corrélation > 0,9. La pointe 1940 de corrélation ne montre qu'une corrélation partielle entre la particularité modèle 1925 et la particularité 1920 de contact incomplet. La Figure 19E est une image qui représente les centres de particularités pour lesquelles la corrélation avec la particularité modèle 1925 est supérieure à 0,9, comme les particularités 1945 et 1950. La zone marquée par une ligne 1955 en traits interrompus correspond à l'emplacement de la particularité 1920 de contact partiel, mais la particularité 1920 n'est pas représentée à la Figure 19E parce que sa corrélation avec la particularité modèle 1925 est inférieure à 0,9 et qu'elle est donc identifiée comme un défaut probable. La Figure 19F représente les bords des particularités de la Figure 19E, par exemple après application d'une différentiation ou d'une autre technique d'amélioration de bords pour révéler des bords de particularités. Par exemple, un filtre de différentiation d'image ou, en d'autres termes, d'amélioration de bords peut être utilisé pour accentuer des bords dans une image. Des particularités peuvent ensuite être extraites en déterminant les maxima et les minima locaux à partir de l'image différenciée. Des limites enfermées par ces contours de maxima et de minima sont les limites de la particularité concernée et peuvent être utilisées pour construire la liste de particularités. La Figure 19G représente un processus d'extraction de particularités à partir de l'image d'origine, par exemple l'image de la Figure 19A, en utilisant l'information de centres de la Figure 19E et l'information de bords de particularités de la Figure 19F. En connaissant le centre 1960 et le bord 1965 d'une particularité, un groupage de pixels 1970 provenant de l'image de la Figure 19A, qui sont à l'intérieur de la limite du bord 1965 et sont centrés en 1960, est pris comme définissant la particularité. Le processus d'extraction de la Figure 19G est répété pour chaque particularité détectée afin de préparer un tableau ou une liste de particularités pour comparaison. Les listes peuvent être sensiblement semblables à celle qui est représentée, par exemple, à la Figure 18H. Des techniques décrites ici se sont révélées adaptées à une automatisation de la détection de défauts dans des champs d'orifices métallisés remplis de tungstène dans un processus à 0,25 um sur une tranche semi-conductrice. Puisque la configuration est répétitive, l'oeil humain peut très facilement détecter des orifices métallisés manquants ou partiels. L'automation à l'aide d'une technique de soustraction de pixels sur une telle image conduit à une image bruyante de différence en raison de différences subtiles et non significatives entre l'arrière-plan et les bords des contacts, et amène à rendre compte d'un grand nombre de défauts de nuisance. Le taux de défauts de nuisance est typiquement tellement élevé que du personnel doit visualiser presque 100% des images, ce qui rend virtuellement inefficace le processus de détection automatique de défauts qui utilise des différences de l'art antérieur à base de pixels. En revanche, des techniques de détection qui sont basées sur des particularités et sont cohérentes avec la présente invention ont été trouvées pour identifier des traversées qui sont partielles ou manquantes, comme des orifices métallisés ou des contacts, sans exiger d'intervention humaine et avec des comptes-rendus faibles ou nuls de défauts de nuisance. Des détails d'implantation additionnels de détection de défauts à base de particularités, cohérents avec la présente invention sont joints en annexes. L'annexe A est une liste de flux d'un algorithme. L'annexe B est une liste en pseudo-code utile pour détecter des contacts et orifices traversants métallisés défectueux. Certains blocs des annexes A et B peuvent être mis en application et exécutés en parallèle, ou un ordre inverse, sans modifier le résultat. Les annexes C, D, E, F et G, constituent un code de logiciel écrit en langage C++ utilisable pour mettre en application un système de détection de défauts à base de particularités, cohérent avec la présente invention. L'annexe C est un segment de programme principal pour traiter des contacts et exécuter un alignement, et elle appelle les segments de code des annexes D, E, F et G. L'annexe D est un segment de code de chargement d'une image à partir d'un disque, et de lissage de celle-ci au moyen d'une convolution avec un noyau gaussien pour réduire le bruit. L'annexe E est un segment de code qui met en application un algorithme d'alignement d'image. L'annexe F est un segment de code destiné à mettre en application un sous-programme de corrélation pour l'algorithme d'alignement d'image de l'annexe E. Le segment de code de l'annexe F pourrait être remplacé, par exemple, par un sous-programme comme le logiciel PatMax commercialisé par la Cognex Corporation. L'annexe G est un exemple d'un segment de code destiné à une extraction de particularités et une mise en concordance cohérentes avec la présente invention. Les termes utilisés ici doivent être compris selon les significations suivantes: Substrat configuré : tranche semi-conductrice ou un masque de photolithographie. Alors que des exemples de descriptions sont donnés en référence à des tranches semi-conductrices configurées, les techniques décrites peuvent également être appliquées à des particularités d'une image d'un masque de photolithographie acquise au moyen de la technologie appropriée d'imagerie, par exemple un système d'imagerie à faisceau électronique à commande appropriée de charge. Configuré : qui porte une configuration. La configuration peut représenter n'importe quoi, y compris, sans que ceci soit limitatif, des structures initiales de diffusion de puits, des contacts, des orifices métallisés, des structures de grilles en silicium polycristallin, des interconnexions locales, des interconnexions métalliques en aluminium ou en cuivre, des plans de puissance, des pastilles d'attache et des combinaisons de ceux-ci. La configuration peut également représenter des particularités comme des tranchées damascènes doubles dans des oxydes ou d'autres matières diélectriques. Des configurations peuvent également représenter une résine photosensible comme dans une image classique ou topographique de microscope à balayage électronique. Image : un réseau de pixels ou de données de pixels représentant un objet. Le réseau peut, sans que ceci soit limitatif, être un réseau bidimensionnel à pixels de dimensions et d'espacements uniformes où la dimension de pixel est inférieure aux particularités en cours d'imagerie, par exemple de 2 à 5 pixels transversalement à une particularité. L'espacement des pixels d'une image peut être non uniforme, par exemple lorsque l'espacement des pixels dans une direction est égal à de nombreuses fois l'espacement du pixel dans la direction orthogonale, comme les explorations linéaires décrites dans la demande de brevet des Etats Unis également en attente, N de série 09/012 277 (Bordereau de mandataire 65.0255P1) ou des segments d'explorations linéaires. Des images peuvent également être tridimensionnelles, par exemple des images tomographiques. Image de contraste de tension : image dans laquelle le signal d'intensité, par exemple d'intensité de pixel, est une fonction de la tension ou du potentiel électrique sur la surface de l'objet en cours d'imagerie, par exemple une tranche semiconductrice configurée ou un masque configuré de photolithographie. La fonction est idéalement linéaire, mais est généralement non linéaire. La fonction est typiquement, mais non nécessairement, monotone. Image de référence : image utilisée pour comparaison avec une image de test. Une image de référence peut être une image d'une autre microplaquette ou cellule ou bloc, soit de la même tranche, soit d'une tranche différente. Ce peut être l'image d'une microplaquette ou d'une cellule ou d'un bloc de qualité connue, par exemple une microplaquette ou cellule ou bloc dite "d'or", c'est-à-dire d'une qualité servant de norme, ou d'une qualité inconnue, par exemple si une image d'une troisième microplaquette ou cellule ou bloc doit être utilisée pour arbitrage. Son grossissement peut être le même que celui d'une image de test à laquelle elle sera comparé, ou lui être similaire, ou être quelconque. Il peut s'agir d'une image de contraste de tension ou d'un autre type d'image, par exemple une image de faisceau ionique focalisé (FIB selon les initiales du terme anglo-saxon Focussed ion beam), une image de microscope à force atomique (AFM selon les initiales du terme anglo-saxon Atomic force microscope), une image de microscope à balayage électronique (SEM selon les initiales du terme anglo-saxon Scanning electron microscope) topographique, ou une image préparée à partir d'une base de données par conception assistée par ordinateur (CAD selon les initiales du terme anglo-saxon Computer aided design). Une image de référence peut en variante être une structure de données qui contient une liste de particularités et leurs propriétés correspondantes : emplacement,dimensions, configuration, intensité, mise à la masse ou flottante, et autres propriétés comme une connectivité. Image de test : image acquise à partir d'un échantillon physique à inspecter, par exemple une tranche semi-conductrice configurée ou un masque configuré de photolithographie pour comparaison avec une image de référence. Une image de test peut être une image d'une microplaquette ou d'une cellule ou d'un bloc. Ce peut être une image à contraste de tension ou un autre type d'image comme une image de faisceau ionique focalisé (IFB), une image de microscope à force atomique (AFM) ou une image de balayage de microscope à balayage électronique (SEM) topographique. Extraire des particularités : une image, qui est un réseau de pixels ou des données de pixels, en une liste de particularités représentée comme structure de données, par exemple une liste liée. Des parasites de l'objet physique en cours d'inspection, qui sont représentés comme collections de pixels voisins dans une image, sont représentés après extraction par des propriétés du parasite. Des particularités peuvent être par exemple des contacts ou des orifices de contact ou des conducteurs et/ou d'autres structures physiques d'une tranche semiconductrice configurée. Des propriétés peuvent être, sans que ceci soit limitatif, des mesures comme le diamètre, la superficie, l'intensité et la position de la particularité représentée dans l'image, et d'autres mesures connues dans le domaine de l'analyse de particularités d'images ou blobs. Une liste non limitative d'exemples de propriétés qui peuvent être calculés est donnée par la Matrox Imaging Library Command Reference, Version 3.1, Manuel N 10368-MS- 0310, Matrox Electronic Systems Ltd. Une extraction peut employer des techniques à effet de seuil ou sans effet de seuil. Mettre en concordance des particularités : ou agencer par paires des particularités extraites d'images de test de référence. Les particularités sont mémorisées ou représentées en tant que structures de données, par exemple des listes liées, qui ne listent pas nécessairement les particularités dans le même ordre, dans la liste pour l'image de test et dans la liste pour l'image de référence. L'ordre d'extraction de particularités peut varier en fonction de divers facteurs, y compris l'erreur relative de position des étages. Des particularités des images de test et de référence ne peuvent donc pas être mises en concordance par superposition de la structure de données. Une mise en concordance est donc basée sur un emplacement physique de la particularité, par exemple un emplacement de coordonnées x, y, corrigé au besoin pour un déport d'alignement d'image, par exemple en utilisant le résultat d'un algorithme d'alignement d'image. Une mise en concordance prend en compte des particularités qui sont manquantes dans une image, soit parce qu'elles sont en dehors du champ de vision, par exemple en raison d'erreurs d'étage, soit parce qu'elles sont dues à des erreurs de traitement de tranche, c'est-à-dire à des défauts. Comparer des particularités afin d'identifier des défauts : lorsque des particularités ont été extraites, calculer une ou plusieurs propriétés de particularités dans un processus de calcul et comparer des valeurs de propriétés calculées. Des propriétés peuvent inclure, sans que ceci soit limitatif, les dimensions, la configuration, l'intensité moyenne qui est particulièrement avantageuse pour réduire le bruit dans des images à faisceau électronique limitées à un bruit de grenaille, le centre de gravité, le diamètre, la superficie et l'écart-type. Une propriété ou une combinaison de propriétés peut être comparée, et un compte-rendu de défauts est effectué si les particularités des propriétés diffèrent d'une ampleur prédéterminée. La comparaison peut être une opération numérique comme une soustraction, un rapport, une fonction plus grand que ou plus petit que, ou une autre comparaison mathématique. Combiner des propriétés peut augmenter la sensibilité de détection de défauts sans augmenter le taux de défauts de nuisance : par exemple, la somme de tous les pixels dans une particularité combine une mesure d'une superficie et d'une intensité moyenne et est particulièrement avantageuse pour détecter un défaut dont le résultat est une modification subtile de niveau de gris mais aussi, comme c'est le cas pour des contacts ou des orifices traversants, une modification de la dimension apparente de la particularité. Une autre approche consiste à calculer des statistiques sur les différences entre propriétés, par exemple une moyenne, un écart-type, et/ou une régression linéaire. Des propriétés dont les différences sont supérieures, par exemple, à deux écarts-types de la répartition de différences font l'objet d'un compte-rendu de défauts. Un tel seuil adaptatif évite de déterminer une limite fixe de sorte que le seuil est adaptatif à l'intérieur d'une plage souhaitée de signification statistique. La moyenne et les écarts-types de différences de particularités sont eux-mêmes des mesures de densité de défaut. Si une régression linéaire est utilisée, des écarts statistiques par rapport à la régression linéaire peuvent aussi être utilisés pour mesurer une densité de défauts. Niveau d'arrière-plan (enlèvement de l'arrièreplan): certaines images de contraste de tension ne présentent pas un contraste uniforme. L'absence d'uniformité peut provoquer de faux défauts si de simples algorithmes de soustraction de pixels sont utilisés sans enlever le niveau d'arrière-plan, c'est- à-dire sans le soustraire ou le normaliser. Des particularités d'une tranche semi-conductrice sont typiquement des conducteurs, par exemple des fils, des orifices métallisés ou des contacts, et la zone qui entoure ces particularités est typiquement diélectrique, par exemple en SI02. L'arrière-plan est la zone de l'image comprise entre des particularités et représente un diélectrique. Des parasites de charge non uniforme provoquent parfois un potentiel de surface légèrement différent et donc un niveau d'intensité d'arrière plan qui varie dans l'image. Enlever ou normaliser le niveau d'arrière-plan améliore la robustesse de l'extraction des particularités. Gabarit de particularités : particularité, par exemple un contact, utilisée pour aider dans une extraction de particularités. Par exemple, la théorie des filtres mis en concordance peut être utilisée pour extraire, d'une image, des particularités d'un type particulier en appliquant un filtre dont la réponse d'impulsions est la même que celle du type de particularités à extraire ou lui est semblable. Des particularités sont identifiées là où il existe, entre une particularité de l'image et le gabarit de particularité, une forte corrélation ou un maximum par différentiation dans la réponse de corrélation. Après avoir ainsi identifié une particularité comme se corrélant avec le gabarit de particularité, ses dimensions peuvent être extraites en utilisant un effet de seuil ou en calculant la dérivée seconde et en utilisant les maxima de gradients pour déterminer les dimensions. Par exemple une image d'un contact est corrélée avec une image qui contient de nombreux contacts. Les contacts sont identifiés en tant que tels en raison de la corrélation élevée avec le gabarit de particularité. Arbitrage : une comparaison peut être exécutée entre une image de référence et une image de test, de la manière exposée ci-dessus. L'image de référence peut être celle d'une microplaquette à moindre probabilité de défaut que l'image de test : exemple une microplaquette proche du centre d'une tranche peut être utilisée comme image de référence parce que sa probabilité de défauts est moindre que pour une microplaquette proche du bord d'une tranche. La microplaquette de test est dans une zone qui risque davantage de présenter des défauts. Mais il est cependant possible que la microplaquette de référence présente des défauts. Il n'est alors généralement pas possible de déterminer sans ambiguïté l'image qui est défectueuse, et il peut falloir une troisième image pour arbitrage. Un arbitrage peut être combiné avec le processus de détection de défauts ou être exécuté en tant que processus ultérieur. Dès lors qu'un défaut est détecté par comparaison entre une image de référence et une image de test, un arbitrage est exécuté par comparaison avec une troisième image, ou avec une troisième cellule dans le cas d'une comparaison de cellule à cellule dans un mode en réseau, pour déterminer si c'est l'image de référence ou l'image de test qui souffre du défaut. Dans l'image en réseau, des particularités sont extraites et comparées aux particularités correspondantes des cellules voisines de la même image. Aucun arbitrage n'est nécessaire lorsque l'image de référence est engendrée par une base de données de conception assistée par ordinateur, par exemple. Un exemple de fonctionnement en mode en réseau est illustré aux Figures 23A à 23D et à la Figure 24. Le fonctionnement en mode en réseau bénéficie de la nature répétitive de structures comme les cellules de mémoire. En mode en réseau, une structure répétitive comme une cellule de mémoire est comparée à sa voisine pour trouver des défauts. Dans l'exemple des Figures 23A à 23D, l'image de test peut être une cellule voisine, par exemple une cellule adjacente. Un fonctionnement en mode en réseau peut être mis en application de nombreuses manières, par exemple en décalant d'une cellule l'image ou en utilisant un sous-programme qui met des particularités en concordance, sur la base d'une répétition de cellules comme dans le schéma logique de la Figure 24. La Figure 23 représente un exemple d'une cellule répétitive 2305 à plusieurs particularités comme des contacts et des orifices de contact. La Figure 23B représente une image dans laquelle la cellule de la Figure 23A devrait être répétée sans erreur. Des particularités semblables provenant de cellules voisines comme les cellules 2310 et 2315 peuvent être comparées pour identifier des défauts. Il manque un contact dans la cellule 2320, comme indiqué en 2325, et ceci devrait être détecté comme défaut. La Figure 23C représente l'image de configurations de cellules de la Figure 23B qui se répètent, où un contact manque à la cellule 2320. La Figure 23D représente la même image, décalée d'une cellule vers la droite, afin de faciliter une comparaison entre la cellule 2330 et la cellule 2320. La Figure 24 est un schéma logique d'un procédé en mode en réseau pour exécuter une comparaison de cellule à cellule afin de détecter des défauts. En mode en réseau, un double comptage de défauts se produit parce que chaque cellule est impliquée dans deux comparaisons : fait, l'une avec le côté gauche et l'autre avec le côté droit. Un défaut de particularité apparaît par exemple comme particularité additionnelle dans l'une des comparaisons, et apparaît comme particularité manquante dans la comparaison suivante, l'un et l'autre pouvant faire l'objet d'un compte-rendu erroné en tant que défaut si aucun arbitrage, au sens exposé précédemment, n'est utilisé pour identifier la cellule qui présente le défaut réel. Le procédé débute à l'étape 2410. A l'étape 2420, une image de la structure répétitive en réseau est acquise, ou en variante restituée à partir de la mémoire principale ou d'une autre mémoire si elle est déjà acquise. A l'étape 2430, le bruit de l'image acquise ou restituée est réduit, par exemple par lissage. A l'étape 2440, des particularités sont extraites de l'image. A l'étape 2450, la mise en concordance de particularités de cellule à cellule est exécutée en utilisant un déport répété, égal à une cellule chaque fois. A l'étape 2460, les particularités mises en concordance sont comparées. A l'étape 2470, un arbitrage est exécuté facultativement pour éliminer un double comptage de défauts résultant du décalage de cellule effectif dans des directions alternées. A l'étape 2480, des particularités sont comparées et des comptes-rendus de défauts sont effectués. L'étape 2490 renvoie la commande à l'étape 2420 pour répéter le processus pour des images additionnelles. Le procédé se termine lorsque le traitement de toutes les image est achevé. Des systèmes d'imagerie par faisceau électronique comme le système de la Figure 2 sont commandés par un processeur à mémoire de données. Des procédés cohérents avec la présente invention peuvent être mis en oeuvre en amenant le processeur à exécuter un code d'application, c'est-à-dire un ensemble d'instructions lisibles par un ordinateur, incorporé sous une forme quelconque de produit programme informatique. Un produit programme informatique comprend un support qui est configuré pour mémoriser ou transporter un code lisible par ordinateur, ou dans lequel un code lisible par ordinateur peut être incorporé. Certains exemples de produits programmes informatiques sont des disques compacts CD-ROM, des cartes de mémoire morte, des disques souples, des bandes magnétiques, des unités de disques d'ordinateur, des serveurs sur un réseau, et des ondes porteuses. Des fonctions de comparaison décrites ici peuvent à volonté être exécutées dans le processeur d'un système d'imagerie à faisceau électronique ou dans d'autres systèmes informatiques. Les systèmes décrits ci-dessus ne le sont qu'à titre d'exemple. Un mode de réalisation cohérent avec l'invention peut être mis en application dans un système de faisceau de particules chargées qui inclut un type quelconque de système informatique ou d'environnement de programmation ou de traitement. Des procédés destinés à extraire des particularités à partir d'images ne sont pas limités aux exemples décrits ici. Tous procédés appropriés connus dans l'art peuvent être utilisés de la manière adaptée. Des techniques d'extraction, d'analyse et d'identification de particularités d'image, appelées parfois aussi dans l'art des "blobs" comme déjà précisé précédemment, utiles pour mettre en application des procédés et des appareils cohérents avec la présente invention sont bien connus, et des bibliothèques d'instructions informatiques pour la mise en application de telles techniques sont commercialisées. L'exemple d'une telle bibliothèque est la Matrox Imaging Library, c'est-à-dire la Bibliothèque d'imagerie Matrox, par exemple selon sa version 3. 1, commercialisée par Matrox Electronic Systems Ltd. et possédant une fonctionnalité décrite dans le Manuel "Command Référence", de Matrox, référence N 10368-MS-0310. En général, une extraction de particularités est utilisée pour identifier et localiser toutes les apparitions d'une particularité spécifique dans une image. Une image est explorée et seules les configurations de l'image qui sont semblables à la particularité spécifiée sont extraites. Ceci permet de séparer l'image en deux types de régions : la particularité et sans la particularité. Seules les régions à particularités doivent être traitées et analysées quant à des défauts. De plus, des propriétés des particularités, ou des propriétés comme la superficie, les dimensions, l'emplacement etc., peuvent être calculées, analysées et comparées pour trouver des défauts. Il existe de nombreuses techniques de traitement d'image qui peuvent être utilisées pour identifier des particularités dans une image de contraste de tension, par exemple un simple effet de seuil d'image, un effet de seuil adaptatif d'image, une mise en concordance de modèle d'image, une mise en concordance avec un modèle synthétique, et une amélioration de bord comme une différentiation. En général, des techniques d'extraction de particularités sont basées sur un effet de seuil de valeurs d'intensités de pixels, une détection de bord de particularités, ou des combinaisons d'effet de seuil et de détection de bord. Dans le cas d'un simple effet de seuil d'image, l'intensité d'échelle des gris de l'image est utilisée pour segmenter l'image en particularités et nonparticularités. Des régions de l'image dont l'intensité est la même, ou qui sont dans la même plage d'intensité, sont groupées entre elles en blobs . Chaque blob est ensuite pris pour représenter une particularité extraite de l'image. Tout le reste de l'image est considéré comme "arrière-plan" ou nonparticularité. Dès lors que la particularité a été extraite, les propriétés de la particularité peuvent être calculées, par exemple son emplacement et sa superficie, son intensité moyenne, sa somme d'intensité, etc. Ces propriétés peuvent être utilisées pour caractériser la particularité et peuvent être comparées aux propriétés d'autres particularités extraites. Il existe un compromis entre l'exactitude de positionnement de l'étage et l'alignement d'image. Pour mettre exactement en concordance les particularités provenant des images de test et de référence, et d'arbitrage si elle est utilisée, les images doivent en général être alignées avec une exactitude suffisante pour que l'erreur d'alignement entre des images, lorsque les images sont superposées, soit inférieure, et de préférence sensiblement inférieure, à la moitié de la distance entre particularités de l'image. Si tel n'est pas le cas, les particularités ne peuvent pas être réunies de façon fiable par paires et une apparition de certaines discordances est probable, ce qui provoque des comptes-rendus de faux défauts, c'est-à-dire des erreurs induites par le système de détection de défauts. Des techniques d'alignement à base de particularités telles qu'elles sont décrites ici relâchent en principe cette contrainte d'alignement mais peuvent néanmoins être limitées par une répétition inhérente de configurations dans des configurations d'interconnexion de circuits intégrés, ou IC. L'exactitude d'alignement requise pour un alignement à base de particularités cohérent avec l'invention est cependant moins sévère que pour une différentiation à base de pixels, où l'erreur maximale acceptable d'alignement est typiquement sensiblement inférieure, c'est-à-dire Deux solutions pratiques au problème de l'alignement peuvent être utilisées : étage exact combiné avec un alignement préalable de la zone dont - l'imagerie est effectuée, ou un étage moins onéreux et moins exact avec des algorithmes de traitement d'image pour corriger les erreurs de l'étage. Des étages exacts de chambre de vide qui utilisent des interféromètres laser en vue d'une rétroaction de position sont bien connus et sont commercialisés par des sociétés comme la Anorad Corporation de Long Island, New York. Des logiciels de traitement d'images à sous-programmes d'alignement d'images sont également commercialisés par de multiples sources, bien que certains de ces algorithmes produisent en pratique un taux inacceptable de défauts d'alignement lorsque les images sont déportées d'une ampleur importante, c'est- à-dire > 10% du champ de vision, ou si les particularités se répètent partiellement. La Cognex Corporation est un fournisseur majeur de logiciels de reconnaissance et d'alignement de configurations, par exemple des produits "PatMax" qui sont considérés comme étant robustes et fiables. Il existe cependant un certain taux résiduel d'erreur d'alignement, typiquement L'homme de l'art comprend que ces modifications ainsi que d'autres peuvent être effectuées à l'intérieur de l'esprit du cadre de l'invention définis dans les revendications. APPENDIX A Voltage-Contrast-Image Feature-Based Defect Detection Copyright 0 Schlumberger Technologies, Inc (this work is unpublished) Reference & Test Run Setup 1. Receive inspection Run parameters from VxWorks (i. e., which référence and test images to compare, flags, etc.) 2. Initialize Lens Set Alignment Parameters. Reference Acquisition 1. Load Reference (R) image from DSB/memory/disk. 2. Preprocess R Image (for alignment): IfSmooth Image Then Smooth R image for alignment (Apply Gaussian 3x3 Smooth N times). If Remove Background Then Remove Background from R (specify Max Feature Size & Min Feature Pitch). If Normalize Image Then Calculate intensity histogram of R image. Calculate mean and variance of R image (excluding High % & Low % of histogram). 3. Extract Reference Features : IfFixed Threshold Image then Threshold R Image between Binary Threshold Low & High Bina Threshold. forRef Feature Image. *Else If Adaptive Threshold Image then Adaptively Threshold R Image for Ref Feature Image (parameters TBD). *Else IfTemplate Match Image Then Template Match R Image for Ref Feature Image (Template from Setup). 4. Compute Ref Feature Image : Segment Ref Feature Image. Merge nearby blobs (within Min. Defect Gap pixels) in Ref Feature Image. Remove small blobs (smaller than a certain Min Defect Width). Compute Ref Features Properties (incl. Location, area, intensity, sum of intensity) 5. *If More Feature Properties Then Compute rest ofFeature Properties (e g., moments, principle axes) 6. Save R & Ref Feature images and Feature Properties to memory/disk. Test Acquisition 1. Load Test (T) image from memory/disk. 2. Preprocess T Image: IfSmooth Image Then Smooth T image for alignment (Apply Gaussian 3x3 Smooth N times). IfRemove Background Then *Remove Background from T (using Max Feature Size & Min Feature Pitch). If Normalize Image Then Calculate intensity histogram of T image. Calculate mean and variance of T image (excluding High % & Low % of histogram). Normalize T image (with respect to mean & variance of R image). 3. *Align R and T images: If Not DSB Aligned Then Calculate Coarse Alignment offset between R and T (search Stage Alignment Error pixels). IfCoarse AlignImage is at Adequate Then Update Lens Set Alignment Parameters with new alignment offset. Send Lens Set Alignment Parameters to VxWorks. IfCoarse Align Image is Good Then Set DSB Aligned to True. Translate T image to align with R image. **Crop R & T images (because of alignment & Image Margins. if specified). IfFine Align Image Then CalculateFine Alignment offset between R and T (search Lens Set Alignment Error pixels). Translate T image to align with R image. **Crop R & T images (because of alignment & Image Margins, if specified). else IfAdaptive Fine AJign Image Then Adaptively align T image with R image (within Lens Set Alignment Error pixels). 4. Extract Test Features: IfFixed Threshold Image then Threshold T Image between Binary Threshold Low & High Binary Threshold. for Test Feature Image. *Else IfAdaptive Threshold Image then Adaptively Threshold T Image for Test Feature Image (parameters TBD). *Else IfTemplate Match Image Then Template Match T Image for Test Feature Image (Template from Setup). 5. Compute Test Feature Image : Segment Test Feature Image. Merge nearby blobs (within Min. Defect Gap pixels) in Test Feature Image. Remove small blobs (smaller than a certain Min. Defect Width). Compute Test Features Properties (incl. Location, area, intensity, sum of intensity) 6. *If More Feature Properties Then Compute rest ofFeature Properties (e. g., moments, principle axes) 7. Match Features in R & T images: Overlay R and T Features to find Common & Missing Features Calculate Common Feature Image Exclude Common Features that touch edge ofimages Calculate Missing Feature Image Exclude Missing Features that touch edge ofimage 8. Compare R & T Feature Properties: Calculate Property Comparison statistics 9. Compute Defect Image : For each Blob's Property Comparison that meets Defect Criteria Save Feature Defect info Add to Defect Image If*Save Defect Images Then Save Defect Image to bulk memory. 10. Compute Defect Results: Find the Find N/Find All worst defects that meet the Defect Criteria. For each Defect Do IfDisplayDefectsThen Overlay defects in red on R & T (original/normalized/smoothed?) images. Draw cross-hair at center(or area/boundingbox ?) of Report N/Report All largest defects on R& T. Display overlaid R& T images side-by-side. Report the total number of blobs found, theX & Y alignment, and the Report N/Report All worst defects' found and locations (and rest of TBD defect properties). If*Save Defects Then Save Defect Results & TBD (compressed? ) images to disk Update Run Defect Report. If more T images go to Step 4. 11. *Update Run Defect Report. *12. Ifmore R images go to Step 1. 13. *Save Run DefectReport (to disk). */** Optional steps. APPENDIX B Example of Feature-Based Defects Detection AJgorithm using Simple Thresholding for FeatureExtraction Copyright 0 Schlumberger Technologies, Inc (this work is unpublished) // Begin Feature-based Defect Detection Algorithm. Find Feature Defects: If BGSubtractFlag Then Remove Background From Reference Image (Reflmage) // Initialize data. Create Reference Image Mask Create Test Image Mask // Find Contacts/Features/B lobs in Reference Image. If Not BGSubtractFlag & BGNormalizeFlag Then Remove Background From Reflmage Extract Reference Blobsfrom Reference Image: If SimpleThresholdMethod Then Binarize Reflmage using Min & Max Threshold IfAdaptiveThresholdMethod Then Binarize Reflmage usingAdaptive Threshold Else If CorrelateFeatureMethod Correlate FeatureTemplate in Reflmage Save Image as Corrélation Image Find Peaks in Correlationlmage using Template Threshold Segment Features in Reflmage using Template around Peaks in Correlationlmage Else If SyntheticFeatureMethod Find All Features in Reflmage that match SyntheticFeature Save Image as SyntheticMatchlmage Segment Features in Reflmage above SyntheticFeature Threshold in SyntheticMatchlmage Remove Small Blobs in Blob Image Merge Nearby Blobs in Blob Image Save Image as RefBloblmage Calculate Blob List from RefBloblmage Save Blob List as RefBlobList //Align Grayscale Images, if required. IfAlignGrayscalelmage Then Find Best Corrélation between Reflmage and Test/magewithin Search Area Save Translation Offsets (or Translate Testlmage) // Now find Contacts/Features/Blobs in Test Image. Extract Blobs from Test Image Save Image as TestBloblmage Save Blob List as TestBIobList //Align Blob Binary Images, if required. IfAlignBloblmage Then Find Best Binary Corrélation between RefBloblmage and TestBloblmage within Search Area Save Translation Offsets (or Translate Test Images) Else IfAlignBlobList Then Find Best Robust Alignment between Blobs in RefBlobList and TestBIobListwithin Search Area Save Translation Offsets (or Translate Test Images) // Find Ref Blobs not completely in Common Region. Mask RefBloblmage with RefMask Save Image as RefBorderBloblmage Reconstruct Blobs from Reflmage only in RefBorderBloblmage Save Image as RefBorderBloblmage Il Now find Test Blobs not completely in Common Region. Mask TestBloblmage with TestMask Save Image as TestBorderBloblmage Reconstruct Blobs from Testlmage only in TestBorderBloblmage Save Image asTestBorderBloblmage IlAdd Test Border Blobs to Ref Border Blob Image (and vice versa). Add Border Blobs from TestBorderBloblmage to RefBorderBloblmage Save Image as RefBorderBloblmage Add Border Blobs from RefBorderBloblmage to TestBorderBloblmage Save Image as TestBorderBloblmage // Nowfind only Ref Blobs completely in Common Region. Remove Blobs in RefBorderBloblmage from RefBloblmage Save Image as RefWholeBloblmage // Repeatfor Test Blobs completely in Common Region. Remove Blobs in TestBorderBloblmage from TestBloblmage Save Image as TestWholeBloblmage Il Nowfindwhich Refand Test blobs intersect (i.e., overlap) Intersect RefWholeBloblmage and translated TestWholeBloblmage. Save Image as SeedBloblmage // Find Ref Blobs in common. Reconstruct Blobs from RefBloblmage only in SeedBloblmage Save Image as RefCommonBloblmage // Nowfind RefBlobs not in common (i.e., missing). Remove Blobs in RefCommonBloblmage from RefWholeBloblmage Save Image as RefLonerBloblmage // Now repeat forTest Blobs... // Find Test Blobs in common. Reconstruct Blobs from TestBloblmage only in translated SeedBloblmage Save Image as TestCommonBloblmage // Nowfind Test Blobs not in common (i.e., missing). Remove Blobs in TestCommonBloblmage from TestWholeBloblmage Save Image as TestLonerBloblmage // Remove all Blobs that don't meet Feature Properties Criteria. // NOTE: This example uses minimum blob area as the single outlier criterion, but could use shape, maximum // size, moments, or any other appropriate set ofcriteria offeature properties or combination of properties. Il Remove small Ref Common Blobs. Remove Blobs from RefCommonBloblmage where Blobs Extract Blob List from RefCommonBloblmage Select only Blobs from Blob Listwith area ≥ MinCommonBlobArea Make Blob Image from Blob List Save Blob Image as RefCommonBloblmage // Remove small Test Common Blobs. Remove Blobs from TestCommonBloblmage where Blobs Save Blob Image as TestCommonBloblmage // Remove small Ref Loner Blobs. Remove Blobs from RefLonerBloblmage where Blobs Save Blob ListAs RefLonerBlobList Save Blob Image as RefLonerBloblmage Il Remove small Test Loner Blobs. Remove Blobs from TestLonerBloblmage where Blobs Save Blob ListAs TestLonerBlobList Save Blob Image as TestLonerBloblmage Il Now have to recalculate Common Blobs (small blobs removed). // Now find which Ref and Test blobs intersect (i.e., overlap) Intersect RefCommonBloblmage and translated TestCommonBloblmage. Save Image as SeedBloblmage // Find new Ref Blobs in common. Reconstruct Blobs from RefCommonBloblmage only in SeedBloblmage Save Image as RefCommonBloblmage Il Recalculate Ref Common Blob Statistics. Calculate Blob List from RefCommonBloblmage Save Blob List as RefCommonBlobList Il Find newTest Blobs in common. Reconstruct Blobs from TestCommonBloblmage only in translated SeedBloblmage Save Image as TestCommonBloblmage // Recalculate Test Common Blob Statistics. Calculate Blob Listfrom TestCommonBloblmage Save Blob List as TestCommonBlobList // Now match and compare Common Blobs, and then Identify Outliers. Find Blobs in Refand Test CommonBlobList that match Save Blob List as MatchedBlobList Calculate MatchedBlobListAggregate Statistics: Calculate Refand TestAverages ofArea, Mean Intensity, Sum of Intensity, etc. Calculate Refand TestVariances ofArea, Mean Intensity, Sum of Intensity, etc. For each Blob in MatchedBlobList Do Calculate Outlier Statistics for corresponding blob in RefCommonBlobList: If NormalizeStatistics Then Normalize Ref Statistics relative toAggregate Ref Averages Calculate Outlier Statistics forcorresponding blob in TestCommonBlobList Compare and calculate combined Outlier Statistics If ComputeRatios Then Compute Ratio as Outlier Statistics Else If ComputeRegression Compute Variance from Least Square Fit Line as Outlier Statistic If Outlier Statistics meets Outlier Criteria Then Mark corresponding Blob in RefCommonBlobList as Outlier Mark corresponding Blob in TestCommonBlobList as Outlier Add Blobs and Statistics to OutlierBlobList Calculate Aggregate Statistics for Outlier Blobs // Only select Outlier Blobs to be saved and retumed for analysis. If SelectOutliersOnly Then // First, select Refblobs. Select in RefCommonBlobList only blobs that are in OutlierBlobList Save Blob List as RefOutlierBlobList Reconstruct Blobs from RefCommonBlobList Save Blob Image as RefOutlierBloblmage // Do same forTest blobs. Select in TestCommon B lob List only blobs that are in OutlierBlobList Save Blob List as TestOutlierBlobList Reconstruct Blobs from TestCommonBlobList Save Blob Image as TestOutlierBloblmage Il Save Results. // Save image (s) memory or disk. If SavelmagesToDisk Then Il Prepare Ref, Test and intermediate images to be saved. Combine Ref and Test Outlier and Loner Blob images Save Image as Defectlmage // Prepare defect blob lists to be saved. Combine Ref and Test LonerBlobList Save Blob List as LonerBlobList Combine Outlier and Loner Blob Lists Save Blob List as DefectBIobList Combine DefectBlobList and Defect Statistics Save in DefectReport // Display Results. If DisplayOutliers Then Display Defect Image(s) Printout Defect Report // Done, so retum results. Retum DefectReport // End Feature-based Defect Detection Algorithm. APPENDIX C Main Program Segment Copyright # Schlumberger Technologies, Inc. (this work is unpublished) #include "gui~ip h" #include "Parameters h" #include "defines.h" void GUI~IPinterface: ProcessContacts(MillP* insituIP) { int loadRefFlag,IoadTestFlag, align2Flag, alignlFlag,align4Flag, align7Flag, alignlIFlag,align8Flag; intdoneFlag=NO; longDefects~reported; // insituIP->init(pCallingClass); SetMilPara(insituIP); loadRefFlag=insituIP->IoadIFAImage2Reference(CurrentFov); Pause4User# ; loadTestFlag = insituIP->loadIFAImage2Test(CurrentFov); Pause4User# ; if((loadRefFlag=YES)&&(loadTestFlag YES { doneFlag=NO; if (doneFlag=NO) align4Flag= insituIP->alignTestToRef 4(); Pause4UserO; if (align4Flag=YES) /rnsituIP->pause4User("align two images"); insituIP->findDefects1#; Pause4UserQ; if(insituIP->fovReport.largestDefectSize fovReport; //save better result; iinsituIP->fovReport.largestDefectSize 50)doneFlag=NO, else doneFlag=YES; if (doneFlag==NO) { align7Flag= insituIP->alignTestToRef 7(); Pause4User(); if (align7Flag==YES) lrnsituIP->pause4User("align two images"); insituIP->findDefectsl #; Pause4UserO; if(insituIP->fovReport.largestDefectSize fovReport; //save better result; if(insituIP->fovReport.largestDefectSize >50)doneFlag=NO; else doneFlag=YES; if (doneFlag==NO) { //Pause4Userfalignl 1: "); alignl IFIag = insituIP->alignTestToRef 11Q; Pause4UserO; if (align11Flag==YES) { //tnsituI]P->pause4User( align two images"); insituIP->findDefects 1 ; Pause4UserO; if(insituIP->fovReport.largestDefectSize fovReport; if(insituIP->fovReport largestDefectSize >100)doneFlag=NO; elsedoneFlag=YES; } if (doneFlag==NO) { //Pause4User("aJ ign8: "); align8Flag = insituIP->alignTestToRef 8(); Pause4UserO; if (align8Flag==YES) { /nsituIP->pause4User("align two images"); insituIP->findDefects1#; Pause4User(); if(insituIP->fovReport.largestDefectSize fovReport; ifinsitulP->fovReport.largestDefectSize >100)doneFlag=NO; else doneFlag=YES; } } if (doneFlag==NO) { a!ign2F!ag=insituIP->aIignTestToRef~2(); Pause4User# ; if (align2Flag==YES) { //insituIP->pause4User("aIign two images"); insituIP->findDefects 1#; Pause4User# ; if(insituIP->fovReport.largestDefectSize fovReport; //save better result; if(insituIP->fovReport.largestDefectSize >150)doneFlag=NO; else doneFlag=YES; } if(doneFlag=NO) { aItgnlFlag=insituIP->alignTestToRef~10; Pause4User(); if (alignlFlag==YES) //insituIP->pause4User( align two images"); insituIP->findDefects1(); Pause4User(); if(insituIP->fovReport.largestDefectSize fovReport; //save better resuit, //if(insituIP.fovReport.largestDefectSize >50)doneFlag=NO; //else doneFlag=YES; #endif /********contact stuffhere ********/ //Now do the Contact defect detection #definePIXEL DIFFERENCE MODE 0 #de6neFEATURE~RATIO~MODE ! Paus 4UserO; insituIP->fovReport.fovNo = saveRpt.fovNo; insituIP->fovReport.largestDefectSize = saveRpt.largestDefectSize; insituIP->fovReport.imageShiftX = saveRpt.imageShiftX; insituIP->fovReport.imageShiftY = saveRpt.imageShiftY; insituIP->fovReport.alingNo = saveRpt.alingNo; long IStatus= insituIP->FindContactDefects(insituIP); if(ThumbNail) insituIP->saveDefectImageO; int num~def= insituIP->ReportKLADefectList(fp Result,MaacDefects, &Defects~reported); insituIP->DeleteDefectList(); // JJUUNN add APPENDIX D Acquire/Load and Smooth Test Image Copyright # Schlumberger Technologies, Inc. (this work is unpublished) #include "Stdafx. h" #include "MilIP.h" #include #include #include #include #include #include #include #include "guijp.h" int MiIIP::IoadIFAImage2Test(long fovNumber)//enter the number represent #i.fov { fovReport.fovNo =fovNumber, charlongFileName[256], shortFileName[48]; strcpy(longFileName, testDirectory); sprintf(shortFileName, "#i.fov%d",fovNumber); strcat(longFileName, shortFileName); int IdFIresult; Ids image fovInfo; if((ldFlresult = ids image and header file load(longFileName, &fovlnfo, testImageArray)) =-1) returnNO; elseif(1dFlresult 1) { MbufPut(milTestImage,testImageArray); displayTestImageQ; elseif(ldFlresult 0) //noheader # { MbufImport(longFileName,M RAW,M LOAD,MilSystem,&milTestImage); displayTestImage# ; MbufGet(milTestImage, testImageArray); } if(1dFlresult != 0) //Ids header read; fill in fovReport Structure fovReport.fov.idNo = fovNumber; fovReport.fov.width = fovInfo width; fovReport.fov.height = fovInfo.height; fovReport.fov.mpp = fovInfo.mpp; fovReport.fov.dieToCenterX = fovInfo.db fov center x; fovReport.fov.dieToCenterY = fbvlnfb.db~fbv~center; } else//Read raw image file; haven't tested this mode... { //No Ids header read ; setdefaults in fovReport Structure fovReport.fov.idNo = fovNumber, fovReport.fov.width = ImageWidth; fovReport.fov.height = ImageHeight; fovReport.fov.mpp = 1.0; fovReport.fov.dieToCenterX = 0.0; fovReport.fov.dieToCenterY = 0.0; } // NUmTransiate(rnilTestImage, milTestImage, 10, 10, M~DEFAULT); if(ipSetup.PreProcFlag== 1) // ContrastNormalization method 2 { NormalizeImage(testImageArray, reflmageArray, ImageWidth, ImageHeight, ipSetup.ContrastLow, ipSetup.ContrastHigh, testImageArray); MbufPut(milTestImage, testImageArray); displayTestImage# ; // pause4UserO; else ifipSetup PreProcFlag = 0) // contrast normalization method 1 { int norm = SLBNormalize(testImageArray, ImageWidth, ImageHeight, ipSetup.ContrastIndex); MbufPut(milTestImage, testImageArray); displayTestImage(); // pause4User# ; // Save original (un-preprocessed ref image). MbufPut(milTestImageOriginal, testImageArray); if(ipSetup Smoothing) { SmoothImage(&milTestImage); displayTestImage# ; returnYES; APPENDIX E Image Alignment Copyright 0 Schlumberger Technologies, Inc. (this work is unpublished) // Enhanced alignment algorithm. A grid of two 1-d correlations // are done and each local maximum the true 2-d correlation, using the entire //overlapping images, is performed. // // The point with the highest correlation is taken as the correct gross //alignment. Then a narrow 2-d corr lation is performed around this point // and a fine alignment offset is determined. // // Both Id and 2d corr lations are normalized for mean and standard deviation // which the other algoriths do not completely implement. Also performing 2-d // correlations on the entire overlappling images should eliminate misaligning // to repetitive structures. // // Created: [date] by H.Gallarda // Cleaned: [date] by Jun Liu int M1IP::alignTestToRef 11(void) longnoOfMatches; int BestCorrlndex; doubleBestCorrVal; intXOffsetStep, YOffsetStep; POINT xy~shift, xy~quality-, intImageMargin; int XSampleStep, YSampleStep, SampleWidth, SampleHeight; double XPeak, YPeak; int XShiftError, YShiftError; int StageError; RECT bufl~rect, buf2~rect; pause4User("*****AJignment 11 *****"); displayDualImage( &milRefI mage, &milTestImage); pause4User("Ref image(L), Test image(R)"); XOffsetStep =4; YOffsetStep =4; ImageMargin = 0; XSampleStep = YSampleStep = 2; SampleWidth = SampleHeight = 0; SampleImage(reflmageArray, ImageWidth, ImageHeight, XSampleStep, YSampleStep, buflImageArray, &SampleWidth, &SampleHeight); SampleImage(testImageArray, ImageWidth, ImageHeight, XSampleStep, YSampleStep, buf2ImageArray, &SampleWidth, &SampleHeight); StageError = ((ipSetup.stageAccuracyInPixel + 31) / 32) * 32; XShiftErtor= StageError/XSampleStep; YShiftError= StageError/ YSampleStep; buf2~rect.left = 0 ; buf2~rect.top = 0; buf2~rect.right = SampleWidth -1; buf2~rect.bottom = SampleHeight - 1; bufl-rect.left = buf2Ject.Ieft + XShiftError, bufl~rect.top = buf2~rect.top + YShiftError; bufl~rect.right = buf2Ject.right - XShiftError; bufl~rect.bottom = buf2~rect bottom - YShiftError; noOfMatches= AlignWindow3( bufl ImageArray, buf2ImageArray, SampleWidth, SampleHeight, &bufl~rect, &buf2~rect, XOffsetStep, YOffsetStep, &xy~shift, &xy~quality, &BestCorrIndex, &BestCorrVal, &XPeak, &YPeak); xy~shift.x =(long) (XPeak * XSampleStep + 0.5); xy~shift.y = (long) (YPeak * YSampleStep + 0.5); fovReport.imageShiftX = ( double )(-(xY~ shift.x )). fovReport.imageShiftY = (double)(-(xy-shift.y)); noOfMatches = 1; if(noOfMatches > ALIGN~MAX~MATCH~NUMBER) { char str[80]; sprintf(str,"too many matches : more than %d\n",ALIGN~MAX~MATCH~NUMBER); AfxMessageBox(str); //check out the pattern match pause4User("Warning:Too many repeative structures for Alignment 11to process !"); fovReport.imageShiftX=0; fovReport.imageShiftY=0; return NO; } else if(noOfMatches ==0) pause4User("Warning:Alignment 11 failed to align the image!"); fovReport.imageShiftX =0; fovReport .imageShift Y =0; returnNO; } fovReport.alingNo = Il; //record the alignment algo retum YES; APPENDIX F Image Correlation Copyright # Schlumberger Technologies, Inc. (this work is unpublished) #include #include "math.h" #include "float.h" #include "IP AlignImage.h" int AlignWindow3( SLBImageType *Reflmage, SLBImageType *Testlmage, int ImageWidth, int ImageHeight, RECT *RefWin, RECT *TestWin, int XOffsetStep, int YOffsetStep, POINT *XYOffset, POINT *XYQuality, int *pBestCorrIndex, double *pBestCorrVal, double *pXPeak, double *pYPeak) { static doubleRefXProj[MAX~SEARCH~WIN~SIZE]; static doubleRefYProj[MAX~SEARCH~WIN~SIZE], static doubleTestXProj[MAX~SEARCH~WIN~SIZE]; static double TestYProj[MAX~SEARCH~WIN~SIZE], static doubleXCorr[MAX~CORR~SIZE]; static doubleYCorr[MAX~CORR~SIZE]; static doubleXYCorrVal; static int XMaxIndex, YMaxIndex; static doubleXMaxVal, YMaxVal; static int OffsetIndex, XOffset, YOffset; static int XOffsetMax, YOffsetMax; static int XCorrSteps, YCorrSteps; // staticint XOffsetStep, YOffsetStep; static int RefWinWidth, RefWinHeight; static int TestWinWidth, TestWinHeight; static int BestCorrlndex; static double BestCorrVal, static double CorrVal; static int XShift, YShift; static int XShiftMin, YShiftMin, XShiftMax, YShiftMax; static int BestXShift, BestYShift; static double Best2dCorrVal; static RECT MaxRefWin, MaxTestWin; // static int MaxWinWidth, MaxWinHeight; static int XOff, YOff; static int BestXOff, BestYOff; static int ImageMargin; static double Cmm, CmO, COm, COO, CpO, COp, Cpp; static double a, b, c, d, e, f, det ; static double XPeak, YPeak; ProjectWinInX(Reflmage, RefXProj, ImageWidth, ImageHeight, RefWin->left, RefWin->top, RefWin->right, RefWin->bottom); ProjectWinInY(Reflmage, RefYProj, ImageWidth, ImageHeight, RefWin->left, RefWin->top, RefWin->right, RefWin->bottom); RefWinWidth = RefWin->right - RefWin->left + 1; RefWinHeight = RefWin->bottom - RefWin->top + 1; TestWinWidth = TestWin->right - TestWin->left + 1; TestWinHeight = TestWin->bottom - TestWin->top + 1; OffsetIndex = 0; BestCorrVal = -1.0; BestCorrlndex = 0; // XOffsetStep = 5; // YOffsetStep = 5; XOffsetMax = TestWinWidth - RefWinWidth, YOffsetMax = TestWinHeight - RefWinHeight, XCorrSteps = XOffsetStep; //5; YCorrSteps = YOffsetStep; //5; ImageMargin = 0; //100; for(YOffset = 0 ; ≤ YOffsetMax; YOffset += YOffsetStep) { ProjectWinInX(TestImage, TestXProj, ImageWidth, ImageHeight, TestWin->left, TestWin->top + YOffset, TestWin->left + TestWinWidth -1, TestWin->top + YOffset +RefWinHeight - 1); for(XOffset = 0; XOffset ≤XOffsetMax; XOffset += XOffsetStep) { ProjectWinInY(TestImage, TestYProj, ImageWidth, ImageHeight, TestWin->left + XOffset, TestWin->top + YOffset, TestWin->left + XOffset + RefWinWidth - 1, TestWin->top + YOffset + RefWinHeight - 1); CorrelateArrays(RefXProj, TestXProj + XOffset, XCorr, RefWinWidth, RefWinWidth, XOffsetStep, &XMaxIndex, &XMaxVaI); CorrelateArrays(RefYProj, TestYProj, YCorr, RefWinHeight, RefWinHeight, YOffsetStep, &YMaxIndex, &YMaxVal); XShift = XMaxIndex + XOffset; YShift = YMaxIndex + YOffset; XOff= XShift + TestWin->left - RefWin->left; YOff= YShift + TestWin->top - RefWin->top; XYCorrVal = XMaxVal '' YMaxVal, //#! must use positive corrs only #if 1 // Now find largest ref and test régions to correlate to help find true match // XOff= XYOffset[OffsetIndex] x ; Il YOff= XYOffset[OffsetIndex] y; if(XOff≥ 0) MaxRefWin.left = 0 + ImageMargin; MaxTestWin.left = XOff + ImageMargin ; MaxRefWin.right = ImageWidth - 1 - XOff- ImageMargin ; MaxTestWin. right = ImageWidth - 1 - ImageMargin ; } else { MaxRefWin.left = -XOff+ ImageMargin; //négative, so negate MaxTestWin.left = 0 + ImageMargin; MaxRefWin. right = ImageWidth -1 - ImageMargin; MaxTestWin.right = ImageWidth - 1 + XOff- ImageMargin; //negate } if(YOff≥ 0) { MaxRefWin.top = 0 + ImageMargin; MaxTestWin.top = YOff+ ImageMargin ; MaxRefWin.bottom = ImageHeight - 1 - YOff- ImageMargin ; MaxTestWin.bottom = ImageHeight - 1 - ImageMargin ; } else { MaxRefWin.top -YOff+ ImageMargin ;//négative, so negate MaxTestWin. top = 0 + ImageMargin; MaxRefWin. bottom = ImageHeight - 1 - ImageMargin; MaxTestWin.bottom = ImageHeight -1 + YOff - ImageMargin; //negate } CorrelateWindows2(Reflmage, TestImage, ImageWidth, ImageHeight, &MaxRefWin, &MaxTestWin, XCorrSteps, YCorrSteps, 0,0, &CorrVal); #else CorrelateWindows2(Reflmage, TestImage, ImageWidth, ImageHeight, RefWin, TestWin, XCorrSteps, YCorrSteps, XShift, YShift, &CorrVal); // CorrVal = XYCorrVal; #endif #if // XYQuality[OffsetIndex].x = (int) (1000.0 * CorrVal + .5); // XYQuality[OffsetIndex).y = (int) (1000.0 * XYCorrVal + .5); XYCorrVal = CorrVal; //!! use 2d corrélation instead #else XYQuality[OffsetIndex].x = (int) (1000 0 * XMaxVal + 5); XYQuality[OffsetIndex].y = (int) (1000.0 * YMaxVal + .5); #endif if(CorrVal ≥ BestCorrVal) { BestCorrVal = CorrVal; // BestCorrIndex = OffsetIndex; BestXOff= XOff; BestYOff= YOff; } OffsetIndex++; //Calculate search région forbest 2d corrélation Best2dCorrVal =-1.0; Il! BestCorrVal; Best2dCorrVal =BestCorrVal; BestXShift =BestXOff - (TestWin->left - RefWin->left); BestYShift = BestYOff - (TestWin->top - RefWin->top); XShiftMin = BestXOff - XOffsetStep / 2 - (TestWin->left - RefWin->left), XShiftMax = BestXOff+ XOffsetStep / 2 - (TestWin->left - RefWin->left); YShiftMin = BestYOff - YOffsetStep / 2 - (TestWin->top - RefWin->top), YShiftMax = BestYOff + YOffsetStep / 2 - (TestWin->top - RefWin->top), // Make sure that corrélations remain within test image. if(TestWin->left + XShiftMin XShiftMin = TestWin->left; if(TestWin->top + YShiftMin YShiftMin = TestWin->top; if(TestWin->left + XShiftMax + RefWinWidth - 1 > ImageWidth - 1) XShiftMax = ImageWidth - RefWinWidth - TestWin->left; if(TestWin->top + YShiftMax + RefWinHeight - 1 > ImageHeight - 1) YShiftMax = ImageHeight - RefWinHeight - TestWin->top; for(YShift = YShiftMin; YShift ≤ YShiftMax; YShift++) for(XShift = XShiftMin, XShift ≤ XShiftMax ; XShift++){ #if // Now find largest ref and test regions to correlate to help find true match // XOff = XYOffset[OffsetIndex].x; // YOff =XYOffset[OffsetIndex].y; XOff= XShift + (TestWin->left - RefWin->left); YOff= YShift + (TestWin->top - RefWin->top); if(XOff ≥0) { MaxRefWin.left = ImageMargin; MaxTestWin.left = XOff + ImageMargin; MaxRefWin.right = ImageWidth - 1 - XOff - ImageMargin; MaxTestWin.right = ImageWidth - 1 - ImageMargin; el se { MaxRefWin.left - -XOff + ImageMargin; //négative, so negate MaxTestWin.left = ImageMargin; MaxRefWin. right = ImageWidth - 1 - ImageMargin; MaxTestWin. right =ImageWidth -1 + XOff- ImageMargin ; //negate if(YOff≥ 0) { MaxRefWin.top = 0 + ImageMargin; MaxTestWin.top = YOff+ ImageMargin; MaxRefWin.bottom = ImageHeight -1- YOff- ImageMargin ; MaxTestWin.bottom = ImageHeight -1 - ImageMargin; } else { MaxRefWin.top =-YOff+ ImageMargin ; //négative, so negate MaxTestWin.top = 0 + ImageMargin; MaxRefWin.bottom = ImageHeight - 1 - ImageMargin ; MaxTestWin. bottom = ImageHeight -1 + YOff - ImageMargin; //negate } Correlate Windows(RefImage, TestImage, ImageWidth, ImageHeight, &MaxRefWin, &MaxTestWin, 0, 0, &CorrVal); #else CorrelateWindows(RefImage, TestImage, ImageWidth, ImageHeight, RefWin, TestWin, XShift, YShift. &CorrVal); #endif if(CorrVal ≥ Best2dCorrVal) { Best2dCorrVal = CorrVal, BestXShift = XShift; BestYShift = YShift; if(BestXShift ≤ 0 Il BestYShift ≤ 0 # BestXShift+1 ≥ ImageWidth # BestYShift+1 ≥ ImageHeight) { XPeak =0.0; YPeak = 0.0; else CorrelateWindows(RefImage, TestImage, ImageWidth, ImageHeight, RefWin, TestWin, BestXShift-1, BestYShift-1, &Cmm); Correlate Windows(RefImage, TestImage, ImageWidth, ImageHeight, RefWin, TestWin, BestXShift-1, BestYShift, &CmO); CorrelateWindows(Reflmage, Testlmage, ImageWidth, ImageHeight, RefWin, TestWin, BestXShift, BestYShift-l, &COm); CorrelateWindows(Reflmage, TestImage, ImageWidth, ImageHeight, RefWin, TestWin, BestXShift, BestYShift, &C00); CorrelateWindows(RefImage, TestImage, ImageWidth, ImageHeight, RefWin, TestWin, BestXShift+1, BestYShift, &CpO); CorrelateWîndows(Refimage, TestImage, ImageWidth, ImageHeight, RefWin, TestWin, BestXShift, BestYShift+1, &COp); CorrelateWindows(Reflmage, Testlmage, ImageWidth, ImageHeight, RefWin, TestWin, BestXShift+1, BestYShift+1, &Cpp); // assume quadratic fit for corrélation surface. // Corr(x,y) =a + bx + cy + dx* *2 + exy + fy* *2 a = COO; b = (CpO - CmO) / 2.0; c = (COp - COm) / 2.0; d = (CpO + CmO - 2.0 * COO) / 2.0; f = (COp + COm - 2.0 * COO) / 2.0 ; e = (Cpp + Cmm - 2 0 * COO) / 2.0 - (d + f) / 2 0; det=4.0*d*f-e*e; XPeak = (b * (e - 2.0 * f)) / det; YPeak = (c * (e - 2.0 * d)) / det; // Check to make sure they are within one pixel. // If not, don't make adjustment... if(XPeak 1.0) XPeak =0.0; if(YPeak 1.0) YPeak = 0.0; } // Nowmodify XY Offsets XYOffset->x =BestXShift + TestWin->left - RefWin->left; XYOffset->y = BestYShift + TestWin->top - RefWin->top; XYQuality->x = (int) (1000.0 * Best2dCorrVal + .5); XYQuality->y = (int) (1000.0 * BestCorrVal +.5); *pXPeak=XYOffset->x +XPeak; *pYPeak = XYOffset->y + YPeak; *pBestCorrIndex = BestCorrIndex; *pBestCorrVal = Best2dCorrVal; retum 1; } APPENDIX G Feature Extraction and Matching Copyright 0 Schlumberger Technologies, Inc. (this work is unpublished) #include "Stdafx.h" #include "MiIIP.h" #include #include #include #include #include #include #include #include "guijp.h" //this function detects defects for segmented //features (dark contacts, for now) //largest feature ratio is retumed as defect //if above user-specified ratio. long MiIIP::FindContactDefects(MiIIP* insituIP) BOX1 RefMask, TestMask ; MbufC]ear(rnilBufl Image, OL); MbufC!ear(mitBuf2Image, OL); MbufClear(milBuf3Image, OL); MbufClear( milResultImage, OL); ipSetup.m~MinFeatureArea; ifovReport.imageShiftX ≥ 0) { RefMask.topLeftX = fovReport.imageShiftX + ipSetup.LeftMargin; RefMask.bottomRightX = ImageWidth - ipSetup.RightMargin; TestMask. topLeftX = ipSetup LeftMargin, TestMask.bottomRightX = ImageWidth - fovReport imageShiftX ipSetup RightMargin ; } else { RefMask.topLeftX = ipSetup.LeftMargin; RefMask.bottomRightX = ImageWidth + fovReport.imageShiftX ipSetup.RightMargin; TestMask.topLeftX = -fovReport.imageShiftX + ipSetup.LeftMargin; TestMask.bottomRightX = ImageWidth - ipSetup.RightMargin; if(fovReport.imageShiftY ≥ 0) { RefMask.topLeftY = fovReport.imageShiftY + ipSetup.TopMargin; RefMask.bottomRightY = ImageHeight - ipSetup.BottomMargin; TestMask.topLeftY = ipSetup.TopMargin; TestMask.bottomRightY = ImageHeight - fovReport.imageShiftY ipSetup.BottomMargin; } else { RefMask.topLeftY ipSetup.TopMargin; RefMask.bottomRightY = ImageHeight + fovReport.imageShiftY ipSetup.BottomMargin; TestMask.topLeftY - -fovReport.imageShiftY + ipSetup.TopMargin; TestMask.bottomRightY = ImageHeight - ipSetup.BottomMargin; } pause4User("Let's find thedefects accordingto the alignment"); //new contact stuff... pause4User("Binarizing Test image"); display TestImage# ; // Let's try to do adaptive BG removal in Matrox MIL . //Pyramidal smoothing ofTestImage. int PyramidLevels = 5; //!4; int MaxSmooth = 1; //!3; //User specified parametersfor contact defect detection //Thresholds forbackground removal. //Currently onlyfinds dark-on-light features. double MinBGThreshold = 100.0;//! 100. //Images are normalized around 128. doubleMaxBGThreshold = 255.0;//!255. long MinFeatureArea = 200;//300; Il!200; long MinFeatureSize = 4; //!4; longMinFeatureGap = 2; //!2; doubleFeatureCenterMaxDelta = 20.0; //!10.0 double FeatureAreaMaxRatio = 1.00;//!1.50; double FeatureMeanMaxRatio = 0.00; Il! 1.50; double FeatureSumMaxRatio = 0.00; //!1.50; long OpenIteration =0; long CloseIteration = 0; //Get ContactProcessing Parameters from file. charpars~filename[256]; charDoubleString[256]; intrc; MinBGThreshold = ipSetup.m~MinBGThreshold; MaxBGThreshold = ipSetup.m MaxBGThreshold; MinFeatureArea= ipSetup.m~MinFeatureArea; MinFeatureSize= ipSetup.m~MinFeatureSIze; MinFeatureGap = ipSetup.m~MinFeatureGap; FeatureCenterMaxDelta = ipSetup.m CenterDelta; FeatureAreaMaxRatio = ipSetup m~max~area~ratio; FeatureMeanMaxRatio = ipSetup.m~MeanMaxRatio; FeatureSumMaxRatio = ipSetup.m SumMaxRatio; OpenIteration = MinFeatureSize / 2; Closelteration = MinFeatureGap / 2; //RefImagebackground removal and binarization //Pyramidal smoothing of RefImage. PyramidAverage(milRefImage, milBuflImage, PyramidLevels, MaxSmooth); MdispSelect(IVlDisplay, milBufl Image); MimArith(milBuflImage, 2, milBuflImage, M~DIV~CONST); MdispSelect(MilDisplay, milBuflImage); MimArith(milRefImage, 2, milRefImage, M~DIV~CONST); MdispSelect(MilDisplay, milRefImage); MimArith(rnitReflmage, milBuflImage, milReflmage, M~SUB), //~ABS); MdispSelect(MilDisplay, milRefImage); MimArith(milRefImage, 128, milRefImage, M~ADD~CONST); //+M~SATURATION); MdispSelect(NEIDisplay, milRefImage); MimBinarize(milRefImage, milRefBloblmage, M~OUT~RANGE, //M~OUT~RANGE MinBGThreshold, MaxBGThreshold); MdispSelect(MilDisplay, milRefBlobImage); pause4User("Reference Blob Image"); MbufClear(milBuf3Image, OL); if(OpenIteration > 0) MimErode(milRefBlobImage, milBuf3Image, OpenIteration, M~BINARY); displayBuf3Image(); if(OpenIteration> 0) MimDilate(milBuf3Image, milRefBloblmage, Openlteration, M~BINARY); MdispSelect(MilDisplay, milRefBlobImage); pause4User("Removed small blobs"); MbufLlear(milBuf3Image, OL); if(CloseIteration > 0) NfimDilate(nùlRef8loblmage, milBuf3Image, CloseIteration, M~BINARY); displayBuf3Image(); if(CloseIteration> 0) MimErode(milBuf3Image, milRefBloblmage, Closelteration, M~BINARY); MdispSelect(MiLDisplay, milRefBloblmage); pause4User("Merged nearby blobs"); //Extract all référence blobs MdispSelect(MilDisplay, milRefBlobImage); MblobCalculate(milRefBlobImage, milReflmage, MilRefFeatureList, MilRefBlobResult); longNumRefBlobs; MblobGetNumber(MilRefBlobResult, &NumRefBlobs); fovReport.largestDefectSize =NumRefBlobs; //Now do same for TestImage //TestImage background removal, contrast (re)normalization and binarization //Pyramidal smoothing of Reflmage. PyramidAverage(rnilTestImage, milBuflImage, PyramidLevels, MaxSmooth); MdispSelect(MilDisplay, milBufl Image); MimArith(milBuflImage, 2, milBuflImage, M~DIV~CONST); MdispSelect(MilDisplay, milBufl Image); MimArith(milTestImage, 2,milTestImage, M~DIV~CONST); MdispSelect(MilDisplay, milTestImage); MimArith(milTestImage,milBuflImage, milTestImage,M~SUB);//~ABS); MdispSelect(MilDisplay, milTestImage); MimArith(milTestImage, 128,milTestImage,M~ADD~CONST),//+M~SATURATION); MdispSelect(MilDisplay,milTestImage); if(1 # ipSetup.PreProcFlag==1) // ContrastNormalizationmethod2 { MbufGet(milRefImage, refImageArray); MbufGet(milTestImage, testImageArray); NormalizeImage(testImageArray, refImageArray. ImageWidth, ImageHeight, ipSetup.ContrastLow, ipSetup.ContrastHigh, testImageArray); MbufPut(milTestImage, testImageArray); displayTestImage# ; } MimBinarize(milTestImage, milTestBlobImage, M~OUT~RANGE, MinBGThreshold, MaxBGThreshold); MdispSelect(MilDisplay, milTestBlobImage); pause4User("Test Blob Image"); MbufCIear(rnilBuf3 Image, OL); if(OpenIteration > 0) MimErode(milTestBlobImage, milBuf3Image, OpenIteration, M~BINARY); displayBuf3Image# ; if(OpenIteration > 0) ImDilate(milBuf3Image, milTestBlobImage, OpenIteration, M~BINARY); MdispSelect(MilDisplay, milTestBlobImage); pause4User("Removed small blobs"); MbufCIear(milBuf3Image, OL); if(C!ose!teration > 0) NEmDilate(milTestBloblmage, milBuf3Image, Closelteration, M~BINARY); displayBuf3Image# ; if(CloseIteration> 0) MimErode(milBuf3Image, milTestBlobImage, Closelteration, M~BINARY); MdispSelect(MilDisplay, milTestBloblmage); pause4User("Merged nearbyblobs"); MdispSelect(MilDisplay, milTestBlobImage); MblobCalculate(milTestBlobImage, milTestImage, MilTestFeatureList, MilTestBlobResult); //get numberof blobs to compare longNumTestBlobs; MblobGetNumber(NEITestBlobResult, &NumTestBlobs); fovReport.largestDefectSize =NumTestBlobs; //Make mask region in Reflmage not in common with TestImage. makeFrameImage(&milBuflImage, RefMask, (unsigned char)0, (unsigned char)255); //mask image stored in buf3 MdispSelect(MiDisplay, milBuflImage); MdispSelect(MilDisplay, milRefBlobImage); MbufClear(milBuf2Image, OL); MimArith(milRefBlobImage. milBuflImage, milBuflImage, M~AND); MdispSelect(MilDisplay, milBuf2Image); //Now find blobsinReflmage not COMPLETELY in common region MdispSelect(MiIDisplay, miRefBlobImage); MbufClear(milRefBorderBlobImage, OL); MblobReconstruct(milRefBlobImage, milBuf2Image, milRefBorderBlobImage, M~RECONSTRUCT~FROM~SEED, M~GRAYSCALE); MdispSelect(MilDisplay. milRefBorderBlobImage); pause4User("ReferenceBorder Blob Image"); //Now do same thing forTestImage. //Make mask region in TestImage not in common with Reflmage. makeFrameImage(&milBuflImage, TestMask, (unsigned char)O, (unsigned char)255) ; //mask image stored in buf3 MdispSelect(MilDisplay, milBufl Image); MbufClear(milBuf2Image, OL); MimArith(milTestBlobImage, milBuflImage, milBuf2Image, M~AND); MdispSelect(MilDisplay, milBuf2Image); //Now find blobs in TestImage not COMPLETELY in common region MdispSelect (MilDisplay, milTestBlobImage); MblobReconstruct(milTestBIobImage, milBuflImage, milTestBorderBlobImage, M~RECONSTRUCT~FROM~SEED,M~GRAYSCALE); MdispSelect(MilDisplay, milTestBorderBlobImage); pause4User("Test Border Blob Image"); //Now here's the part 1 missed the first time: //Add borderblobsfrom milTestBorderBlobImage to milRefBorderBlobImage (and vice versa). MbufClear(milBuflImage, OL); MdispSelect(MilDisplay, milTestBorderBlobImage); MimTransIate(milTestBorderBlobImage, milBuflImage, (1)* fovReport.imageShiftX, (1)*fovReport.imageShiftY, M~DEFAULT); MdispSelect(MilDisplay, milBufl Image); MbufClear(milBuf2Image, OL); MblobRècbnstruct(milReBlobImage, milBufl Image, mi[Buf2Image, M~RECONSTRUCT~FROM~SEED, M~GRAYSCALE); MdispSelect(MilDisplay, milBuf2Image); //Add TestImageborder blobs to milRefBorderBlobImage. IVGmArith(miIRefBorderBlobImage, milBuf2Image, milRefBorderBlobImage, M~OR); MdispSelect(MilDisplay, milRefBorderBlobImage); pause4User("Reference All-BorderBlob Image"); //Now remove ail borderblobsfrom Reflmage, leaving onlywhole interior blobs. MimArith(milRetBorderBlobImage, NULL, nlBuf2Image, M~NOT); IvfimArith(milRefBlobImage, milBuf2Image, milRefWholeBlobI mage, M~AND); MdispSelect(MilDisplay, milRefWholeBloblmage); pause4User("Reference Whole Blob Image"), //Now repeat above for TestImage. //Add border blobs from milRefBorderBlobImage to milTestBorderBlobImage (andvice versa). MdispSelect(MilDisplay, milRefBorderBlobImage); MbufClear(milBuflImage, OL); llmTranslate(milRefBorderBlobImage, milBuflImage, (-1)*fovReport.imageShiftX, (-1)*fovReport.imageShiftY, M DEFAULT); MdispSelect(MilDisplay, milBuflImage); MdispSelect(MilDisplay, milTestBloblmage); MbufClear(milBuf2Image, OL); MblobReconstruct(milTestBloblmage, milBuflImage, milBuf2Image, M~RECONSTRUCT~FROM~SEED,M~GRAYSCALE); MdispSelect(MilDisplay, milBuf2Image); //AddReflmageborderblobsto milTestBorderBlobImage. llmArith(milTestBorderBlobImage, milBuf2lmage, milTestBorderBlobImage, M~OR); MdispSelect(MilDisplay, milTestBorderBlobImage); pause4User("Test All-Border Blob Image"); //Now remove all border blobs from Reflmage, leaving only whole interior blobs. MimArith(milTestBorderBlobImage, NULL, milBuf2Image, M~NOT); MimArith(milTestBlobImage, milBuf2Image, milTestWholeBlobImage, M~AND); MdispSelect(MilDisplay, milTestWholeBloblmage); pause4User("Test Whole Blob Image"); //Now find seed image (ie where whole interior blobs intersect in ref and test images). //Translate TestWholeImage to match RefWholelmage. MbufClear(milBuflImage, OL); NEmTranslate(rnilTestWholeBloblmage, milBuflImage, (1)*fovReport.imageShiftX, (1)*fovReport.imageShiftY, M DEFAULT); MdispSelect(MilDisplay, milBuflImage), //Find where blobs match (ie intersect) => SeedImage. MmA.rith(milRefWholeBloblmage, milBufl Image, milSeedBloblmage, M~AND); MdispSelect(MilDisplay, milSeedBloblmage); pause4User("Seed Blob Image"), //Reconstruct only common blobs in ref that match in test. MbufClear(milReommonBlobImage, OL); MblobReconstruct(milRefBlobImage, milSeedBlobImage, milRefCommonBlobImage, M~RECONSTRUCT~FROM~SEED,M~GRAYSCALE), MdispSelect(MilDisplay, milRefCommonBlobImage); pause4User("Reference Common Blob Image"); //Now remove all common blobs fromRefWholeImage, leavingonly loner blobs MimArith(milRefCommonBlobImage,NULL, milBuf2Image, M NOT); llmArith(milRefWholeBlobImage, rni[Buf2lmage, milRefLonerBlobImage, M~AND); MdispSelect(MilDisplay, milRefLonerBlobImage); pause4User("Reference Loner Blob Image"); //Do same thingfortest image. //First translate Seedlmage to matchTestWholelmage. MbufClear(milBuflImage, OL); MmTrarisiate(rnilSeedBlobImage, milBufl Image, (-I)*fovReport.imageShiftX, (-1)*fovReport.imageShiftY, M~DEFAULT); MdispSelect(MilDisplay, milBuflImage); //Reconstruct only commonblobs inref that match in test. MbufClear(milTestCommonBlobImage, OL); MblobReconstruct(milTestBlobImage, milBuflImage, milTestCommonBlobImage, M~RECONSTRUCT~FROM~SEED,M~GRAYSCALE); MdispSelect(MilDisplay, milTestCommonBlobImage); pause4User("Test Common Blob Image"); //Now remove all common blobs from RefWholeImage, leaving only loner blobs MimArith(milTestCommonBlobImage, NULL, milBuf2Image, M~NOT), MimArith{milTestWholeBlobImage, milBuf2Image, milTestLonerBlobImage, M~AND); MdispSelect(MilDisplay, milTestLonerBlobImage); pause4User("Test Loner Blob Image"); //All done ; have all segmented images: ref and test common and loner blobs //Find Reference blob (in common) list MdispSelect(MilDisplay, milRefCommonBlobImage); MblobCalculate(milRefCommonBlobImage, miIRefImage, MilRefF eatureList, MilRefCommonBlobResult); longNumRefCommonBlobs; MblobGetNumber(MilRefCommonBlobResult, &NumRefCommonBlobs); fovReport.largestDefectSize=NumRefCommonBlobs; //Removeblobs smallerthanMinFeatureArea. MbufCIear(rnitRefCommonBloblmage, OL); MblobSelect(MilRefCommonBlobResult. M~EXCLUDE, M~AREA, M~LESS, MinFeatureArea, M~NULL); MblobFill(MilRefCommonBlobResult, milRefCommonBlobImage, M~INCLUDED~BLOBS, (long)255); MdispSelect(MilDisplay,milRefCommonBlobImage); pause4User("ReferenceCommonBlobImage, Size-Limited"); MblobGetNumber(MilReflrommonBlobResult, &NumRefCommonBlobs); fovReport.largestDefectSize = NumRefCommonBlobs; //Find blobs in TestImage (Note: TestImage is already shifted to match Reflmage alignment) MdispSelect(MilDisplay, milTestCommonBlobImage); MblobCalculate(milTestCommonBlobImage, milTestImage, MilTestFeatureList, MilTestCommonBlobResult); //get number of blobs to compare longNumTestCommonBlobs; MblobGetNumber(MilTestCommonBlobResult, &NumTestCommonBlobs); fovReport.largestDefectSize =NumTestCommonBlobs; //Remove blobs smaller than MinFeatureArea. MbufClear(milTestCommonBlobImage, OL); MblobSelect(MilTestCommonBIobResult, M~EXCLUDE, M~AREA, MJLESS, MinFeatureArea, M~NULL); MblobFill(MiITestCommonBlobResult, milTestCommonBlobImage, M~INCLUDED~BLOBS, (long) 255); MdispSelect(MilDisplay, milTestCommonBloblmage); pause4User("Test Common Blob Image, Size-Limited"); MblobGetNumber(MiITestCommonBlobResult' &NumTestCommonBlobs); fovReport.largestDefectSize = NumTestCommonBlobs; //Calculate stats for Reference loner blobs; store in RefBlobImage MdispSelect(MilDisplay, milRefLonerBlobImage); MblobCalculate(milRefLonerBIobImage, milReflmage, MilRefFeatureList, MilRefLonersBlobResult); long NumRefLonerBlobs; MblobGetNumber(1GIRefLonersBlobResult, &NumRefLonerBlobs); fovReport.largestDefectSize=NumRefLonerBlobs; //Remove blobs smallerthanMinFeatureArea. Mbuflear(milRefLonerBlobImage, OL); MblobSelect(NEIRefLonersB]obResult M~EXCLUDE, M~AREA, M~LESS, MinFeatureArea, M~NULL); MblobFill(MilRefLonersBlobResult, miRefLonerBlobImage, M~INCLUDED~BLOBS, (long) 255); MdispSelect(MilDisplay, milRefLonerBlobImage); pause4User("Reference LonerBlob Image, Size-Limited"); MblobGetNumber(MilRefLonersBlobResult, &NumRefLonerBlobs); fovReport.largestDefectSize =NumRefLonerBlobs; //Calculate stats for Test loner blobs; store in TestBlobImage MdispSelect(MilDisplay, milTestLonerBlobImage); MblobCalculate(milTestLonerBIobImage, milTestImage, MilTestFeatureList, MilTestLonersBlobResult); longNumTestLonerBlobs; MblobGetNumber(MilTestLonersBlobResult, &NumTestLonerBlobs); fovReport.largestDefectSize =NumTestLonerBlobs; //Removeblobs smallerthan MinFeatureArea. Mbuf#lear(milTestLonerBlobImage, OL); MblobSelect(MilTestLonersBlobResult, M~EXCLUDE,M~AREA,M~LESS, MinFeatureArea, M~NULL); MblobFil](NEITestLonersBlobResult, milTestLonerBlobImage, M INCLUDED BLOBS, (long) 255); MdispSelect(MiDispla, milTestLonerBlobImage); pause4User("Test Loner Blob Image, Size-Limited"); MblobGetNumber(MilTestLonersBlobResult, &NumTestLonerBlobs); fovReport.largestDefectSize =NumTestLonerBlobs; //Now have to recompute the common blobs, because small blobs have been removed independently. //TranslateTestWholeImageto match RefBlobImage. MbufCIear(milBuflImage, OL); MimTranslate(milTestCommonBlobImage, milBuflImage, (1)*fovReport.imageShiftX, (1)*fovReport.imageShiftY, M DEFAULT); MdispSelect(IVIilDisplay, milBuflImage); //Find whereblobs match (ie intersect) => SeedImage. MdispSelect(MiDisplay, milSeedBlobImage); MimArith(milRefCommonBlobImage, milBuflImage, milSeedBloblmage, M~AND); MdispSelect (MilDisplay, milSeedBloblmage); pause4User("New Seed Blob Image, Size-Limited"); //Reconstruct only common blobs in ref that match in new SeedBlobImage. MbufCIear(milRefCommonBlobImage, OL); MblobReconstruct(milRefBlobImage, milSeedBloblmage, milRefCommonBlobImage, M~RECONSTRUCT~FROM~SEED,M~GRAYSCALE); MdispSelect(MilDisplay, milRefCommonBlobImage); pause4User("Reference Common Blob Image, Size-Limited"); //Calculate newstatson only minimum sized common blobs. MbIobCalculate(milRefCommonBlobImage, milreflmage, MilRefF eatureList, MilRefCommonBlobResult); MblobGetNumber(MilRefCommonBlobResult,&NumRefCommonBlobs); fovReport.largestDefectSize=NumRefCommonBlobs; //FirsttranslateSeedImagetomatchTestBlobImage. MbufClear(milBuflImage, OL); MimTranslate(milSeedBlobImage, milBuflImage, (-1 )*fovReport.imageShiftX, (-1)*fovReport.imageShiRY, M DEFAULT); MdispSelect(MilDisplay, milBuflImage); //Reconstruct only common blobs in ref that match in new SeedBloblmage. Mbuflrlear(milTestCommonBIobImage, OL); MblobReconstruct(milTestBlobImage, milBufl Image, milTestCommonBlobImage, M~RECONSTRUCT~FROM~SEED,M~GRAYSCALE); MdispSelect(MilDisplay, milTestCommonBloblmage); pause4User("Test Common Blob Image, Size-Limited"); //Calculatenewstats ononlyminimum sized common blobs. MblobCalculate(milTestCommonBlobImage, milTestImage, MilTestFeatureList, MilTestCommonBlobResult); MblobGetNumber(MilTestCommonBlobResult, &NumTestCommonBlobs); fovReport.largestDefectSize = NumTestCommonBlobs; //Now compare and printout blob stats int SelectOutlyersOnly = 1; double BlobStatMax = 0.0; CompareMatchedBlobs( milRefCommonBlobImage, MilRefCommonBlobResult, milTestCommonBloblmage, MilTestCommonBlobResult, fovReport.imageShiftX, fovReport.imageShiftY, MinFeatureArea, FeatureCenterMaxDelta, FeatureAreaMaxRatio, FeatureMeanMaxRatio, FeatureSumMaxRatio, SelectOutlyersOnly, &BlobStatMax); ifSelectOutlyersOnly) { //Display ref currently selected blobs (only outlyers ifSelectOutlyersOnly = 1). MbufClear(milRefCommonBlobImage. OL); MblobFiJl(MilRefCommonBlobResult. milRefCommonBlobImage, M~EXCLUDED~BLOBS, (long) 255); MdispSelect(MilDisplay, milRefCommonBlobImage); pausè4User("Reference OutlyerBlob Image, Size-Limited"); MblobGetNumber(MiRefCornmonBlobResult, &NumRefCommonBlobs); fovReport.largestDefectSize = NumRefCommonBlobs; //Display test currently selected blobs (only outlyers if SelectOutlyersOnly = 1). MbufClear(milTestCommonBlobImage. OL); MblobFill(MilTestCommonBIobResult, milTestCommonBloblmage, M~EXCLUDED~BLOBS, (long) 255); MdispSelect(MilDisplay, milTestCommonBloblmage); pause4User("Test OutlyerBlob Image, Size-Limited"); MblobGetNumber(MilTestCommonBlobResult, &NumTestCommonBlobs); fovReport.largestDefectSize = NumTestCommonBlobs; } //Return BlobStatMax fovReport.largestDefectSize = (BlobStatMax > 0.0) ? (long) 1000 * BlobStatMax : (long) (NumRefLonerBlobs + NumTestLonerBlobs); //Done, now display results... if(displayFlag YES) { //defect review hère; showing dual images ; toggle review of original images and defects overlay //Now let's join the ref and test loners into both images... MbufClear(milBuf2Image, OL); MimTranslate(milTestLonerBlobImage, milBuf2Image, (1)*fovReport.imageShiftX, (1)*fovReport.imageShiftY, M~DEFAULT); MimArith(milRetLonerBIobImage, milBuf2Image, milRefLonerBloblmage, M~OR); //make blobs 0/blue MdispSelect(MilDisplay, milRefLonerBlobImage); MbufClear(milTestLonerBIobImage, OL); NmTranslate(milRefLonerBlobImage, milTestLonerBlobImage, (-1)*fovReport.imageShiftX, (-1)*fovReport.imageShiftY, M~DEFAULT); MdispSelect(MilDisplay. milTestLonerBlobImage); if(1 # DefectColor) { makeDualImage(milReflmage, milTestImage, milduallmage); overlayDefectImage(miIRefImage, milRefLonerBlobImage, milBuf3Image); //Add overlays onto Reflmage fordisplay MbufClear(miBuflImage, OL); MimArith(milRefCommonBlobImage, NULL, milBufl Image, M~NOT); //makeblobs0/blue MimArith(milBuf3Image, milBuflImage, milBuf3Image, M~AND), MdispSelect(MilDisplay, milBuf3Image); //try this again... over!ayDefectImage(mitBuf3 Image, rnilRefLonerB]obImage, n-àlBuf3Image); overlayDefectImage(milTestImage, milTestLonerBlobImage, milBuf2Image); MimArith(milTestCommonBlobImage, NULL, milBuflImage, M~NOT); //make blobs 0/blue MimArith(milBuf2Image, milBuflImage, milBuf2Image, M~AND); MdispSelect(MilDisplay, milBuf2Image); //try this again... overlayDefectImage(milBuf2Image, milT estLonerBlobImage, milBuf2Image); makeDuaIImage(mi)Buf3 Image, milBuf2Image, milDualDefectImage); d ispl ayFal seC ol orImage(milDualDefectImage); pause4User("DisplayDual Image with Defects"); //Make defect image for Swati's review mode. MdispSelect(MilDisplay, milRefCommonBlobImage); MimArith(milRefCommonBlobImage, milRefLonerBlobImage, milDefectImage, M~OR); MdispSelect(MilDisplay, milDefectImage); MbufClear(milBuf2Image, OL); NEmTranslate(eTestCommonB]obImage, milBuf2Image, (1)*fovReport.imageShiftY, (1)*fovReport.imageShiftY, M~DEFAULT); MdispSelect(MilDisplay, milBuf2Image); MimArith(milDefectImage, milBuf2Image, milDefectImage, M~OR), MdispSelect(MilDisplay, milDefectImage); } else { MbufClear(milBuflImage, OL); MbufClear(milBuf3Image, OL); MbufClear(miBuf3Image, OL); MimArith(milResultImage, M~NULL, milBuf2Image, M~NOT); MimArith(miBuf2Image, milReflmage, milBuflImage, M~AND); MimTranslate(milResultImage, milBuf3Image, (-1)*fovReport.imageShiftX, (-I)*fovReport.imageShiftY, M~DEFAULT); MimArith(miBuf3Image, M~NULL, milBuf3Image, M~NOT); MimArith(milBuf3Image, milTestImage, milBuf3Image, M~AND); displayDualImage(&milBuflImage, &milBuf3Image); pause4User("defects review ; Ref(L), Test (R); defects : dark portion)"); } if(debugFlag YES) { while(l) ( displayDualImage(&milRefImageOriginal, &milTestImageOriginal); if( pause4User("defects review, Enter'C' to exit, Enterto continue")= 'c')break; MbufClear(milBufl Image, OL); MimArith(milResultImage, M~NULL, milBuf2Image, M~NOT); MimArith(milBuf2Image, milReflmageOriginal, milBuflImage, M~AND); MbufClear(milBuf3Image, OL); NFmTranslate(milResultImage, milBuf3Image, (-1)*fovReport.imageShiftX, (-I)*fovReport.imageShiftY, M DEFAULT); MimArith(milBuf3Image, M~NULL, milBuf3Image, M~NOT); MimArith(milBuf3Image, milTestImageOriginal, milBuf3Image, M~AND); displayDualImage(&milBufl Image, &milBuf3Image), break ; } return YES ; } REVENDICATIONS 1. Procédé d'inspection d'un substrat configuré, caractérisé en ce qu'il comprend les étapes consistant à: a. préparer une image de référence et une image de test (610); b. extraire des particularités à partir de l'image de référence et extraire des particularités à partir de l'image de test (620); c. mettre en concordance des particularités de l'image de référence et des particularités de l'image de test (625); et d. comparer des particularités de l'image de référence et de l'image de test afin d'identifier des défauts (630). 2. Procédé selon la revendication 1, caractérisé en ce qu'il comprend en outre l'étape consistant à: aligner l'image de test avec l'image de référence (615) avant de mettre en concordance des particularités de l'image de référence et des particularités de l'image de test. 3. Procédé selon la revendication 1, caractérisé en ce qu'il comprend en outre l'étape consistant à: enregistrer des défauts identifiés lors de la comparaison de particularités de l'image de référence et de l'image de test (635). 4. Procédé selon la revendication 1, caractérisé en ce que l'image de référence est une image de contraste de tension d'un premier substrat configuré et l'image de test est une image de contraste de tension d'un deuxième substrat. 5. Procédé selon la revendication 1, caractérisé en ce que l'image de référence est une image de contraste de tension d'une première région d'un substrat configuré et l'image de test est une image de contraste de tension d'une deuxième région du même substrat configuré. 6. Procédé selon la revendication 5, caractérisé en ce que l'image de référence est une image de cellules qui se répètent d'un substrat configuré et l'image de test est une duplication de l'image de référence, décalée d'une cellule par rapport à l'image de référence. 7. Procédé selon la revendication 1, caractérisé en ce que préparer l'image de référence et l'image de test comprend les sous-étapes consistant à lisser l'image de référence et lisser l'image de test (7610B, 9610B, 9610D). 8. Procédé selon la revendication 1, caractérisé en ce que préparer l'image de référence et l'image de test comprend les sous-étapes consistant à normaliser l'image de référence et normaliser l'image de test (7610C, 9610E). 9. Procédé selon la revendication 1, caractérisé en ce que préparer l'image de référence et l'image de test comprend les sous-étapes consistant à mémoriser l'image de référence (9610A) et mémoriser de l'image de test (9610C). 10. Procédé selon la revendication 1, caractérisé en ce qu'extraire des particularités comprend les sous-étapes consistant à: extraire des particularités à partir de l'image de référence (9620A) et ensuite extraire des particularités à partir de l'image de test (9620B). 11. Procédé selon la revendication 1, caractérisé en ce que préparer une image de référence et une image de test et extraire des particularités à partir des images comprennent les étapes consistant à: mémoriser une image de référence (9610A) et extraire des particularités à partir de l'image de référence (9620A), et mémoriser une image de test (9610C) et extraire des particularités à partir d'une image de test (9620B). 12. Procédé selon la revendication 1, caractérisé en ce que l'image de test et l'image de référence comprennent des données de pixels qui incluent une information d'emplacement et d'intensité et en ce qu'extraire des particularités à partir de l'image de référence et de l'image de test comprend les sous- étapes consistant à: appliquer un effet de seuil à l'information d'intensité pour produire une image à niveau binaire qui inclut des régions de particularités et des régions sans particularités ; utiliser l'image de niveau binaire en tant que masque pour définir comme particularités les régions de l'image de test qui correspondent aux régions de particularités de l'image de niveau binaire. 13. Procédé selon la revendication 1, caractérisé en ce que l'image de test et l'image de référence comprennent des données de pixels qui incluent une information d'emplacement et d'intensité et en ce qu'extraire des particularités à partir de l'image de référence et de l'image de test comprend les sous- étapes consistant à: comparer de façon répétitive l'image de test à une particularité modèle pour produire des données de corrélation qui représentent une corrélation de particularités de l'image de test avec l'image modèle; appliquer un effet de seuil aux données de corrélation pour identifier les emplacements de particularités à l'intérieur de l'image de test ; détecter des bords de particularités aux emplacements de particularités identifiés. 14. Procédé selon la revendication 1, caractérisé en ce que comparer des particularités de l'image de référence et de l'image de test pour identifier des défauts comprend les sous-étapes consistant à: calculer des propriétés (8630A) de particularités, comparer des propriétés (8630B) de particularités calculées, et déterminer des résultats de comparaison qui satisfont à des critères prédéterminés (8630C) de défauts. 15. Procédé selon la revendication 1, caractérisé en ce que comparer des particularités de l'image de référence et de l'image de test pour identifier des défauts comprend les sous-étapes consistant à: calculer des propriétés de particularités dans l'image de référence (10-630A); calculer des propriétés de particularités dans l'image de test (10-630A); comparer des propriétés de particularités calculées dans l'image de test à des propriétés de particularités calculées dans l'image de référence (10-630B); calculer des statistiques (10-630C) de comparaison de propriétés de particularités ; déterminer des statistiques de comparaison qui satisfont à des critères prédéterminés (10-630D) de défauts. 16. Procédé selon la revendication 1, caractérisé en ce qu'il comprend en outre un compte-rendu de statistiques (635) de propriétés de défauts. 17. Procédé selon la revendication 10, caractérisé en ce qu'extraire des particularités à partir de l'image de référence comprend les sous- étapes consistant à: calculer un niveau moyen d'arrière-plan de l'image de référence (13-9620A1), enlever de l'image de référence le niveau moy-en d'arrière-plan afin de produire une première image de référence modifiée (13-9620A2), appliquer un effet de seuil à la première image de référence modifiée pour produire une deuxième image de référence modifiée (13-9620A3), et identifier des particularités de la deuxième image de référence modifiée (13-9620A4). 18. Procédé selon la revendication 11, caractérisé en ce qu'extraire des particularités à partir de l'image de test comprend les sous-étapes consistant à: calculer un niveau moyen d'arrière-plan de l'image de test (14-9620A1), enlever de l'image de test le niveau moyen d'arrière-plan afin de produire une première image de test modifiée (14-9620A2), appliquer un effet de seuil à l'image de test modifiée pour produire une deuxième image de test modifiée (14-9620A3), et identifier des particularités de la deuxième image de test modifiée (14-9620A4). 19. Procédé selon la revendication 11, caractérisé en ce qu'extraire des particularités à partir de l'image de référence comprend les sous- étapes consistant à: mettre en concordance un gabarit de particularités dans l'image de référence (15-9620A3) et identifier des particularités de l'image de référence qui concordent avec le gabarit de particularités (15-9620A4). 20. Procédé selon la revendication 11, dans caractérisé en ce qu'extraire des particularités à partir de l'image de référence comprend les sou-s- étapes consistant à: calculer un niveau moyen d'arrière-plan de l'image de référence (15-9620A1), enlever de l'image de référence le niveau moyen d'arrière-plan afin de produire une première image de référence modifiée (15-9620A2), mettre en concordance un gabarit de particularités dans la première image de référence modifiée (15-9620A3), et identifier des particularités dans la deuxième image de référence modifiée qui concordent avec le gabarit de particularités (15-9620A4). 21. Procédé selon la revendication 11, caractérisé en ce qu'extraire des particularités à partir de l'image de test comprend les sous-étapes consistant à: mettre en concordance un gabarit de particularités dans l'image de test (16-9620B3) et identifier des particularités dans l'image de test qui concordent avec le gabarit des particularités (16-9620B4). 22. Procédé selon la revendication 11, caractérisé en ce qu'extraire des particularités à partir de l'image de test comprend les sous-étapes consistant à: calculer un niveau moyen d'arrière-plan de l'image de test (16-9620B1), enlever de l'image de test le niveau moyen d'arrière-plan afin de produire une première image de test modifiée (16-9620B2), mettre en concordance un gabarit de particularités dans la première image de test modifiée (16-9620B3), et identifier des particularités dans la deuxième image de test modifiée qui concordent avec le gabarit de particularités (16-9620B4). 23. Appareil d'inspection d'un substrat configuré caractérisé en ce qu'il comprend un système informatique ; et des instructions de commande du système informatique destinées à préparer une image de référence et une image de test (610) d'au moins un substrat configuré, extraire des particularités de l'image de référence et d'extraire des particularités de l'image de test (620), mettre en concordance des particularités de l'image de référence et les particularités de l'image de test (625); et comparer des particularités de l'image de référence et de l'image de test afin d'identifier des défauts (630). 24. Appareil selon la revendication 23, caractérisé en ce que les instructions commandent le système informatique de manière à aligner l'image de test avec l'image de référence (615) avant de mettre en concordance des particularités de l'image de référence et des particularités de l'image de test. 25. Appareil selon la revendication 23, caractérisé en ce que les instructions commandent le système informatique de manière à enregistrer des défauts identifiés lors de la comparaison de particularités de l'image de référence et de l'image de test (635). 26. Appareil selon la revendication 23, caractérisé en ce qu'il comprend en outre: un sous-système d'imagerie à faisceau électronique pour acquérir des images de contraste de tension d'un substrat configuré à utiliser comme images de test. 27. Appareil selon la revendication 23, caractérisé en ce que les instructions commandent le système informatique de manière à lisser au moins soit l'image de référence, soit l'image de test (7610B,9610B, 9610D). 28. Appareil selon la revendication 23, caractérisé en ce que les instructions commandent le système informatique de manière à normaliser au moins soit l'image de référence, soit l'image de test (7610C,9610E). 29. Appareil selon la revendication 23, caractérisé en ce que les instructions commandent le système informatique de manière à extraire en premier lieu des particularités de l'image de référence (9620A) et extraire ensuite des particularités de l'image de test(9620B). 30. Appareil selon la revendication 23, caractérisé en ce que les instructions commandent le système informatique de manière à calculer des propriétés (8630A) de particularités de l'image de référence et de l'image de test, comparer des propriétés (8630B) de particularités calculées, et déterminer des résultats de comparaison qui satisfont à des critères prédéterminés (8630C) de défauts. 31. Appareil selon la revendication 23, caractérisé en ce que les instructions commandent le système informatique de manière à calculer un niveau moyen d'arrière-plan de l'image de référence (13-9620A1), enlever de l'image de référence le niveau moyen d'arrière-plan afin de produire une première image de référence modifiée (13-9620A2), appliquer un effet de seuil à la première image de référence modifiée pour produire une deuxième image de référence modifiée (13-9620A3), et identifier des particularités de la deuxième image de référence modifiée (13-9620A4). 32. Appareil selon la revendication 23, caractérisé en ce que les instructions commandent le système informatique de manière à calculer un niveau moyen d'arrière-plan de l'image de test (14-9620A1), enlever de l'image de test le niveau moyen d'arrière-plan afin de produire une première image de test modifiée (14-9620A2), appliquer un effet de seuil à l'image de test modifiée pour produire une deuxième image de test modifiée (14-9620A3), et identifier des particularités de la deuxième image de test modifiée (14-9620A4). 33. Appareil selon la revendication 23, caractérisé en ce que les instructions commandent le système informatique de manière à extraire des particularités d'une image en mettant en concordance un gabarit de particularités dans l'image et en identifiant des particularités dans l'image qui concordent avec le gabarit de particularités. 34. Produit programme informatique comprenant un support lisible par ordinateur contenant des instructions de commande d'un système informatique caractérisé en ce que ces instructions consistent à: préparer une image de référence et une image de test (610) qui représentent des configurations d'au moins un substrat configuré, extraire des particularités de l'image de référence et des particularités de l'image de test- 620), mettre en concordance des particularités de l'image de référence et des particularités de l'image de test (625), et comparer des particularités de l'image de référence et de l'image de test afin de d'identifier des défauts (630).