FR2799027A1 - Procede de detection de defauts et moyens de memoire pour la mise en oeuvre de celui-ci - Google Patents

Procede de detection de defauts et moyens de memoire pour la mise en oeuvre de celui-ci Download PDF

Info

Publication number
FR2799027A1
FR2799027A1 FR0010125A FR0010125A FR2799027A1 FR 2799027 A1 FR2799027 A1 FR 2799027A1 FR 0010125 A FR0010125 A FR 0010125A FR 0010125 A FR0010125 A FR 0010125A FR 2799027 A1 FR2799027 A1 FR 2799027A1
Authority
FR
France
Prior art keywords
image
sep
mask
pixels
gray
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
FR0010125A
Other languages
English (en)
Inventor
Hamid K Aghajan
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Schlumberger Technologies Inc
Original Assignee
Schlumberger Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Schlumberger Technologies Inc filed Critical Schlumberger Technologies Inc
Publication of FR2799027A1 publication Critical patent/FR2799027A1/fr
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H01ELECTRIC ELEMENTS
    • H01LSEMICONDUCTOR DEVICES NOT COVERED BY CLASS H10
    • H01L22/00Testing or measuring during manufacture or treatment; Reliability measurements, i.e. testing of parts without further processing to modify the parts as such; Structural arrangements therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/0002Inspection of images, e.g. flaw detection
    • G06T7/0004Industrial image inspection
    • G06T7/001Industrial image inspection using an image reference approach
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01NINVESTIGATING OR ANALYSING MATERIALS BY DETERMINING THEIR CHEMICAL OR PHYSICAL PROPERTIES
    • G01N21/00Investigating or analysing materials by the use of optical means, i.e. using sub-millimetre waves, infrared, visible or ultraviolet light
    • G01N21/84Systems specially adapted for particular applications
    • G01N21/88Investigating the presence of flaws or contamination
    • G01N21/95Investigating the presence of flaws or contamination characterised by the material or shape of the object to be examined
    • G01N21/9501Semiconductor wafers
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01NINVESTIGATING OR ANALYSING MATERIALS BY DETERMINING THEIR CHEMICAL OR PHYSICAL PROPERTIES
    • G01N21/00Investigating or analysing materials by the use of optical means, i.e. using sub-millimetre waves, infrared, visible or ultraviolet light
    • G01N21/84Systems specially adapted for particular applications
    • G01N21/88Investigating the presence of flaws or contamination
    • G01N21/95Investigating the presence of flaws or contamination characterised by the material or shape of the object to be examined
    • G01N21/956Inspecting patterns on the surface of objects
    • G01N21/95607Inspecting patterns on the surface of objects using a comparative method
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/302Contactless testing
    • G01R31/308Contactless testing using non-ionising electromagnetic radiation, e.g. optical radiation
    • G01R31/311Contactless testing using non-ionising electromagnetic radiation, e.g. optical radiation of integrated circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20036Morphological image processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/30Subject of image; Context of image processing
    • G06T2207/30108Industrial image inspection
    • G06T2207/30148Semiconductor; IC; Wafer
    • HELECTRICITY
    • H01ELECTRIC ELEMENTS
    • H01LSEMICONDUCTOR DEVICES NOT COVERED BY CLASS H10
    • H01L22/00Testing or measuring during manufacture or treatment; Reliability measurements, i.e. testing of parts without further processing to modify the parts as such; Structural arrangements therefor
    • H01L22/10Measuring as part of the manufacturing process
    • H01L22/12Measuring as part of the manufacturing process for structural parameters, e.g. thickness, line width, refractive index, temperature, warp, bond strength, defects, optical inspection, electrical measurement of structural dimensions, metallurgic measurement of diffusions

Abstract

La présente invention concerne un procédé de détection de défauts. Il comprend les étapes consistant à : (a) acquérir (310) une première image d'un objet à inspecter et une deuxième image associée; (b) aligner (320) la première image avec la deuxième image; (c) créer (330) un premier tracé en traçant les niveaux de gris des pixels provenant de la première image en fonction des niveaux de gris des pixels correspondants provenant de la deuxième image; (d) créer (340) un deuxième tracé en filtrant le premier tracé; (e) créer (350) un masque tel que le profil du masque est défini par la configuration du deuxième tracé; et (f) utiliser (380) le masque pour détecter des défauts représentés dans la première image. Un filtrage (340) peut être exécuté en utilisant un filtre morphologique. Une extension du masque peut être ajustée (360) par l'utilisateur. L'invention concerne en outre un support lisible par informatique utilisé pour la mise en oeuvre de ce procédé.

Description

<Desc/Clms Page number 1>
Une fraction de l'exposé de ce document de brevet contient des éléments qui sont sujets à protection par la loi sur les droits d'auteur. Le propriétaire des droits d'auteur n'élève aucune objection à ce que quiconque reproduise par fac-similé le document de brevet ou l'exposé du brevet, tel qu'il apparaît dans les collections ou les archives de brevets du Patent and Trademark Office, mais se réserve par ailleurs tous droits d'auteurs, quels qu'ils soient.
La présente invention concerne de façon générale un traitement d'image numérique et, plus particulièrement, des systèmes et des procédés qui utilisent des techniques de comparaison d'images pour détecter des défauts dans un dispositif semi-conducteur.
Des techniques de comparaison d'images sont utilisées pour détecter des défauts dans une tranche semi-conductrice. Typiquement, une image de test est acquise et est ensuite comparée à une image de référence. Un algorithme de détection de défauts est ensuite utilisé pour détecter des différences ou, en d'autres termes, des variations entre les images et pour déterminer si ces variations sont des défauts réels. Dans le mode d'inspection dit à logique aléatoire, une image d'une première microplaquette est acquise et est ensuite comparée à l'image d'une deuxième microplaquette de la même tranche. Un mode d'inspection par ensembles est effectué d'une façon semblable, sauf qu'une section d'une microplaquette est comparée à une autre section, à structure identique, de la même microplaquette. Un mode d'inspection par ensembles est utilisé, par exemple, pour tester des dispositifs à structures répétitives, par exemple des cellules de mémoires. Au lieu de comparer des images provenant d'une tranche en cours de test, des défauts peuvent aussi être détectés en comparant l'image de test acquise à une image bonne connue, provenant d'une base de données.
La Figure 1 illustre un procédé de détection de défauts de l'art antérieur.
À l'étape 110, une image de test et une image de référence de la particularité de la tranche en cours d'analyse sont acquises à partir de sections différentes de la tranche en utilisant, par exemple, des techniques
<Desc/Clms Page number 2>
classiques d'imagerie par faisceau électronique. Chaque image comprend une série de pixels et chaque pixel est défini par son emplacement à l'intérieur de l'image et son intensité et son niveau de gris. L'utilisation de niveaux de gris en traitement d'images est connue dans l'art et décrite dans l'ouvrage "Digital Image Processing", c'est-à-dire Traitement d'image numérique, de R. C. Gonzales et R. E. Woods, Addison-Wesley (1992) incorporé ici par référence en totalité, par exemple pages 6 et 7.
À l'étape 120, les deux images sont ensuite alignées pixel par pixel de façon que chaque particularité de l'image de test concorde avec la particularité correspondante de l'image de référence.
À l'étape 130, une image de différence est ensuite engendrée en soustrayant les niveaux des gris des deux images. Puisque ce sont des pixels concordants à niveaux de gris identiques qui sont soustraits, l'image de différence représente des variations du niveau de gris des pixels entre l'image de référence et l'image de test.
À l'étape 140, le niveau de gris de chaque pixel contenu dans l'image de différence est mis à l'échelle, normalisé, et ensuite tracé pour former un histogramme unidimensionnel comme l'histogramme 200 de la Figure 2.
L'histogramme 200 est un tracé qui représente le nombre de pixels, contenus dans l'image de différence, qui possèdent un niveau de gris spécifique. Par exemple, l'histogramme 200 indique qu'il existe, dans l'image de différence, 20. 000 pixels dont le niveau de gris est de 50.
Un pixel provenant de l'image de test peut être différent d'un pixel correspondant de l'image de référence, même en l'absence de défauts dans les deux images. Des variations d'intensité peuvent par exemple être provoquées par des différences des structures de couches physiques, par un bruit dans l'électronique d'acquisition d'image et dans les trajets de signaux, et par un niveau variable de modulation de bruit à l'intérieur d'une image unique pour des niveaux de bruits différents. Par conséquent, des pixels présents dans l'image de différence n'indiquent pas nécessairement qu'il existe un défaut.
À l'étape 150 de la Figure 1, chaque pixel de l'image de différence est donc comparé à une fenêtre de seuil pour différencier entre des défauts
<Desc/Clms Page number 3>
réels et de faux défauts, appelés aussi "nuisances". Des pixels dont le niveau de gris est à l'extérieur de la fenêtre de seuil sont déclarés comme défauts.
À l'étape 160 de la Figure 1, si le niveau de seuil est par exemple de ~ 50, un événement de défaut est déclaré si le niveau de gris d'un pixel de l'image de différence est de 60, c'est-à-dire si les niveaux de gris des images de test de référence diffèrent de 60 unités. Pour assurer que la microplaquette est réellement défectueuse, l'événement de défaut est ensuite vérifié par un opérateur avant un rebut éventuel de la microplaquette dans un traitement ultérieur.
Trouver la valeur optimale de seuil pour une image de données de test est une tâche importante mais imprécise. La valeur de seuil doit être choisie de façon que des défauts réels soient détectés, tout en les différenciant des défauts de nuisance. Plus la valeur de seuil est étroite, plus grand est le nombre de défauts de nuisance déclarés. Des défauts de nuisance affectent de façon défavorable le débit de production parce que chaque événement de défaut doit être contrôlé et vérifié. En revanche, élargir la fenêtre de seuil réduit les événements de défaut de nuisance aux dépens d'une absence de détection de défauts réels.
C'est donc le but de la présente invention que de fournir un procédé de détection de défauts, et un support lisible par informatique, qui remédient aux difficultés exposées ci-dessus et permettent de détecter des défauts réels tout en minimisant le nombre de détections défauts de nuisance.
Ce but est atteint, selon un premier aspect de l'invention, par un procédé de détection de défauts caractérisé en ce qu'il comprend les étapes consistant à : (a) acquérir une première image d'un objet à inspecter et une deuxième image associée ; (b) aligner la première image avec la deuxième image ; (c) créer un premier tracé en traçant les niveaux de gris des pixels provenant de la première image en fonction des niveaux de gris des pixels correspondants provenant de la deuxième image ;
<Desc/Clms Page number 4>
(d) créer un deuxième tracé en filtrant le premier tracé ; (e) créer un masque tel que le profil du masque est défini par la confi- guration du deuxième tracé ; et (f) utiliser le masque pour détecter des défauts représentés dans la pre- mière image.
Un filtrage peut être exécuté en utilisant un filtre morphologique.
On peut prévoir qu'une extension du masque puisse être ajustée par l'utilisateur.
Le procédé peut comprendre en outre l'utilisation d'un filtre à moyenne mobile pour lisser le profil du masque.
La deuxième image peut être obtenue à partir d'une base de données.
Le procédé peut comprendre en outre une mémorisation des tracés résultant des étapes (c) et (d) dans un support lisible par informatique.
Selon un deuxième aspect, l'invention réalise un support lisible par informatique caractérisé en ce qu'il mémorise un programme de mise en #uvre du procédé exposé ci-dessus.
Selon un troisième aspect, l'invention réalise un support lisible par informatique, caractérisé en ce qu'il comprend : - une série d'emplacements de mémoire qui contiennent des données représentant une première image et une deuxième image qui lui est associée, lesdites première et deuxième image incluant chacune une série de pixels qui sont définis chacun par une coordonnée d'emplacement et par un niveau de gris ; et - un ensemble qui comprend une série d'emplacements de mémoire mémorisant des données définissant un masque, le masque étant créé en filtrant un tracé des niveaux de gris des pixels provenant de la première image en fonction des niveaux de gris de pixels corres- pondants provenant de la deuxième image.
Le filtrage peut être exécuté en utilisant un filtre morphologique.
Un algorithme à moyenne mobile peut être utilisé pour lisser le tracé des niveaux de gris de pixels provenant de la première image en fonction des niveaux de gris de pixels provenant de la deuxième image.
<Desc/Clms Page number 5>
Les buts, particularités et avantages de la présente invention exposés ci-dessus ainsi que d'autres ressortiront davantage de la description qui suit de modes de réalisation préférés en conjonction avec les dessins dans lesquels : - la Figure 1 représente un schéma logique d'un procédé de détection de défauts de l'art antérieur ; - la Figure 2 représente un tracé d'histogramme unidimensionnel de niveaux de gris ; - la Figure 3 représente sous forme de schéma logique les étapes d'un mode de réalisation de l'invention ; - les Figures 4 A à 4C représentent une étape d'alignement selon la présente invention ; - la Figure 5 représente un tracé bidimensionnel de dispersion conforme à la présente invention ; - les Figures 6 et 7 représentent respectivement une image de test et une image de référence, prises sur une tranche de dispositif ; - la Figure 8 représente un tracé bidimensionnel de dispersion conforme à la présente invention ; - les Figures 9A et 9B représentent le résultat de l'application d'un filtre morphologique sur le tracé bidimensionnel de dispersion de la Figure 8; - les Figures 10A à 10C représentent des profils de distances uni- dimensionnels selon la présente invention ; - la Figure 11 représente un masque conforme à la présente invention ; - la Figure 12 représente un masque superposé à un tracé bidimen- sionnel de dispersion non filtré ; - la Figure 13 représente une carte de défauts de tranche obtenue en utilisant un masque adaptatif ; - la Figure 14 représente un seuil prédéterminé superposé à un tracé bidimensionnel de dispersion non filtré ; et - la Figure 15 représente une carte de défauts de tranche obtenue en utilisant un seuil prédéterminé.
<Desc/Clms Page number 6>
La présente invention remédie aux limitations des procédés de détection de défauts de l'art antérieur en utilisant une méthode à seuil adaptatif appliquée à une paire d'images en cours d'analyse. À la différence des procédés de l'art antérieur qui utilisent un seuil prédéterminé pour toutes les paires d'images, ce procédé utilise un masque de seuil qui est adapté à chaque paire d'images. L'invention peut être utilisée dans diverses applications d'imagerie, y compris des systèmes d'inspection à faisceaux électroniques, à fond clair, à fond noir, par laser et par microscopie à force atomique, ou "AFM" selon les initiales du terme anglo-saxon du terme atomic-force microscopy.
La Figure 3 représente sous forme de schéma logique les étapes d'un mode de réalisation conforme à la présente invention.
À l'étape 310, une image de test et une image de référence, d'une structure semi-conductrice par exemple, sont acquises en utilisant des techniques classiques d'acquisition d'images. Les images peuvent aussi être acquises en utilisant un système d'acquisition par imagerie pas à pas, ou step-and-image selon le terme anglo-saxon.
À l'étape 320, les images de test et de référence sont alignées pour mettre en concordance des pixels correspondants des deux images.
Diverses techniques d'alignement peuvent être utilisées dans le cadre de la présente invention. L'étape d'alignement est nécessaire pour assurer que chaque particularité de l'image de test est comparée à une particularité équivalente de l'image de référence.
L'étape 320 est en outre illustrée aux Figures 4A à 4C. La Figure 4A représente une image de test 410 qui comprend des pixels 411 à 416.
Chaque pixel est défini par son niveau de gris et par son emplacement sur l'image. Par exemple, le pixel 413 est à l'emplacement i = 10 et j = 30, appelé emplacement (10, 30). Le niveau de gris du pixel 413 est ici de 50 à titre d'illustration. La table 1 fournit les coordonnées de l'emplacement et le niveau de gris, pour chaque pixel de l'image de test 410, tandis que la table 2 fournit la même information pour les pixels 421 à 426 de l'image de référence 420 de la Figure 4B.
<Desc/Clms Page number 7>
TABLEAU 1
Figure img00070001
<tb>
<tb> Pixel <SEP> Emplacement <SEP> (i,j) <SEP> Niveau <SEP> de <SEP> gris
<tb> 411 <SEP> (10, <SEP> 10) <SEP> 100
<tb> 412 <SEP> (10, <SEP> 20) <SEP> 150
<tb> 413 <SEP> (10, <SEP> 30) <SEP> 50
<tb> 414 <SEP> (20, <SEP> 30) <SEP> 180
<tb> 415 <SEP> (20, <SEP> 20) <SEP> 200
<tb> 416 <SEP> (20,10) <SEP> 250
<tb>
TABLEAU 2
Figure img00070002
<tb>
<tb> Pixel <SEP> Emplacement <SEP> (i,j) <SEP> Niveau <SEP> de <SEP> gris
<tb> 421 <SEP> (10, <SEP> 10) <SEP> 100
<tb> 422 <SEP> (10, <SEP> 20) <SEP> 150
<tb> 423 <SEP> (10, <SEP> 30) <SEP> 50
<tb> 424 <SEP> (20, <SEP> 30) <SEP> 150
<tb> 425 <SEP> (20, <SEP> 20) <SEP> 100
<tb> 426 <SEP> (20, <SEP> 10) <SEP> 0
<tb>
La Figure 4C illustre graphiquement l'alignement de l'image de test 410 et de l'image de référence 420. L'emplacement 431 de pixels alignés comprend les pixels 411 et 421, l'emplacement 432 de pixels alignés comprend les pixels 412 et 422, etc.
Dès lors que les images de test et de référence ont été alignées, la correspondance de pixel à pixel entre l'image de test et l'image de référence est connue.
À l'étape 330 de la Figure 3, un tracé bidimensionnel, appelé aussi "2D", de dispersion est créé en traçant, pour chaque emplacement de pixels alignés, le niveau de gris d'un pixel provenant de l'image de test en fonction du niveau de gris du pixel correspondant de l'image de référence. En utilisant comme exemple la Figure 4C, le niveau de gris du pixel 411 est tracé en fonction du niveau de gris du pixel 421, le niveau de gris du pixel 412 est tracé en fonction du niveau de gris du pixel 422, et ainsi de suite.
<Desc/Clms Page number 8>
Mettre en #uvre l'étape 330 pour les emplacements 431 à 436 fournit les données représentées au Tableau 3. Le tracé de dispersion bidimensionnel résultant 500 est représenté à la Figure 5.
TABLEAU 3
Figure img00080001
<tb>
<tb> Niveau <SEP> de <SEP> gris
<tb> Emplacement <SEP> de <SEP> Niveau <SEP> de <SEP> gris <SEP> Niveau <SEP> de <SEP> gris <SEP> Coordonnées
<tb>
Figure img00080002

pixels alignés d'image de test d'image de (!:gns r gris)
Figure img00080003
<tb>
<tb> référence
<tb> 431 <SEP> 100 <SEP> 100 <SEP> (100, <SEP> 100)
<tb> 432 <SEP> 150 <SEP> 150 <SEP> (150,150)
<tb> 433 <SEP> 50 <SEP> 50 <SEP> (50, <SEP> 50) <SEP>
<tb> 434 <SEP> 180 <SEP> 150 <SEP> (180,150)
<tb> 435 <SEP> 200 <SEP> 100 <SEP> (200,100)
<tb> 436 <SEP> 250 <SEP> 0 <SEP> (250, <SEP> 0) <SEP>
<tb>
où tgris et rgris représentent les niveaux de gris de l'image de test et de l'image de référence, respectivement.
Le tableau 3 montre que les niveaux de gris des emplacements 434, 435 et 436 de pixels alignés sont différents, ce qui indique donc la présence de défauts possibles. Les emplacements 431, 432 et 433 sont exempts de défauts parce que les niveaux de gris de l'image de test et de l'image de référence sont les mêmes auxdits emplacements. Le tracé de dispersion 500 de la Figure 5 fournit une information quant à la présence de défauts possibles.
Tous les emplacements de pixels alignés dont les niveaux de gris sont les mêmes peuvent être représentés dans le tracé de dispersion 500 par une ligne imaginaire 501. La pente de la ligne imaginaire 501 est +1 parce qu'elle représente les emplacements des pixels alignés pour lesquels le niveau de gris du pixel de l'image de test est le même que le niveau de gris du pixel correspondant de l'image de référence.
Tous les emplacements de pixels alignés pour lesquels les niveaux de gris sont différents sont éloignés de la ligne imaginaire 501. Plus un emplacement est éloigné de la ligne 501, plus l'écart entre les niveaux de
<Desc/Clms Page number 9>
gris est grand, et plus le risque d'existence d'un défaut à cet emplacement est élevé. Dans le tracé de dispersion 500, les emplacements 434, 435 et 436 ne sont pas sur la ligne imaginaire 501 et indiquent donc la présence de défauts possibles. Dans le présent exposé, l'expression (tgns, rgns), sera utilisée pour désigner les coordonnées d'un point de données du tracé bidimensionnel de dispersion, afin de les distinguer d'un emplacement du pixel d'image, dont les coordonnées sont désignées par l'expression (i, j). Par exemple, l'emplacement 435 de pixels alignés est défini par un point de données du tracé de dispersion bidimensionnel à l'emplacement (200,100).
Un pseudo code de mise en application d'un tracé bidimensionnel de dispersion par un logiciel informatique ou, en d'autres termes, un logiciel d'ordinateur est représenté ci-dessous. Dans le pseudo code, les valeurs des niveaux de gris sont tracées dans une variable d'ensemble de mémoire ("Dispersion").
/* PSEUDO CODE DE CRÉATION D'UN TRACÉ BIDIMENSIONNEL DE DISPERSION */ Acquérir Image de Référence ; Acquérir Image de Test ; Aligner Image de Test par rapport à Image de Référence ; Créer une Image 256x256 appelée Dispersion ; Initialiser Dispersion à 0 ; Faire de i = 1 à NumRows
Faire de j = 1 à NumCols pi = Référence (i,j) ;
Figure img00090001

p2 = Test(i,j) ;
Scatter(p2,pl) = 1 ; Tracer Dispersion sous forme d'image ; /* FIN DU PSEUDO CODE */
<Desc/Clms Page number 10>
Les Figures 6 à 8 résument sous forme d'images les étapes 310,320 et 330 du mode de réalisation représenté à la Figure 3. La Figure 6 représente une image de test 6 acquise classiquement à partir d'une tranche qui inclut un défaut 601. Une image de référence 700 représentée à la Figure 7 est acquise et est ensuite alignée avec l'image de test 600, cet alignement n'étant pas représenté. Le tracé de dispersion bidimensionnel 800 de la Figure 8 est créé en traçant les niveaux de gris de pixels provenant de l'image de test en fonction des niveaux de gris de pixels correspondants provenant de l'image de référence. Le tracé de dispersion peut être engendré à la main ou en utilisant un ordinateur programmé.
Les points de données du tracé de dispersion 800 sont tracés sous forme de points blancs sur un arrière-plan noir. Une ligne 801 définit les emplacements de pixels alignés où les niveaux de gris des pixels des images de test et de référence sont identiques. Par exemple, si l'image de test 600 était identique à l'image de référence 700, tous les points de données des tracés de dispersion 800 sont sur la ligne 801.
Le tracé de dispersion 800 contient une information de niveaux de gris pour tous les pixels des images de test et de référence, y compris les pixels du défaut 601. Comme exposé précédemment, plus un point de données est éloigné de la ligne 801, plus il est probable que ce point de données indique la présence d'un défaut. Le présent procédé tire profit de cette information et construit un "masque" qui peut être "superposé" à un tracé de dispersion 800 afin de différencier entre des pixels qui impliquent des défauts et des pixels indiquant une bonne qualité. Des points de données situés à l'extérieur du masque sont déclarés comme événements de défauts.
Comme indiqué à l'étape 340 de la Figure 3, un filtre de réduction du bruit est appliqué sur les points de données du tracé de dispersion 800 afin de trouver le profil ou les limites du masque. Divers filtres classiques de réduction de bruit peuvent être utilisés dans le cas de la présente invention, y compris par exemple des filtres morphologiques. Des filtres morphologiques sont connus dans l'art et sont décrits dans le document "Digital Image Processing Concepts, Algorithms, and Scientific Applications", c'est-àdire Concepts, algorithmes et applications scientifiques du traitement
<Desc/Clms Page number 11>
d'image numérique, de B. Jahne, Springer Verlag (1991), Chapitre 11, et dans l'ouvrage "Ditigal Image Processing", c'est-à-dire Traitement d'image numérique, de R. C. Gonzales et R. E. Woods, ADDISON-WESLEY (1992), Chapitre 8, qui sont l'un et l'autre incorporés ici par référence dans leur totalité. Un filtrage morphologique effectue un "compactage" et un "nettoyage" des points de données du tracé de dispersion 800 afin de définir une configuration de masque. Le tracé bidimensionnel de dispersion 950, représenté à la Figure 9A, est le résultat de l'application d'un filtre morphologique sur le tracé de dispersion 800. Le tracé 950 de dispersion contient la configuration de masque 900.
L'étape 350 de la Figure 3 consiste en une extraction de limites, c'est- à-dire le processus d'obtention des coordonnées de chaque point de données limite d'une configuration de masque. Un algorithme d'extraction de la limite de la configuration de masque 900 est le suivant :
ALGORITHME D'EXTRACTION D'UNE CONFIGURATION DE MASQUE (al) Comme représenté à la Figure 9B, créer une ligne 901 qui s'étend du coin supérieur gauche au coin inférieur droit du tracé de dispersion 950.
(a2) Créer deux ensembles de nombres pour garder un suivi de distances perpendiculaires entre la ligne 901 et un point de limite de données.
Appeler SUPÉRIEUR l'un des ensembles. L'ensemble SUPÉRIEUR est utilisé pour garder un suivi de distances perpendiculaires de points limites situés au-dessus de la ligne 901, c'est-à-dire dans la région désignée par la flèche 902. L'autre ensemble, appelé INFÉRIEUR, est utilisé pour garder un suivi de distances perpendiculaires de points limites situés au-dessous de la ligne 901 c'est-à-dire dans la région désignée par la flèche 903. Un exemple d'une distance perpendiculaire est la longueur de la ligne perpendiculaire 904 qui s'étend de la ligne
901 jusqu'à un point limite 905. Un autre exemple est la longueur de la ligne 906 qui est une ligne perpendiculaire qui s'étend de la ligne
901 au point limite 907.
(a3) Initialiser à un 0 logique tous les éléments des ensembles SUPÉRIEUR et INFÉRIEUR.
<Desc/Clms Page number 12>
(a4) Pour chaque emplacement de coordonnées (tgns, rgns) du tracé de dispersion 950, contrôler s'il existe un point de données pour les coordonnées. Si tel est le cas, poursuivre par les étapes (a5) à (a9) ; dans le cas contraire, passer à l'emplacement suivant du tracé de dispersion. Aux Figures 8, 9A et 9B, tous les points de données sont des points blancs tracés sur un arrière-plan noir, c'est-à-dire qu'un point de données ou un 1 logique est tracé comme point blanc tandis qu'un 0 logique ou une absence de point de données est tracé comme point noir. Par conséquent, les sections sombres de la Figure 9B ne contiennent aucun point de données et sont ignorées.
(a5) S'il existe un point de données pour l'emplacement du tracé de dispersion, mesurer la distance perpendiculaire Dperp à la ligne 901.
Calculer aussi l'emplacement Rprofil de ce point de données le long du profil unidimensionnel ou, en d'autres termes, "1D" de distances. Des profils unidimensionnels de distances sont décrits plus loin. Rprofil peut être calculé en utilisant l'Éq. 1.
(Éq. 1) Rprofil = (!:gris + rgris) / 2 (a6) Si les coordonnées (tgris, rgris) sont au-dessus de la ligne 901, une valeur positive est assignée à Dperp. Dans le cas contraire, Dperp est négative.
(a7) Si Dperp est supérieure à la distance perpendiculaire actuellement mémorisée dans l'élément Rprofil de l'ensemble SUPÉRIEUR, mémoriser
Dperp dans l'élément Rprofil de l'ensemble SUPÉRIEUR.
(a8) Si Dperp est inférieure à la distance perpendiculaire actuellement mémorisée dans l'élément Rprofil de l'ensemble INFÉRIEUR, mémoriser
Dperp dans l'élément Rprofil de l'ensemble INFÉRIEUR.
(a9) Continuer pour tous les points de données.
Après avoir exécuté l'algorithme d'extraction de la configuration de masque exposé ci-dessus, les ensembles SUPÉRIEUR et INFÉRIEUR contiennent les distances perpendiculaires des points limites de la configuration de masque.
Il est possible d'utiliser les distances perpendiculaires et leurs Rprofil correspondants peuvent être utilisés pour créer un profil unidimensionnel 1000 de distances représenté à la Figure 10A. La courbe 1010 est le graphe
<Desc/Clms Page number 13>
des distances perpendiculaires mémorisées dans des éléments Rprofil de l'ensemble SUPÉRIEUR tandis que la courbe 1020 est un graphe similaire pour l'ensemble INFÉRIEUR. Pour continuer la délinéation de la configuration extraite du masque, le profil 1000 de distance peut être lissé en utilisant par exemple un algorithme à moyenne mobile. Des algorithmes à moyenne mobile sont connus dans l'art et sont décrits dans l'ouvrage "Discrete-Time Signal processing", c'est-à-dire Traitement de signaux discrets dans le temps, de A. V. Oppenheim et R. W. Schafer, Prentice-Hall (1989), incorporé ici par référence dans sa totalité. Le profil 2000 de distances représenté à la Figure 10B est le résultat de l'utilisation d'un algorithme à moyenne mobile sur le profil 1000 de distances. Les courbes 1030 et 1040 sont les moyennes mobiles des courbes 1010 et 1020, respectivement.
Une image de sensibilité peut facultativement être appliquée sur la configuration extraite du masque, comme indiqué à l'étape 360 de la Figure 3, pour permettre à un utilisateur de modifier l'extension du masque. La valeur de sensibilité sélectionnée par l'utilisateur peut être utilisée pour mettre à l'échelle ou déporter la configuration extraite de masque. La courbe 1050 de la Figure 10C représente le résultat de l'addition d'une valeur de sensibilité, Svaieur, à chaque point de la courbe 1030. La courbe 1060 est un résultat obtenu en soustrayant, de chaque point de la courbe 1040, $valeur qui est la même valeur de sensibilité.
Une table à consulter, appelée simplement table dans ce qui suit, de masque, est créée en remplissant, comme indiqué à l'étape 370 de la Figure 3, tous les emplacements de coordonnées situés à l'intérieur de la limite de la configuration extraite de masque. Un algorithme de remplissage de la configuration extraite de masque est illustré en utilisant le tracé de dispersion 950 représenté à la Figure 9B.
<Desc/Clms Page number 14>
ALGORITHME DE REMPLISSAGE D'UNE ZONE DE CONFIGURATION DE
MASQUE (bl) Créer un tracé bidimensionnel de dispersion, Mdispersion. Mettre à la
Figure img00140001

valeur 1 logique tous les points de données de Dispersion- (b2) Pour chaque emplacement (tgns, rgns) du tracé de dispersion 950, calculer Rprofil en utilisant l'Éq. 1 et obtenir les distances perpen- diculaires Dperp.
(b3) Tracer Rprofil et Dperp dans le profil 2000 de distances représenté à la
Figure 10B, ou dans le profil de distances représenté à la Figure 10C si une valeur ou, en d'autres termes, une marge de sensibilité est utilisée. Si le point (Rprofil, Dperp) est inclus à l'intérieur des courbes
1030 et 1040, restaurer à la valeur 0 logique l'emplacement (tgris, rgris)
Figure img00140002

de Md,spersion. Dans le cas contraire, continuer à l'emplacement suivant (tgris, rgris) du tracé de dispersion 950.
(b4) Continuer pour tous les emplacements.
Figure img00140003
Il résulte de l'algorithme précédent un graphe de Mdispersion 1100 représentée à la Figure 11. Le tracé Mdispersion 1100 contient un masque 1110 qui peut être utilisé pour détecter des points de défauts dans un tracé bidimensionnel de dispersion. Tous les points intérieurs au masque 1110 sont à une valeur "0" logique. La Figure 12 représente le masque 1110 superposé au tracé de dispersion 800. Des points de données extérieurs au masque sont déclarés comme événements de défauts.
Un algorithme d'utilisation du masque 1110 pour détecter des défauts est le suivant :
ALGORITHME DE DÉTECTION DE DÉFAUTS EN UTILISANT UN MASQUE (cl) Pour tous les pixels d'une image de test et d'une image de référence, lire les niveaux correspondants de gris tgns et rgris, respectivement.
Figure img00140004
(c2) Si l'emplacement (tgns, rgris) du tracé Mdispersion 1100 est un 0 logique, ceci indique que l'emplacement est intérieur au masque et qu'il n'existe donc aucun événement de défaut. Continuer au pixel suivant des images de test et de référence.
<Desc/Clms Page number 15>
(c3) Si l'emplacement (tgns , rgris) du tracé Mdispersion 1100 est un 1 logique, l'emplacement est extérieur au masque et il existe un défaut. Rendre compte d'un événement de défaut.
(c4) Continuer pour toutes les paires de pixels et les images de test et de référence.
En dernière position dans la description, on fournit des exemples additionnels de modes de mise en application de la présente invention. On liste dans cette dernière partie le code source d'une fonction de langage de programmation "C" selon la présente invention. Le code serait exécuté par un ordinateur ou un processeur qui est couplé classiquement à un système d'inspection de défauts ou qui en fait partie. Évidemment, un tel système mémoriserait typiquement ce code source et les tracés, masques, etc., résultants, dans un support lisible par informatique, qui est une mémoire.
La Table 4 représente la correspondance entre les étapes de l'invention et le code source listé dans l'Annexe A.
TABLE 4
Figure img00150001
<tb>
<tb> Fonction <SEP> C <SEP> Page <SEP> Etape <SEP> Commentaire
<tb> d'Ann <SEP> A
<tb> hist2D8 <SEP> A/3 <SEP> 330 <SEP> Tracé <SEP> 2D <SEP> de <SEP> dispersion
<tb> hist2D8 <SEP> open <SEP> A/3 <SEP> 340 <SEP> Filtre <SEP> Morphologique
<tb>
Figure img00150002

hist~2D8~1 Dprofi le A/4 350 Extraits profil iD et appliquer une moyenne mobile hist 2D8~fitbound A/5 360, Marge de sensibilité et
Figure img00150003
<tb>
<tb> 370 <SEP> remplissage <SEP> de <SEP> masque
<tb>
Figure img00150004

hist~2D8~thresh A/6 380 Contrôler quant à défauts
Figure img00150005
<tb>
<tb> (effet <SEP> de <SEP> seuil)
<tb>
Les Figures 13 à 15 démontrent de façon plus détaillée l'efficacité du présent procédé. Utiliser le tracé Mdispersion 1100 pour détecter des défauts sur le tracé de dispersion 800 en utilisant les étapes (cl) à (c4) fournit une carte 1300 de défauts représentée à la Figure 13. On notera que la carte 1300 de défauts identifie correctement le défaut 601 de l'image de test 600 de la Figure 6.
<Desc/Clms Page number 16>
La Figure 14 représente sous forme de graphique l'application, sur le tracé de dispersion 800, d'un seuil prédéterminé, défini par des lignes 1401 et 1402. Des points qui ne sont pas entre les lignes 1401 et 1402 sont déclarés comme événements de défauts. La Figure 15 représente une carte de défauts qui résulte d'une application du seuil prédéterminé, sur le tracé de dispersion 800. On notera que de nombreux défauts de nuisance ont été détectés alors que le défaut 601 ne l'a pas été.
Il faut comprendre que la description donnée ci-dessus ne l'est qu'à titre d'illustration et ne doit pas être comprise comme limitative. De nombreuses variantes sont possibles sans s'écarter de l'esprit et du cadre de l'invention. La présente invention est exposée par les revendications qui suivent.
<Desc/Clms Page number 17>
Figure img00170001
/ * # ### * ##*##* Returns : 0 for success -1 for functional failure -2 if algorithm fails to find acceptable threshold
Figure img00170002

........................................................, #include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> #include <mp.h> #include <image.h> #include <SLBapi.h> #include <pgm.h> #include <morphl.h> #include <scatter2d8.h> #define SQRT2 1.414213562373 /*sqrt(2)*/ #define MIN DIST 1 /*min image difference used as the beginning of 1D profiles*/ #define MVA~SIZE 21 /*size of moving average window*/
Figure img00170003

#define HvA~RATIO 0.9 /-allowable shrinkage in ld profile wrt its =va*/ #define MIN DATA SIZE so /*min @ of data points to use curve fitting*/ #define MX SIZE (3 GRAY~SCALE BITS) /*size of the data matrix for curve fitting*/ #define HIST~MORPH~PASSES 1 /*no. of passes for open/close opérations*/
Figure img00170004

#define SIGMA~MAX 5 /*enable removal of outliers if sigma of fit is bigger than this*/ /*#define KIN THR 10 /*min thr below which no différence is called a defect*/ #define EPSILON 0.1 /*min value for det(AtA}*/ #define ALG~FITMASK 1 / détection alg using cleaned 20 hist as a mask*/ static void hist2D8(unsigned char *a. unsigned long tcols~a. unsigned char *b, unsigned long tcols~b. unsigned long ncols, unsigaed long nrows, unsigned char *table);
Figure img00170005

static void hist2De open(unsigned char 'table, - unsigned char *hist2DBitKap, long Passes): static void hist2D8 lDprofile(unsigned char *hist, OneD~dist~profile distmax, oned-dist~profile *distmin, int alg type); static void hi6t2D8~fitbound<OneD~dist~profile *distmax.
OneD-dist~profile -distmin, unsigned char *hist~area, int alg~type, int sens~adjust, long min~abs~thr):
Figure img00170006

static int hist2D8 thresh(unsigned char -a, unsigned long tcols~a, unsigned char *b, unsigned long tcols~b. unsigned char *c. unsigned long tcols~c, unsigned long ncols, unsigned long nrows,
<Desc/Clms Page number 18>
unsigned char *hist):
Figure img00180001

static OneD dist-profile distmax. distmin; /"""tfa"""1!fttf/ int Find2DHistoOutliers(OIP~byte~image pSrclmagel, OIP~byte~image *pSrcImage2, OIP~byte~image *pDstImageResult,
Figure img00180002

PIXEL diff-para PixelDiffPara, unsigned char *hist, unsigned char *hist2DBitMap, unsigned long FovID, long shorttest) int rc ;
Figure img00180003

unsigned char *aimagel, *alraage2, -aresult; /* ROI pointer */ const long Passes - = HIST MORPH PASSES; /*1-3x3 open operation, 2-SxS, etc*/ char name[128]; /* check if the ROIs have the same size */
Figure img00180004

if (<pSrcImagel->Info.RegHidth 1. pSrcImage2->Info.RegWidth) Il (pSrcImagel->Info.RegWidth 1- pDstIoageResult->Info.RegWidth) Il (pSrdmagel->Inò.RegHeight 1. pSrcImage2->Info.RegAeight) 1 (pSrcImagel->Info.RegHeight 1. pDstlmageResult->Info.RegHeightl) return -1; /* détermine ROI pointers */ aImagel pSrcImagel->BufPtr + pSrcImagel->Info.RegXO + pSrcImagel->Info.RegYO * pSrcImagel->Info.Width;
Figure img00180005

almage2 - = psrcImage2->BufPtr + pSrcImage2->Info.RegXO + pSrcImage2->Info.RegYO * pSrcImage2->Info.Width; aResult pDstImageResult->BufPtr + pDstImageResult->Info.RegXO
Figure img00180006

+ pDstlmageResult->Iafo.RegYO * pDstImageResult->Info.Width; memset(hist, 0, GRAY~LEVELS . * GRAY~LEVELS # s izeof (unsigned char)); hist2D8(aImagel, pSrcImagel->Info.Width, aImage2, pSrclmage2->Info.Width, pDstImageResult->Info.RegWidth, pDstImageResult->Info.RegHeight, hist); if (shorttest) {
Figure img00180007

sprintf(name, "../data/2Dhisto tld.pgm, FovID); printf("(iriting 2Dhisto to %s\n",name) ;fflush(stdout) ; rc = write image(name, hist, 256, 256); if (rc) ERROR RETURN(rc. "write 2Dhisto failed"); } /*filter the table (open operation) to delete scattered points*/
Figure img00180008

hist2D8 opea(hist, hist2DBitKap, Passes); /*create two 1D width-profiles for the 2dscatter and their moving averages*/ hist2D8~lDprofile(hist. 4distmax, istmin. ALG~FITMASK); /*perform thresholding based on the AlgType (1=cloud mask, 2-fit model)-/ /create a 2d scatter boundary wirth the fit oodel*/ PREFIX(hist20e fitbound) (tdistmax, tdistmin. hist,
ALG~FITMASK, PixelDiffPara.SensAdjust, PixelDiffPara.byMinAbsDifference); if (shorttest}
Figure img00180009

sprintf(aame, ../data/2Ohisto LUT tld.pgm, FovID); printfC"writing 2Dhisto LUT to is\n ,name),fflush(stdout). rc = write image(name. hist, 2S6. 256); if (rc) EPROR-RETUM (rc. write 2Dhisto LUT failed"); - }
<Desc/Clms Page number 19>
Figure img00190001

rc = PREFFX(hist2fl8 thresh)(aImagel, pSrcImagel->Info.Width, aImage2, pSrcImage2->Into.Width, aResult, pDstlmage0.esult->Info.SJidth, pDstImageResult->Info.Regttidth, pDstImageResult->Info.RegHeïght, hist); if (rc) return -1; return 0 ;
Figure img00190002

/ffi1ftrtfffrtfffff1fttf/ void hist2D8(unsigned char *a, unsignedlong tcols a, unsigned char *b, unsigned long tcols~b, unsigned long ncols, unsigned long nrows, unsigned char 'table)
Figure img00190003

/ # ...... ...*....... a,b -- TCL of ROI (images) tcols~a -- image width ncols, nrows -- ROI size table -- scatter table (a 2S6x2S6 image)
Figure img00190004

### #" ..#........##..../ unsigned long i, j; unsigned long skip~a, skip~b; unsigned long index; skip~a - tcols~a - ncols; skip~b tcols~b - ncols; for (i = 0; i < nrows; ++i) { for (j = 0; j < ncols; ++j)
Figure img00190005

index. ((*at+) GRAY~SCALE~BITS)*(<b-)-) : table!index! - = 1; a += skip~a; b += skip~.4; }
Figure img00190006

void PREFIX(hist2D8 open)(unsigned char *hi-st, unsigned char *histBitMap, long Passes) OIP~bit~image pSrcHitlaiage; /*, pDstBitimage;-/ MORPH setup pMorphSetup; pSrcBitlma,3e.BufPtr - histBitMap: pSrc8itlmage.Iafo.Hidth a GRAY LEVELS; pSrcBitlmage.Info.Height - GRAY~LEVELS; pSrc8itImage.Info.RegXO - 0: pSrcBitlmage.Info.RegYO = 0; pSrcBitImage.Info.RegWidth - GRAY~LEVELS; pSrcBitlmage.Info.RegHeight - CRAY^LEVELS; binarize8(hisC,GRAY~LEVELS, pSrcBitlmage.BufPtr, GRAY~LEVELS, GRAY~LEVELS); morph~setup1(Passes, GRAY~LEVELS. GRAY~LEVELS. tpMorphSetup) ; if (pMorphSetup tE NULL) fprintf(stderr,-morph~6etup1\n-), closel(pSrcBitImage.BufPtr, pSrcBitImage.eufPtr, /*pDstBit Image. But Ptr, #/ pSrcBitlmage . Inf o .RegWidth, pSrcBitl#age.lnfo.RegHeight, Passes, pMorphSetup):
Figure img00190007

openl(pSrcBitimage.BufPtr, pSrcBitImage.BufPtr. /#pDstBitlraage.Buf Ptr, #/
<Desc/Clms Page number 20>
pSrcBitImage.Info.RegHidth,
Figure img00200001

pSrcBitImage.Info.RegHeight,
Passes. pMorphSetup): unpack(pSrcBitImage.BufPtr, GRAY~LEVELS, GRAY~LEVELS, hist, GRAY~LEVELS):
Figure img00200002

morph~cleanupl(tpMorphSetup): void hist2De-iDprofile(unsigned char -hist.
OneD~dist-profile *distmax, OneD~dist-profile -distmin, int alg type) int i, j, index, temp; float templ=0, temp2=0;
Figure img00200003

long dist~initIGRAY~LEVELS]; for (i 0: i < GRAY LEVELS; ++il { -
Figure img00200004

distmax->buf(i] 0: distmin->buf(i] 0; distmax->mva[i] = 0; distmin->mvali] = 0; distmax->model[i) = 0; distmin->model[i] 0; dist~init(i) = 0; } for (i - 0; i < GRAY LEVELS; ++i) { for (j = 0; j < GRAY LEVELS; ++j) index -(i GRAYSCALE BITS) + j; if (hist[index])
Figure img00200005

index - = (long)((i # j) / 2. + 0.5); temp = i - j; /*if first item for this index, assign both max and minet if (!dist init[index]) { -
Figure img00200006

diet~init (index) +#; distmax->buf(index) - (int)(temp + 0.S); distmin->buf(index) . (int)(temp + 0.5); else
Figure img00200007

/#temp distance( table~bin (index] , *5degreeline) ;#/ if (temp > distmax->buf(index]) /* (ref - test) enveloppe/ distmax->buftindex] - (int)(temp + 0.5); if (temp < distmin->buf(index]) /* (test - ref) envelope*/ diatntin->buftindex] - (int)(temp + 0.5); /*need to divide distminbuf 4 distmaxbuf by sqrt2e/ for (i - 0; i < GRAY LEVELS; hui) dirtmax->buf(il - (int) (distmax->buf[ij / SQRT2 + O.S): distmin->buf(ij (int) (distmin->buf[i] / SQRT2 + O.S); } /*Remove invalid data points from the beginning and end of the profile: All points below the offset and all points above where the profile starts to shrink are set to invalid*/ /*First set the validity attribute to 1 for all points on the profile*/ for (i -0; i < GRAY LEVELS; ++i)
Figure img00200008

distmax->valid(i] * 1: distmin->valid(i) * 1: /*Find the offset, i. e. the first point w/ distance > HIN~DIST*/ i = 0;
Figure img00200009

while (abs(distmax->buf(i1) < HIN DIST 44 i < GRAY~LEVELS)
<Desc/Clms Page number 21>
distmax->valid(i++] = 0; distmax->offset - i; i - 0;
Figure img00210001

while (abs(distmin->buffil) < MIN DIST tt i < GRAY LEvELS) distmin->valid(i++) - = 0; distmin->offaet = i; /#fprintf (stderr, "distmax. offset - 8 'do dis t min. offset = d\n, distmax->offset, disimin->offst);/ if (alg~type == ALG~FITMASK) i GRAY~LEVELS -1 ;
Figure img00210002

while (abs(distmax->buf[i]) < lsIN DIST kk i > distmax->offset) di6tmax->valid[i--J - 0; distmax->endpoint i; i GRAY LEVELS -1;,
Figure img00210003

while (abs(distmia->buf[i]) < MIN~DIST 4& i > distmin->offset) distmin->validti--l - 0; distmin->endpoint - i; /*Calculate a moving avg to smooth each profile*/
Figure img00210004

index - (int) (MVJ~SIZE 2.0); for (i - 0; i < index; ++i) {
Figure img00210005

templ #* distmax->buf(i]; temp2 ± distmin->buf[i]; templ = templ / KVA~SIZE:
Figure img00210006

temp2 temp2 , / KVA~SIZE; for (i . index.- i < MVA~SIZE; ++i) { -
Figure img00210007

templ ± distmax->buf(i]; distmax->mva[i-index] - (int) (terapl MVASIZE 4 0.5); temp2 ± distmin->buf[i]; distmin->mva(i-iadexj (int)(temp2 MVA SIZE t 0.5); } templ - templ / HVA~SIZE; temp2 - temp2 / HVA SIZE; for (i - KVA~SIZE: i < GRAY LEVELS; ++i) { - -
Figure img00210008

templ ± (float)(diatmax->buf[il - distmax->buf(i-MVA~SIZE]) 1 MVA SIZE; distmax->mva(i-index] ~ (iat)(tempi + 0.5); temp2 +~ (flcat) (distmin->buf(i) - distmin->buf(i-MVA-SIZEI) / MVA~SIZE; distmin->mva(i-indexl - (int) Cteop2 + 0.5); for (i - GRAY LEVELS; i < (GRAY LEVELS+index); ++i) {
Figure img00210009

templ +~ (float)( - distmax->bufli-hiVA SIZE]) / MVA-SIZE, distmauc->mva(i-iadex] ~ (int)(templ + 0.5); temp2 ± (float)( - disteiiii->buffi-MVA SIZ1) / HVA~SIZE; distmin->mva[i-index) - (int)(temp2 t 0.5); /*replace the mva values at the first and last MVA~SIZE/2 points w/ orig buf values*/
Figure img00210010

for (i - = distmax->offaet; i < distmax->offset #' index + 1; i++) diatmax->mva(i) - distmax->buffil; for (i - distmax->endpoint - index; i < distmax->endpoint + 1; i++) diatmax->mva(i) - a distnax->buf [il ; for (i - distmin->offeet; i < distmin->offset + index + 1; i++) distvAin->mva(il - = distmia->buf(i); for (i = distmin->eadpoint - index; i < distmin->eadpoiat + 1; i++) distmin->mva(i] a distmin->buf(i); distmax->couat - distmax->endpoiat - distmax->offaet; distmin->count = distmin->endpoint - distmin->offset; for (i - distmax->endpoint; i < GRAY~LEVELS: ++i) distmax->valid(i] 0; for (i distmin->endpoint; i < GRAY~LEVELS: ++i) distmin->valid[i] -= 0;
Figure img00210011

void PRFTX(hist2DS~fitbound) (OneO~dist~prof ile *distmax, OneD dist-profile -distmin, unsigned char *hist~area. int alg~type. int sens~adjust, long min~abs~thr)
<Desc/Clms Page number 22>
int i,j, index, axial; double temp; int openmargin, minopenmargin: long offset, endpoint; openmargin - 2 = HIST~MORPH~PASSES + 1 - sens~adjust;
Figure img00220001

minopenmargin min-ai;s thr7 /* + openaargin;;/ offset - (distmin->offset: <'diatmax- >offset) ? distmin->offset : distmax->offset; endpoint - (distmin->endpoint < distmax->endpoint) ? distmin->endpoint : distmax->endpoint; if (offset < 1) offset - 1; if (endpoint > GRAY LEVELS - 2) endpoint - GRAY~LEVELS - 2; switch (alg type) case ALG~FITMASK:
Figure img00220002

/* for (i "' distmax->offset - 1; i < distmax->endpoint + 1; i++) distmax->model(i] * distmax->mva[i] + openmargin; for (i - = distmin->offset - 1; i < distmin->endpoint + 1; i++) distmin->model(i] distmin->mvafil - openmargin; */ for (i offset - 1; i < endpoint + 2; ++i)
Figure img00220003

distmax->model[ij # distmax- >mva[i] + openmargin; diatmia->model(i] distmin->mvalil - openmargin; for (i - 0; i < GRAY LEVELS; ++i) { for (j - 0; j < GRAY LEVELS; ++j)
Figure img00220004

index - (i GRAY~SCAI.E~BITS) +j ; hist area(index] -= 1; axisl (int) (i + j) 1) + 0.5); temp -(i - j) SQRT2; if (abs(temp) < minopenmargin)
Figure img00220005

hist^area(index] 0; if ((temp < distmax->modelfaxisil) && (temp > distmin->model[axisl])) hist area(index] = 0; break ; default : break;
Figure img00220006

static int PREFIX(hist208 thresh)(unsigned char z, unsigned long tcols a, unsigned char *b, unsigned long tcols b, unsigned char *c, unsigned long tcols~c, unsigned long ncols, unsigned long nrows, unsigned char *hist) unsigned long i, j, index; unsigned long skip~a. skip~b, skip~c; skip a = tcols~a - ncols; skip~.4 . = tcols~b - ncols; skip~c - = tcols~c - ncols; for (i - 0; i < nrows; ++i) { for (j = 0; j < ncols; ++j)
Figure img00220007

index- *a++I GRAY SCALE 8ITSI+(*b++I; *c++ hist(index]: } a += skip a; b += skip~b; c += skip~c: return 0 ; }

Claims (10)

REVENDICATIONS
1. Procédé de détection de défauts, caractérisé en ce qu'il comprend les étapes consistant à : (a) fournir (310) une première image d'un objet à inspecter et une deuxième image associée ; (b) aligner (320) la première image avec la deuxième image ; (c) créer (330) un premier tracé en traçant les niveaux de gris des pixels provenant de la première image en fonction des niveaux de gris des pixels correspondants provenant de la deuxième image ; (d) créer (340) un deuxième tracé en filtrant le premier tracé ; (e) créer (350) un masque tel que le profil du masque est défini par la configuration du deuxième tracé ; et (f) utiliser (380) le masque pour détecter des défauts représentés dans la première image.
2. Procédé selon la revendication 1, caractérisé en ce qu'un filtrage (340) est exécuté en utilisant un filtre morphologique.
3. Procédé selon la revendication 1, caractérisé en ce qu'une extension du masque peut être ajustée (360) par l'utilisateur.
4. Procédé selon la revendication 1, caractérisé en ce qu'il comprend en outre l'utilisation d'un filtre à moyenne mobile pour lisser le profil du masque.
5. Procédé selon la revendication 1, caractérisé en ce que la deuxième image est obtenue à partir d'une base de données.
6. Procédé selon la revendication 1, caractérisé en ce qu'il comprend en outre une mémorisation des tracés résultant des étapes (c) et (d) dans un support lisible par informatique.
7. Support lisible par informatique caractérisé en ce qu'il mémorise un programme de mise en #uvre du procédé de la revendication 1.
8. Support lisible par informatique, caractérisé en ce qu'il comprend :
<Desc/Clms Page number 24>
- une série d'emplacements de mémoire qui contiennent des données représentant une première image et une deuxième image qui lui est associée, lesdites première et deuxième image incluant chacune une série de pixels qui sont définis chacun par une coordonnée d'emplacement et par un niveau de gris ; et - un ensemble qui comprend une série d'emplacements de mémoire mémorisant des données définissant un masque, le masque étant créé en filtrant un tracé des niveaux de gris des pixels provenant de la première image en fonction des niveaux de gris de pixels correspondants provenant de la deuxième image.
9. Support selon la revendication 8, caractérisé en ce que le filtrage est exécuté en utilisant un filtre morphologique.
10. Support selon la revendication 8, caractérisé en ce qu'un algorithme à moyenne mobile est utilisé pour lisser le tracé des niveaux de gris de pixels provenant de la première image en fonction des niveaux de gris de pixels provenant de la deuxième image.
FR0010125A 1999-08-02 2000-08-01 Procede de detection de defauts et moyens de memoire pour la mise en oeuvre de celui-ci Pending FR2799027A1 (fr)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US09/365,583 US6614924B1 (en) 1999-08-02 1999-08-02 Adaptive mask technique for defect inspection

Publications (1)

Publication Number Publication Date
FR2799027A1 true FR2799027A1 (fr) 2001-03-30

Family

ID=23439457

Family Applications (1)

Application Number Title Priority Date Filing Date
FR0010125A Pending FR2799027A1 (fr) 1999-08-02 2000-08-01 Procede de detection de defauts et moyens de memoire pour la mise en oeuvre de celui-ci

Country Status (6)

Country Link
US (1) US6614924B1 (fr)
JP (1) JP4601134B2 (fr)
KR (1) KR100727190B1 (fr)
DE (1) DE10037697B4 (fr)
FR (1) FR2799027A1 (fr)
TW (1) TW581865B (fr)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7093229B2 (en) * 1997-09-17 2006-08-15 Synopsys, Inc. System and method for providing defect printability analysis of photolithographic masks with job-based automation
US7617474B2 (en) * 1997-09-17 2009-11-10 Synopsys, Inc. System and method for providing defect printability analysis of photolithographic masks with job-based automation
US6578188B1 (en) 1997-09-17 2003-06-10 Numerical Technologies, Inc. Method and apparatus for a network-based mask defect printability analysis system
US7107571B2 (en) * 1997-09-17 2006-09-12 Synopsys, Inc. Visual analysis and verification system using advanced tools
US6631211B1 (en) * 1999-07-08 2003-10-07 Perkinelmer Las, Inc. Interactive system for analyzing scatter plots
US6873720B2 (en) 2001-03-20 2005-03-29 Synopsys, Inc. System and method of providing mask defect printability analysis
JP4663214B2 (ja) * 2001-03-20 2011-04-06 シノプシイス インコーポレイテッド マスク欠陥のプリンタビリティ解析を提供するシステム及び方法
US7127099B2 (en) * 2001-05-11 2006-10-24 Orbotech Ltd. Image searching defect detector
JP4711570B2 (ja) * 2001-09-14 2011-06-29 株式会社東京精密 パターン検査方法及び検査装置
US6829381B2 (en) * 2001-11-28 2004-12-07 Applied Materials, Inc. Method for detecting defects
WO2003046531A2 (fr) * 2001-11-28 2003-06-05 Applied Materials, Inc. Procede de detection de defauts
KR100474571B1 (ko) * 2002-09-23 2005-03-10 삼성전자주식회사 웨이퍼의 패턴 검사용 기준 이미지 설정 방법과 이 설정방법을 이용한 패턴 검사 방법 및 장치
KR100503530B1 (ko) 2003-01-02 2005-07-22 삼성전자주식회사 웨이퍼의 불량검출 장치 및 방법
US20060047462A1 (en) * 2004-08-31 2006-03-02 Picciotto Carl E Displacement estimation system and method
US7085673B2 (en) * 2004-08-31 2006-08-01 Hewlett-Packard Development Company, L.P. Displacement estimation system and method
JP2006138708A (ja) * 2004-11-11 2006-06-01 Tokyo Seimitsu Co Ltd 画像欠陥検査方法、画像欠陥検査装置及び外観検査装置
FR2882437B1 (fr) * 2005-02-21 2007-12-14 Electricite De France Procede de controle de l'etat d'un outil et appareil mettant en oeuvre ce procede
JP2006308376A (ja) * 2005-04-27 2006-11-09 Tokyo Seimitsu Co Ltd 外観検査装置及び外観検査方法
JP4796345B2 (ja) * 2005-07-25 2011-10-19 株式会社キーエンス 透明フィルム検出装置
DE102007043433B3 (de) * 2007-03-24 2008-10-09 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Vorrichtung und Verfahren zum Adaptieren eines Maskenbildes
KR20120068128A (ko) * 2010-12-17 2012-06-27 삼성전자주식회사 패턴의 결함 검출 방법 및 이를 수행하기 위한 결함 검출 장치
US8750557B2 (en) * 2011-02-15 2014-06-10 Ebay Inc. Identifying product metadata from an item image
US10599944B2 (en) 2012-05-08 2020-03-24 Kla-Tencor Corporation Visual feedback for inspection algorithms and filters
US9619876B2 (en) * 2013-03-12 2017-04-11 Kla-Tencor Corp. Detecting defects on wafers based on 2D scatter plots of values determined for output generated using different optics modes
US10339262B2 (en) * 2016-03-29 2019-07-02 Kla-Tencor Corporation System and method for defining care areas in repeating structures of design data
KR101975816B1 (ko) * 2018-07-10 2019-08-28 주식회사 에이치비테크놀러지 오토 리페어 시스템의 불량 판별장치 및 방법
US11037289B2 (en) * 2018-10-26 2021-06-15 Taiwan Semiconductor Manufacturing Company Ltd. Method and system for scanning wafer
US11580650B2 (en) 2019-10-01 2023-02-14 KLA Corp. Multi-imaging mode image alignment
CN110767564A (zh) * 2019-10-28 2020-02-07 苏师大半导体材料与设备研究院(邳州)有限公司 一种晶圆检测方法
US11127136B2 (en) * 2019-12-05 2021-09-21 Kla Corporation System and method for defining flexible regions on a sample during inspection
US11348213B2 (en) * 2020-02-12 2022-05-31 International Business Machines Corporation Multistage process model training
CN115661136B (zh) * 2022-12-12 2023-03-07 深圳宝铭微电子有限公司 一种碳化硅材质的半导体缺陷检测方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5659172A (en) * 1995-06-21 1997-08-19 Opal Technologies Ltd. Reliable defect detection using multiple perspective scanning electron microscope images

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3037383B2 (ja) * 1990-09-03 2000-04-24 キヤノン株式会社 画像処理システム及びその方法
IL99823A0 (en) * 1990-11-16 1992-08-18 Orbot Instr Ltd Optical inspection method and apparatus
JPH06325181A (ja) * 1993-05-17 1994-11-25 Mitsubishi Electric Corp パターン認識方法
US5808735A (en) * 1993-06-17 1998-09-15 Ultrapointe Corporation Method for characterizing defects on semiconductor wafers
US5923430A (en) * 1993-06-17 1999-07-13 Ultrapointe Corporation Method for characterizing defects on semiconductor wafers
US5548326A (en) * 1993-10-06 1996-08-20 Cognex Corporation Efficient image registration
US5638465A (en) * 1994-06-14 1997-06-10 Nippon Telegraph And Telephone Corporation Image inspection/recognition method, method of generating reference data for use therein, and apparatuses therefor
US5943437A (en) * 1995-10-09 1999-08-24 Kabushiki Kaisha Kobe Seiko Sho Method and apparatus for classifying a defect on a semiconductor wafer
US5764792A (en) * 1996-01-19 1998-06-09 Oncor, Inc. Method and apparatus for processing images
US5807647A (en) * 1996-07-03 1998-09-15 Kabushiki Kaisha Toshiba Method for determining phase variance and shifter stability of phase shift masks
US5982927A (en) * 1996-12-19 1999-11-09 Cognex Corporation Methods and apparatuses for in-line solder paste inspection
US6285397B1 (en) * 1997-01-16 2001-09-04 Display Laboratories, Inc. Alignment of cathode ray tube video displays using a host computer processor
US6061476A (en) * 1997-11-24 2000-05-09 Cognex Corporation Method and apparatus using image subtraction and dynamic thresholding
JP4024381B2 (ja) * 1998-04-21 2007-12-19 株式会社ルネサステクノロジ 欠陥検査方法および装置
US6282309B1 (en) * 1998-05-29 2001-08-28 Kla-Tencor Corporation Enhanced sensitivity automated photomask inspection system
KR20000027842A (ko) * 1998-10-29 2000-05-15 김영환 반도체장치의 결함검사방법
US6539106B1 (en) * 1999-01-08 2003-03-25 Applied Materials, Inc. Feature-based defect detection
US6252981B1 (en) * 1999-03-17 2001-06-26 Semiconductor Technologies & Instruments, Inc. System and method for selection of a reference die
US6912304B1 (en) * 1999-08-02 2005-06-28 Applied Materials, Inc. Two-dimensional scatter plot technique for defect inspection

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5659172A (en) * 1995-06-21 1997-08-19 Opal Technologies Ltd. Reliable defect detection using multiple perspective scanning electron microscope images

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
HANAIZUMI N ET AL: "An automatic registration method for remotely sensed images by using spatial correlation between local triangles", TRANSACTIONS OF THE SOCIETY OF INSTRUMENT AND CONTROL ENGINEERS, 1993, JAPAN, XP008041425 *
HANAIZUMI N; FUJIMUR S: "An automated method for registration of satellite remote sensing images", GEOSCIENCE AND REMOTE SENSING SYMPOSIUM, 1993. IGARSS '93. BETTER UNDERSTANDING OF EARTH ENVIRONMENT., INTERNATIONAL TOKYO, JAPAN 18-21 AUG. 1993, NEW YORK, NY, USA,IEEE, 18 August 1993 (1993-08-18), pages 1348 - 1350, XP010114366, ISBN: 0-7803-1240-6 *
LAY S-R ET AL: "Robust construction of radial basis function networks for classification", PROCEEDINGS OF THE INTERNATIONAL CONFERENCE ON NEURAL NETWORKS (ICNN). SAN FRANCISCO, MAR. 28 - APR. 1, 1993, NEW YORK, IEEE, US, vol. VOL. 1, 28 March 1993 (1993-03-28), pages 1859 - 1864, XP010111802, ISBN: 0-7803-0999-5 *
MEDASANI S; KRISHNAPURAM R; CALDWELL W: "A new typicality-based weight function for robust mixture decomposition", 1997 IEEE INTERNATIONAL CONFERENCE ON SYSTEMS, MAN, AND CYBERNETICS, 15 October 1997 (1997-10-15), ORLANDO, FL, USA, XP010248911 *

Also Published As

Publication number Publication date
DE10037697B4 (de) 2013-04-04
DE10037697A1 (de) 2001-03-15
JP4601134B2 (ja) 2010-12-22
JP2001133418A (ja) 2001-05-18
US6614924B1 (en) 2003-09-02
TW581865B (en) 2004-04-01
KR100727190B1 (ko) 2007-06-13
KR20010021173A (ko) 2001-03-15

Similar Documents

Publication Publication Date Title
FR2799027A1 (fr) Procede de detection de defauts et moyens de memoire pour la mise en oeuvre de celui-ci
Kang et al. Robust median filtering forensics using an autoregressive model
EP1697862B1 (fr) Procede d&#39;indexation et d&#39;identification de documents multimedias
US9679354B2 (en) Duplicate check image resolution
US11663840B2 (en) Method and system for removing noise in documents for image processing
CN114399522A (zh) 一种基于高低阈值的Canny算子的边缘检测方法
CN111027546A (zh) 一种字符分割方法、装置以及计算机可读存储介质
Nawaz et al. Single and multiple regions duplication detections in digital images with applications in image forensic
CN112200053B (zh) 一种融合局部特征的表格识别方法
EP0769760B1 (fr) Procédé de détection automatique des zones expertisables dans des images de pièces mécaniques
CN116562991B (zh) 面向元宇宙电商平台的商品大数据信息识别方法及系统
CN115359302A (zh) 硬币识别方法、系统及存储介质
Xiong et al. Research on an Edge Detection Algorithm of Remote Sensing Image Based on Wavelet Enhancement and Morphology.
Hida et al. Smart Image Inspection using Defect-Removing Autoencoder
WO2018210164A1 (fr) Procédé et appareil de traitement de page web et support d&#39;informations
CN113033562A (zh) 一种图像处理方法、装置、设备及存储介质
CN112598088B (zh) 一种工业部件视觉多目标鲁棒模板获取的方法
Mata Image restoration and metadata extraction of ancient documents
WO2023131763A1 (fr) Procédé d&#39;analyse d&#39;au moins une image contenant des données textuelles
Ouyang et al. A robust border detection algorithm with application to medieval music manuscripts
CN116912863A (zh) 表格识别方法、装置及相关设备
Nair et al. Robust Non-Local Total Variation Image Inpainting
CN116778305A (zh) 基于关键点过滤的图像复制-移动伪造检测方法
CN114693496A (zh) 水印检测方法、装置、电子设备及存储介质
CN111400491A (zh) 公式主体定位方法、装置、设备及计算机可读存储介质

Legal Events

Date Code Title Description
TP Transmission of property