Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
FINGERPRINT MINUTIAE MATCHER
Document Type and Number:
WIPO Patent Application WO/1982/001434
Kind Code:
A1
Abstract:
A machine or process for comparing fingerprints based on the correspondence between fingerprint minutiae. The pattern of minutiae in an unknown or search fingerprint is rotated and translated to obtain approximate registration with the pattern of minutiae in a known on file fingerprint. Following rotation and translation, only those search and file fingerprints that exhibit a sufficient number of mating minutiae between the fingerprints are compared further. For each pair of mating search and file minutiae, the neighbouring mating minutiae are compared and an individual minutia 'match score' is determined based on the degree of correspondence between the other mating pairs of minutiae within a specified neighbourhood of the individual pair of mating search and file minutiae. The individual 'match scores' for each of the mating minutiae are summed to yield a total score that is indicative of the correspondence between the search and the file fingerprints.

Inventors:
ELSEY JOHN C (US)
Application Number:
PCT/US1981/001412
Publication Date:
April 29, 1982
Filing Date:
October 20, 1981
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
ROCKWELL INTERNATIONAL CORP (US)
International Classes:
G06K9/00; G06T7/00; (IPC1-7): G06K9/68
Foreign References:
US4210899A1980-07-01
US4047154A1977-09-06
US4185270A1980-01-22
US3638188A1972-01-25
US3292149A1966-12-13
Other References:
See also references of EP 0062066A4
Download PDF:
Claims:
72 -I CLAIM
1. A method employing a prograπmed computer for comparing the minutiae of a search fingerprint (the "search minutiae") with the minutiae of a file fingerprint (the "file minutiae") to determine if the search fingerprint closely resembles the file fingerprint comprising: (a) rotating and translating the search minutiae to determine the rotation and translation which most nearly brings the search minutiae into registration with the file minutiae; (b) pairing mating search and file minutiae; (c) computing an individual minutia score for each search minutia that has a mating file minutia based on the spatial and angular relationship between the other mating file and search minutiae located within a neighborhood of each such search minutia; and (d) summing the individual minutia scores to obtain a final match score indicative of the overall resemblance of the search fingerprint to the file fingerprint.
2. The method described in Claim 1 and further comprising: (a) sorting the search minutiae into angle order; (b) finding the closest neighbors for each search minutia; (c) sorting the file minutiae into angle order; and (d) computing maximum and minimum coordinates for the file minutia.
3. The method described in Claimlor2 and further comprising terminating the comparison between the minutiae of a search fingerprint and the minutiae of a file fingerprint whenever the degree of registration of the search minutiae with the file minutiae fails to exceed an operator selected threshold. 73 .
4. A method employing a programmed computer for comparing the minutiae of a search fingerprint (the "search minutiae") with the minutiae of a file fingerprint (the "file minutiae") to determine if the search fingerprint closely resembles the file fingerprint comprising the following steps in the order named: (a) rotating and translating the search minutiae to determine the rotation and translation which most nearly brings the search minutiae into registration with the file minutiae; (b) pairing mating search and file minutiae; (c) computing an individual minutia score for each search minutia that has a mating file minutia based on the spatial and angular relationship between the other mating file and search minutiae located within a neighborhood of each search minutia; and (d) summing the individual minutia scores to obtain a final match score indicative of the overall resemblance of the search fingerprint to the file fingerprint.
5. The method described in Claim 4 and further comprising the following steps in the order named, and performed prior to the first step described in Claim 1: (a) sorting the search minutiae into angle order; (b) finding the closest neighbors "for each search minutia; (c) sorting the file minutiae into angle order; and (d) computing maximum and minimum coordinates for the file minutia.
6. A device for comparing the minutiae of a search fingerprint (the "search minutiae") with the minutiae of a file fingerprint (the "file minutiae") to determine if the search fingerprint closely resembles the file fingerprint comprising: (a) rotating and translating means for rotating and translating the search minutiae to determine the rotation and translation which most nearly brings the search minutiae into registration with the file minutiae; (b) pairing means for pairing mating rotated and translated search and file minutiae; (c) scoring means for computing an individual minutia score for each search minutia that has a mating file minutia based on the spatial and angular relationship between the other mating file and search minutiae located within a neighborhood of each such search minutia; and (d) summing means for summing the individual minutia scores to obtain a final match score indicative of the overall resemblance of the search fingerprint to the file fingerprint.
7. The device described in Claim 8 and further comprising: (a) first sorting means for sorting the search minutiae into angle order; (b) finding means for finding the closest neighbors for each search minutia; (c) . second sorting means for sorting the file minutiae into angle order; and (d) coordinate means for computing maximum and minimum coordinates for the file minutia. 76 .
8. The device described in Claim 8 or 9 and further comprising terminating means for terminating the comparison between the minutiae of a search fingerprint and the minutiae of a file fingerprint whenever the degree of registration of the search minutiae with the file minutiae fails to exceed an operator selected threshold.
9. The device described in Claim 8 or 9 wherein the rotating and translating means for rotating and translating the search minutiae to determine the rotation and translation which most nearly brings the search minutiae into registration with the file minutiae comprises: (a) rotating means for rotating the search minutiae through a preselected set of rotations; (b) for each rotated set of search minutiae constructing means for constructing a histogram showing the number of coincident search and file minutiae for various translations of the search minutiae relative to the file minutiae; and (c) determining means for determining the rotation and translation which most nearly brings the search minutiae into registration with the file minutiae by comparing the magnitudes of the largest adjacent blocks of entries in each of the histograms.
Description:
FINGERPRINT MINUTIAE MATCHER

BACKGROUND OF THE INVENTION

A fingerprint can be characterized by the locations and angular orientations of the ridge endings and ridge bifurcations within the finger¬ print which data are referred to in this specification as "minutiae". Machines for the detection and listing of fingerprint minutiae are described in a number of U.S. Patents, including Nos. 3,611,290; 3,699,419; 4,083,035; and 4,151,512.

This invention pertains to processes and machines for the automatic comparison- of one fingerprint, referred to here as the "search" fingerprint with another fingerprint, referred to as the "file" fingerprint, to determine if the two prints were made by the same finger.

A minutia pattern matcher invented by Rigaπati and Vitois is described in U.S. Patent No. 4,135,147. The present invention is closely related to the minutia pattern matcher invented by-Riganati and Vitois. U. S. Patent No. 4,135,147 describes, in some detail, the prior art and the background tσ which both this invention and the minutiae pattern matcher pertain.

The minutia pattern matcher of Riganati and Vitois generates a "relative information vector" ("RIV") for each minutia in the unidentified ("search") fingerprint, which RIV is a detailed description of a minutia's immediate neighborhood of nearly surrounding minutiae. The matcher compares each RIV in the search print with each RIV in the known ("file") print and generates a match score for each comparison (see Cols. 8-12 of U.S. Patent No. 4,135,147). By means of a histogram, the matcher makes a global comparison of the individual matches and generates a "final score" which indicates, quantitatively, how closely the search print compares with the file print (see Col. 12 of U. S. Patent No. 4,135,147). Because the minutia pattern matcher compares- each RIV in the search print with each RIV in the file print, the process involves a significant amount of effort.

The present invention significantly reduces the effort expended in the comparison, first, by performing a preliminary comparison of search and file minutiae on a global basis in order to reject file prints which bear little resemblance to the search print (to give a "quick out") and, second, by, in effect, comparing each search RIV with only a single,

mating file RIV. The details of the present process also differ from those of the minutia pattern matcher. '

SUMMARY OF THE INVENTION

This invention is a machine or process that compares or "matches" fingerprint minutia patterns. The result of this matching process is a match score which is a measure of the similarity of the two minutia patterns, with a high match score indicating a high degree of similarity. The machine of this invention is a general purpose computer, such as the IBM 7090, that has been prograπmed in accord with this specification.

The inputs to the machine are (1) the minutia data for the fingerprints being matched (one print is designated the search print, the other the file print), which minutia data consist of the locations (x,y) and angular orientations (θ) of the minutiae, and (2) a set of machine operating parameters. The minutia data are ordered in a θ in a lowest to highest values of θ. Tables 1(a) and 9(b) show an example of minutia data in tabular form (the format in which the computer stores and uses the data), and Figures 1A, B and C are plots of such data.

The object of the invention is to measure the similarity between two minutia patterns, such as those shown in Figures 1A and IB. A high degree of similarity exists between the patterns in Figures 1A and IB, as is shown in the superimposed patterns of Figure IC where the search minutia of Figure 1A have been rotated by an angle α and translated in X an amount X- and in Y an amount Y τ , and then superimposed on the file pattern.

One measure of similarity is the number of corresponding minutiae. To determine this number, one can think of a small box being drawn around each search minutia as shown in Figure 2A. If there is a file minutia within the box which also has the minutia angle close to the search minutia angle (say, within 25°), then the two minutiae are said to correspond, or to be mates. Figures 2A, B and C illustrate several cases of mating, non-mating, and multiple mating minutia pairs. There are 13 corresponding or mating minutia pairs in Figure IC. This number of mating minutiae, designated M M , is used as a preliminary measure of similarity.

If is sufficiently high, a score is computed for each search minutia based on the number of neighboring search minutiae (up to some number such as eight) that also have a mating file minutia, and on the degree of correspondence between the neighboring, mating file and search minutia. The match score for the entire fingerprint is the sum of the scores for each search minutia.

If the number of mating minutiae, M M , is not greater than some specified threshold, the file print is considered to be unrelated to the search print, and the fingerprints are not compared further.

Table 2 is a listing of all the major steps in the comparison or matching process. A more detailed functional description of each of these steps is given in the following sections.

BRIEF DESCRIPTION OF THE DRAWINGS

Figures 1A and IB are examples of search and file minutiae respectively;

Figure IC shows the search minutiae of Figure 1A rotated and super¬ imposed on the file minutiae in Figure IB;

Figures 2A, B and C show examples of mating and non-mating pairs of minutiae;

Figure 3 shows the search minutiae of Figure 1A with each minutiae numbered;

Figures 4A and 4B contain a second example of search and file minutia patterns;

Figure 5.is a two-dimensional histogram for the example in Figures 4A and 4B;

Figure 6 is a flow diagram of the logic used to compare the search and file minutiae;

Figure 7 contains an example of overlaid plots of search and file minutiae;

Figure 8 is a logic flow diagram illustrating the detailed logic for processing the NHIT list of Table 8; and

Figure 9 is a flow diagram illustrating the minutia pairing logic.

DESCRIPTION OF THE PREFERRED EMBODIMENT

1.0 PREPARATION OF SEARCH MINUTIA DATA

In a typical application of the invention, a single search fingerprint is compared against many file fingerprints. Certain computations, involving the initial search minutia data only, are done only once at the beginning of the series of comparisons.

1.1 SORT INTO ANGLE ORDER

To decrease the computation time, the search minutiae are sorted, based on their angle, in ascending order as shown in Table 1. If the minutiae are already sorted with respect to θ, this step is skipped.

1.2 FIND CLOSEST NEIGHBORS

Since the scoring for each pair of mating minutiae is dependent on the number of neighbors that also have mates, the N., nearest neighbors for each search minutia must be defined. The number N» is a match parameter selected by the machine operator and is typically chosen to be in the range of 6 to 12. The "nearness" measure is the sum of the absolute values of the differences in the X and Y coordinates between two minutiae. Such a measure is easily computed and results in a diamond shaped neighbor¬ hood area. Figure 3 shows the search minutiae of Figure 1A with each minutia numbered. Table 3 lists the nearest eight neighbors for some of the search minutiae. The nearest neighbors for each minutia are determined by computing the distance from each minutia to all other minutiae and selecting the N^ closest minutia as the nearest neighbors.

1.3 ROTATE SEARCH MINUTIAE FOR EACH ANGULAR POSITION

Since the X, Y, θ minutia values for the search and for the file fingerprints initially are not located with respect to a unique coordinate system, it usually is necessary to rotate one of the minutia patterns with respect to the other to properly align the matching fingerprints, as illustrated, for example, in Figure IC. There appears to be no straight¬ forward method of computing a best rotation based on some criteria such as

a least-squared-error fit. Accordingly, in this process, the search minutiae are rotated through a series of preselected angles and these rotated sets of minutiae are stored. In the matching process, each set of rotated search minutiae are compared with the file print and the set which gives the best match (as measured by the number of paired minutiae) is used in computing the match score for the pair of prints being compared.

In the preferred embodiment, a discrete set of rotations, N R , spaced 5.6 degrees apart are used in the matching process. A set of ten such rotations covers a range of +_ 28 degrees and normally is sufficient to allow for variations in fingerprint orientation. The number of rotations, N R , is a match parameter specified by the operator, and can be made as large as desired in order to accommodate larger uncertainties in print orientation. Since a larger number of rotations would require more comparisons, it is desirable to use as small a value of N R as practicable.

Functionally, the rotated X and Y minutia values are computed by the matrix equation

where Xn, n are the rotated minutia values, Xς, Yς are the initial search minutia values, and α is the rotation angle. In order to use only integer computations and to avoid using sine and cosine functions, the following approximations are used for the sine and cosine computations:

COSα 1 - 32/CDIV(N) (2)

SINα 32/SDIV(N) (3)

The CDIV(N) and SDIV(N) functions are represented by integer tables which have values for each N corresponding to discrete values of α. Values of CDIV(N) and SDIV(N) are computed from the inverse of the above equations and have the form

CDIV(N) 32

1 COSα (4)

SDIV(N) 32 (5)

SINα

where N has values 1, 2, ... N R y, α has values (-N RT +1) (5.6°), (- +i) (5.6°), (-N RT +5)(5.6°),

... (-N RT +2N R -3)(5.6°), (-N RT +2N RT -1)(5.6°) and N RT is the total number of rotations permissable and is an even integer.

The values of θ- for each rotation can be obtained simply by adding an angle to each θ value equal to the rotation α defined above. This addition, however, is performed later in the matching process, thus avoiding the creation of an additional array of rotated values for θ.

In order to minimize the computational errors in the rotation calculations, the search minutiae are initially centered over the origin. The rotation computations then are performed for the translated data set, and the rotated minutia sets then are retranslated to the first quadrant so that all X and Y values for the minutiae are positive.

2.0 PREPARATION OF FILE MINUTIA DATA-

Very little preparation of the file print minutia data is necessary or desirable since these computations need to be performed for each file fingerprint with which the search print is compared. The file data are arranged in order with respect to θ and the minimum and maximum minutia X and Y values are determined for the file print, but these calculations need be done only once for each file print for instance, at the time the file print data is added to the data base. A simple computation also can be done at the time the file print is added to the data base to determine the quantization parameters for use with the histograms described in the next section.

3.0 PRINT REGISTRATION

Print registration or orientation matching requires the determination of the best angular rotation and the X and Y offsets or translation that are necessary to superimpose the search minutia pattern upon the file minutia pattern. This task is accompl shed by constructing for each of the N R rotations o the- search minutia pattern, a two dimensional histo¬ gram of the displacements in X and Y needed to overlay each search minutia with each file minutia for which the values of θ differ by less

OMPI

than some threshold, which threshold is a matching parameter selected by the operator. If the computed displacements for a pair of search and file minutiae are greater than some specified threshold, this minutia pair is omitted from the histogram. An example of such a pair of minutia would be one near the top of one print and the other near the bottom of the other print. Such minutiae would not represent mating pairs. A large peak in the histogram indicates a large number of mating minutia pairs, and the coordinates of that peak give the X and Y offsets needed to give the best line up of the two minutia patterns for a particular angular rotation.

To illustrate and more precisely describe these operations, consider the example minutia patterns shown in Figures 4A and 4B, which example differs from the one shown in Figures 1-3. The search minutia pattern is one of the rotated sets of search minutia patterns. If the file minutia pattern is shifted 10 units in X and 10 units in Y (10 is added to each of the minutia X and Y values), there is almost a perfect correspondence between the search and file minutia patterns. Table 4 contains a minutia comparison matrix. " This matrix lists the result of comparing each search minutia (the leftmost column of the matrix)-* ith each file minutia (the top row of the matrix). The matrix entries show the results of the comparison. The letter A indicates that the tail angles for the two minutiae corresponding to that matrix element (e.g., search minutia, SI, and file minutia F8) differ by more than the allowed amount (30 degrees).

The two numerical entries for each pair of file and search minutia (e.g., 24, -20 for S2, FI ) indicate the increments in X and Y that must be added to the file minutia data in order to superimpose that file minutia on top of the search minutia after the centers of the search and file minutia patterns have been made coincident.

The coordinates for the center of the search print are the average of the X and Y values respectively for the search minutiae. The Y coordinates for the center of the file print are the mid-points between the maximum and minimum values of X and Y respectively for the file minutiae. The center for each minutia pattern is shown by the + symbol in Figures 4A and 4B.

The coordinate values shown for each minutia in the top row and left column of the comparison matrix of Table 4 are with respect to the center of the print. Thus, to compute the translations in X and Y, ΔX and ΔY, that are required to superimpose two minutiae, such as S2 and F4, the values of the file minutia are subtracted from the values of the search minutia, as shown by the equations of Figure 4. For the S2, F4 minutia pair, these differences are 12 and 10 for X and Y, respectively, as shown in the F4 column and S2 row of the comparison matrix. The +2 term in the X translation equation of Figure 4 is necessary to allow for the non- alignment of the center of the minutia patterns (the coordinates of the center of the search minutiae are 28, 30 and for the file print center are 30-30 producing a difference in the X coordinates of 2).

The entries of the letter L indicate that the translation required for the superposition of two minutiae (e.g., S2, F5) exceeds a threshold which is half of the file minutia pattern width for X and half of the file minutia pattern height for Y. Both the X and Y translations must be less than these thresholds to avoid an L entry. The width and height of the file minutia patterns of Figure 4 are 55 and 50, respectively.

Using the numbers contained in the comparison matrix, a two dimensional histogram is constructed. Figure 5. shows such a histogram for the example of Figure 4. Each cell of the histogram corresponds to the translations in X and Y listed on the top and left edges of the histogram. The number within each cell indicates the number of minutia pairs that exist for a given X and Y translation of the search print. The histogram is constructed by first setting all cells in the histogram to zero and then incrementing (by 1) each histogram cell that corresponds to the numerical entries in the comparison matrix of Table 4. Thus, for example, the minutia pair S2, F3, with a comparison matrix entry of 24, 5 causes the contents of the (24,25; 5,4) histogram cell to be incremented by one. As can be seen by an examination of Figures 4 and 5, all of the correct or proper corresponding minutia pairs (e.g., (S1,F3), (S3,F4) etc.), cause either the (14,15; 11,10) histogram cell or an adjacent cell to be incremented.

To determine from the histogram the best X,Y translation, a search is made of the histogram cells to find the cell with the maximum value. The coordinates of the cell with the maximum value gives the translation values in X and Y which uield the maximum degree of matching. Because of the discrete nature of the process, a slight modification of the procedure is used to avoid edge or boundary problems that produce Quantization

OMPI fa

errors. In the example, there actually are eight pairs of corresponding minutiae. Only four of these pairs are counted in the (14,15; 11,10) histogram cel l . The counts for the other four pairs appear in the left and top adjacent cells due to slight variations in the spacing between minutiae of the two patterns. To allow for these edge or boundary problems, the maximum count for the histogram is computed based on the sum of the counts for four adjacent cells. Thus, the maximum count for the histogram of Figure 5 is eight, and using the center of the cluster of four cells that gives this maximum, the X and Y translations that best line up the two minutia patterns are (using integer computations) 13 and 11 (assuming an initial alignment of the print centers).

The actual mechanization of this alignment procedure, while functionally the same, is somewhat different computationally from that described in the example. One difference is that a comparison matrix as such is never constructed; the computations are done for each minutia pair comparison by means of two nested DO loops, with the histogram being updated at the completion of each minutia pair computation. The desirability of having the minutiae sorted by angle is apparent from an examination of the comparison matrix of Table .4, since all of the A entries for a given row are in one or two sequential groups which include at least one end of the row. Logic is used in the DO loop computation based on these sequential angle differences to reduce the number of minutia pair computations.

Other computation differences are concerned with the manner in which the boundary problem for the histogram is handled and the construction of the histogram for the matcher where, in effect, four more or less independent computations proceed in parallel.

The minutia pattern line-up or registration process is functionally identical to a two-dimensional discrete pattern correlation process wherein one pattern is placed on top of another, the number of corresponding features are counted, a correlation matrix element is incremented, the pattern is shifted a small increment, and the corresponding features again are counted, etc.

In order to determine the best rotation angle for lining up or registering two prints, histograms as described above are constructed in sequence for each rotation angle. The rotation angle which gives the maximum histogram entry is the best rotation angle. If there is more than one maximum in the histogram (i.e., two or more cells have the same

OMPI

count which is higher than all others), the coordinates for each maximum are computed and stored as well as the rotation angles. Such a condition represents two equally good pattern registrations as determined by the above registration process. The rest of the matching process is executed for each of these maximums (up to five) and a match score is computed for each. The highest resulting match score is taken as the print match score.

4.0 TEST FOR EARLY OUT

After the two prints have been registered, the maximum histogram entry, MS, is a measure of how well the minutia patterns match since it ' is approximately the number of minutiae that are mates. (This measure is not exact because of possible double counting - one search minutia might be "paired" with more than one file minutia by the above process.) A comparison of MS is made with an early out threshold, E j . E j is a matching parameter that is specified by the operator. The value of E, is dependent on the type of search prints used. A typical value for latent search prints is 15. If Mj^E a zero match score is assigned, and no further match computations are performed for these two prints. IF MS>E a more refined minutia pairing and scoring procedure is used, as described in the following sections.

5.0 MINUTIA PAIRING AND SCORING PROCEDURE

The process for minutia pairing and scoring is outlined in Figure 6. Figure 6 is a flow diagram of the pairing and scoring process. The various procedures indicated by the blocks in Figure 6 are discussed in more detail in the following subsections. The process is illustrated in Figure 7 for which the corresponding minutia data are tabulated in Table.5. Figure 7 contains an example of the overlaid plots corresponding to tabular listings of X, Y and θ minutia values and is used to illustrate the specifics of the process.

5.1 FORMATION OF INITIAL HIT LIST

The fi rst step in the minutia pairing and scoring process is the formation of a l ist cal l ed the "HIT" l ist which is a l ist of the search

S0 .Em ζ ~ - OMPI WIPO . ?Λ r AT10

and file minutiae which are near enough to each other to be considered as potential mating pairs of minutiae. Table 6 is a "HIT" list for the example illustrated in Figure 7 and lists for each search minutia those file minutiae which are "close to" it. In order for a file minutia to be considered close to a search minutia, the file X, Y and θ values must satisfy the equations

X Si ' - X FJ m n. Δx ij i \ γ • Y 4Y ij , Δγ ij - < (6) θ Si - Θ FJ Λθ ij , Δ8 ij - E Θ

X-., X_., Y_., Y_., θ ς ., and θp. represent the ith search and the jth file X, Y, and θ minutia values respectively, and Eχ, Eγ and E Q are the permissable X, Y and θ pairing errors.

For minutia pairs (i,j) which satisfy this criteria, a distance or closeness measure, D.., is computed as:

*

D - . .= ΔX . . + ΔY . . + • • Δθ . . /S fl - • * (7)

1 j 1 j 1 J 1 J σ where S Q is a quanti ty used to "scal e the Θ differences to the same range as the X and Y distances and depends on the units used to represent X, Y and β. For X and Y measured in .008 inch uni ts and θ measured in 5.6 degree units , S Q woul d be 4. In addi tion to satisfying equations (6) , in order for a file minutia to be considered cl ose to a search minutia, the fol l owing distance rel ationship must al so be sati sfied:

D ij D M ( 8 )

where D M is the permissable distance error. This distance measure is also shown for each of the minutia pan's listed in Table 6. All file minutia which are "close" to a search minutia (up to a limit of four) are listed in the initial HIT list in ascending order of closeness as measured by D.., as shown in Table 6.

OMPI

5.2 NEIGHBORHOOD HIT LIST

The rest of the minutia pairing and scoring procedure involves examining all possible search and file minutia combinations and selecting that combination which tends to maximize the match score under a closeness- of-fit scoring technique for the neighboring pairs of minutiae. To determine which neighboring search minutiae also have mating file minutiae, a list is formed for each mating search minutia, called the "NHIT" list. An example of an "NHIT" list appears in Tables 7(a)-7(e). The left-most column of this list is a list of the N closest search minutia to that search minutia (called here the neighborhood center minutia) for which the list is formed. The right-hand most column is a list of file minutia (up to two) which are close to the search minutia listed in the left-most column of the table. These neighborhood closeness and distance measures are computed in accord with equations (6), (7) and (8), although different values of E χ , E γ E Q , S Q , and D M (i.e., E™, E γN , E θf ,, Sg,,, and D M ) can be specified. That is, the tolerances and scaling factors can be different for the HIT.and NHIT lists. In Table 7(a), the NHIT list for the search and file pair of.minutia (S4,F4) is shown together with the nearness or closeness measure for the four closest neighbors to minutia S4 (ile., S3, S2, S8, SI). This list only includes the two closest file minutiae for a given search minutia. Duplicate file minutiae are eliminated from the list according to a set of logic which first maximizes the number of search minutiae having a mating file minutia, and then minimizes the distance or nearness measure when two pairs of minutiae are considered at a time.

The operation of the logic is illustrated by means of the example NHIT list of Table 8 (the minutiae of the example are not related to those of the example in Table 5). The first minutia combination to be considered by the logic is the S1,F2 combination listed in the first row. However, an examination of the second row shows that F2 appears in this row also, and with a smaller distance than in row one. If minutia F2 is paired with S2 because of the smaller distance, then there is nc minutia to pair with SI. In order to minimize the number of pairings, the selection is made as shown in the final pairing column of the list. The detailed logic for processing the NHIT list is shown in the folow chart cf Figure 8. In Figure 8:

OMPI

NB = the number of neighbors for each search minutia NHIT(I,1) = closest file minutia to the I search minutia in the

NHIT list NHIT(I,2) = distance measure between the I search minutia in the

NHIT list and the NHIT (1,1) file minutia NHIT(i,3) = next closest file minutia to the I search minutia in the NHIT list NHIT(I,4) = distance measure between the I search minutia in the

NHIT list and the NHIT(I,3) file minutia.

Following the logic of Figure 8 and working in a top-to-bottom fashion through the list to eliminate duplicate file minutiae and then selecting the pairing giving the smallest distance- measure results in the pairing shown in the "final pairing" column of the list. This logic is not sufficiently complex to always produce an optimum solution since if the file entry for row three would have been (F7,2) instead of (F8,2), the final pairing for the first three rows would have been (F2,5), - , (F7,2) which is not as good as the selection -, (F2,2), (F7 > 2) for which the combined distance is 4 as compared to 7 for the less complex procedure. The simpler logic, however, is used in order to improve the matching speed since situations requiring the more complex logic are rare.

Once a NHIT list has been edited to eliminate duplicate file minutiae and the resulting, best search-file neighborhood minutia pairings have been determined (according to the above rules), the variance in the fit of the neighboring minutiae is computed. A combined variance over X, Y and θ is computed as:

1 3 σx 2 + σy 2 + σθ a 2 / ' S i r (9) whereas:

Sg is a quantity used to scale the σ Q values to the same range as σ A γ and σ v T . ΔX U , ΔY J., Δθ J. are the X, Y and θ differences between neighboring search and file minutiae, and N is the number of matching neighbors. Again S Q is a function of the units used to measure X, Y and θ. For X and Y measured in units of 0.008 inches and θ in units

.6°, Sg is in the range of 16-32.

In order to use integer arithmetic, equations (10) are computed using a different scale factor S .to scale the computed σ 2 values to appropriate integer values. The value of S depends on the scoring table used and for the scoring table of Table 9, S_ ~ 4. In FORTRAN

2 notation, the equation for determining σ χ , equation (10), has the form:

rvx = { ( KXIS - (MXI**SXI)/rc:>i)*IVAKF/KKM where:

(11)

IVX = σ 2

KXTS Σ ΔX.

J=l J

NMM =

' M

IVARF = S

Tables 7(b) and 7 (d) show the variance computations for the (S4,F4) and (S4,F2) minutia pairs respectively. In these computations, S = 4 and S. = 22.5. The integer scaled values of σ 2 are indicated by σ ς 2.

Having computed the variance in the neighborhood fit of minutia, the individual minutia score S - is determined from a two-dimensional scoring table. An example of such a scoring table.is shown in Table

7(e). One dimension of the table is Nw, the number of matching neighbors, and the other is σ , the combined, scaled variance of the fit. The individual minutia score for the (S4,F4) minutia pair of 0 because σ s 2 is greater than 14, the largest σ ς 2 entry of the table, while the individual minutia score for the S4,F2 minutia pair is 60 (the fourth row and fourth column entry of Table 7(e)). A careful examination of the minutia patterns of Table 5 shows that the (S4,F2) pairing gives a much better fit for the neighboring minutiae as the σ s computation for this pairing indicates.

Table 9 is the scoring table used in the preferred embodiment. The table is treated in the computer program as a one-dimensional table for purposes of speed and the indices to the table are computed using the specified minimum and maximum values for N and σ ς 2. This procedure, in effect, specifies a score for all of Nw, σ ς space but it does not require an infinite table of scoring values. Thus, using FORTRAN type notation,

If σ S 2 > °SX 2 ' S M " °

If σ χ 2 σ SN 2 ' σ S 2 " σ S 2

2 2 where N , N MN , σ , and øςw are the maximum and minimum allowed values

2 2 of Nw and σς respectively. In Table 9 N„ χ = 12, N» N = 4, σ^χ, = 30,

2 and σ s « = 1. Table 9 was developed by intutitive and empirical means so as to give a high score when the search and file fingerprints are similar, and a low score when they are dissimilar.

When the score Sw.., for a given search inutia-file minutia pair (as listed in the initial HIT list), has been determined from its relation¬ ship to its closest neighbors, this score is entered in the initial HIT list in place of the distance measure initially computed for this minutia pair. This procedure is repeated until scores have been determined for all minutia pairs defined by the initial HIT list. Table 10(a) is the HIT list for Table 6 with the distance measure replaced by the individual minutia scores. In order to avoid considerable hand computations to provide this example, all of the S„.. entries except for the Sw.. entries are rough approximations, but are sufficiently representative to illustrate the essential features of the process.

5.3 DETERMINATION OF FINAL HIT LIST AND INDIVIDUAL MINUTIA SCORE

When all of the score entries have been made in the initial HIT list, the file minutia entries for each row are re-ordered to be in decending order based on the score entries, and only the first two entries are retained in the HIT list. The right-most column of the example HIT list of Table 10(a) shows the effect of this or-ordering and truncation.

Using the truncated, score-ordered HIT list, multiple file minutiae are eliminated by. selecting that pairing which maximizes the total score when minutia pairings are considered two at a time. The selection process for the example of Table 10 is straightforward- in the right-most column of Table 10(a), the file minutia with the lowest score ' is always eliminated if multiple entires exist. Those file minutiae to be eliminated are indicated by a star (*) in this table.

A situation not quite so straightforward is shown in Table 11. If the lowest scoring file minutiae are eliminated, there is no mating file minutia for search minutiae S2, S4, S7, and S8. The selection logic considers the pairing for two search minutiae at a time and is such that the combined score for the two minutia pairing is maximized. Figure 9

contains a flow chart of the process. In Figure 9:

NS = number of search minutia HIT(i,l) = file minutia number with largest score on ith row of HIT array HIT(i,2) = score for file minutia of H(i,l) HIT(i,3) = file minutia number with second highest score on ith row of HIT array HIT(i,4) = score for file minutia of H(i,3) A HIT entry of 999 indicates an empty cell or no minutia pairing.

The result of the application of the process shown in Figure 9 to the example of Table 11 is shown in the right-most column of Table 11. The logic is not sufficiently complex to truly maximize the score over all possible pairing combinations. In the example of Table 11, the score would be five points higher if file minutia F9 were paired with search minutia S3 instead of S4 as shown. Such situations requiring more complex logic, however, seem to be very rare, and hence the added logic complexity that would be needed to handle such situations is not included as part of the match procedure.

6.0 FINAL MATCH SCORE

The final match score for the entire print is simply the sum of the match scores for each individual search minutia, as determined from the final HIT list. This is illustrated at the bottom part of Table 10(b).

The invention is mechanized by means of a FORTRAN routine run on any suitable computer system such as the IBM 7090. Appendix I contains a FORTRAN listing of the computer program. Appendix II contains a list of the more significant program variables.

Although the invention has been described and illustrated in detail, it is clearly understood that the same is by way of illustration and example only and is not to be taken by way of limitation, the spirit and scope of this invention being limited only by the terms of the appended claims.

a) SEARCH MINUTIA

fa) FILE MINUTIA

TABLE 1

OMPI

LIST OF BASIC STEPS IN PROCESS

1.0 PREPARE SEARCH MINUTIA DATA

1.1 Sort Into Angle Order

1.2 Find Closest Neighbors

1.3 Rotate Search Minutia For Each Angular Position

2.0 PREPARE FILE MINUTIA DATA

2.1 Sort Into Angle Order

2.2 Find M n and Max X and Y Values

2.3 Compute Quantization Parameters

3.0 PRINT REGISTRATION (FIND BEST ANGLE ORIENTATION AND X, Y OFFSETS FOR LINING UP SEARCH AND FILE MINUTIA PATTERNS)

3.1 For Each Angular Rotation, Build A Two Dimensional Histogram of X, Y Translations To Overplay All Possible Minutia Pairs

3.2 Determine X, Y Translations Corresponding To Maximum of Histogram

3.3 Determine Rotation Angle For Maximum of All Histograms

3.4 Determine Maximum Value of All Histograms M*

4.0 TEST FOR EARLY OUT

4.1 Compare M* With Threshold E τ

4.2 IF M*m < E τ i, Assign Zero Match Score, Exit

4.3 If M* > E τ T, Proceed

5.0 "ROTATE, TRANSLATE" SEARCH MINUTIA TO BEST MATCH POSITION DETERMINE WHICH SEARCH MINUTIA MATE WITH WHICH FILE MINUTIA

6.0 FOR EACH SEARCH MINUTIA WHICH HAS A MATING FILE MINUTIA, TRANSLATE SEARCH MINUTIA SO THESE MATING MINUTIA COINCIDE COUNT HOW MANY OF N CLOSEST NEIGHBORING SEARCH MINUTIA ALSO HAVE A MATING FILE

MΪNUTIA N m COMPUTE THE INDIVIDUAL MINUTIA SCORE I s1 .ASI sl - N M 2

6.1 Form Initial "Hit" List

6.2 Form Neighborhood Hit ("NHIT") List

6.3 Determine Final Hit List and Individual Minutia Score

Ns

7.0 COMPUTE TOTAL FINAL MATCH SCORE S M "ASS M = Σ X si i=l

TABLE 2

HEET

MINUTIA 8 NEAREST NEIGH80RS

NO.

1 11.12.7,9.15,10.6.8

-2 4.5.15,10.17,19,18.12

3 16.13.20.18.6.19.17.14

4 2.5.15.10,17, 19, 18.12

5 4.2.17.19.10,15.18.9

6 20, 13.8.14, 9.18.3.7

*

TABLE 3

I r

TABLE 4

SEARCH MINUTIA FILE MINUTIA

TABLE 5

OMPI

/ *i w

HIT LIST

SEARCH CORRESPONDING FILE MINUTIA.

MINUTIA DISTANCE

SI (F5.2), (F6.8). (F4.10)

S2 (F3.1 ). (F 1.6). (F2.6J

S3 (F2.2). (F3.6), (F4.11 ). (F1.121

S4 (F4,4). [F2.8I. (F5,10), (F3.14)

S5 (F10.3), (F9.7)

S6 (F11.6). (F10.5I

S7 (F8.4). (F7,6). (F11.9)

SS {F13.6), (F12.8)

S9 (F 16.6). (F14.7). (F 15.10J

S10 (F 14.4). (F15.5). (F 16.9)

S11 (F15.5). (F14.13)

.

TABLE €

INITIAL NHIT LIST (S4,F4) PAIRING INITIAL NHIT LIST (S4,F2) PAIRING

DISPLACED DISPLACED

SEARCH CORRESPONDING FILE SEARCH CORRESPONDING FILE

MINUTIA MINUTIA DISTANCE MINUTIA MINUTIA DISTANCE

S3 (F2,2), (F5,9) S3 (F23,l), (Fl,6) S2 (F2.5), (F3,6) S2 (F1,0), (F3,5) S8 (F12,7), (F13,9) S8 (F13,2), (F12,10) SI (F5,6), (F6,ll) SI (F6,2), (F5,6)

(a) (c)

FINAL NHIT LIST, (S4,F4) PAIRING

"M44 0 (b)

3 M42 60

(d)

EXAMPLE SCORING TABLE 2 0 1^ 2 3 4 5 6 7 8 9 10 11 12 13 14

2 20 10 5 1 0 0 0 0 0 0 0 0 0 0 0

3 40 20 10 5 3 1 0 0 0 0 0 0 0 0 0

4 150120 100 80 60 40 20 10 5 3 1 0 0 0 0

5 200150120 100 80 60 40 20 10 5 3 1 0 0 0

6 200200200 150 120100 80 60 40 20 10 5 3 1 0

(e)

TABLE 7(a) - 7(e)

C ?I r rr-~ Y,TFO

~~ ~

DISPLACED

SEARCH CORRESPONDING FILE FINAL

MINUTIA MINUTIA. DISTANCE PAIRING

SI IF2.5) - (F2.5)

S2 (F2.2). {F7.5I (F7.5)

S3 (F8.2) - IF8.2)

S4 (F8.4). (F9.S) (F9.6)

S5 (F10.3). (F11.5) (F10.3)

S6 (F12.3), (F14.5) F{14,5)

S7 (F14.7) - -

S3 FI12.1) - FI12.1)

TABLE 8

CORRESPONDING FILE MINUTIA

SEARCH CORRESPONDING FILE MINUTIA AFTER SCORE ORDERING AND

MINUTIA INDIVIDUAL MINUTIA SCORES TRUNCATION

SI (F5,3), (F6,100), (F4,0) (F6,100), (F5.3)

S2 (F3,10), (FT ,80), (F2,l) (F1.80), (F3,10)*

S3 (F2,3), (F3,100), (F4,0), (F3,100), (F2,3)*

(Fl.O)

S4 (F4,0), (F2,60), (F5,0) (F3,0) (F2,60), (F4,0)

S5 (F10, 0), (F9,20) (F9,20), (F10,10)*

S6 (Fil,20), (F10,80) (F10,80), (Fil ,20)

S7 (F8,3), (F7,60), (F11,0) (F7.60), (F8,3)

S8 (F13,100), (F12,3) (F13,100), (F12,3)

S9 (F16,3), (F14,40), (F15.0) (F14,40) (F16,3)

S10 (F14,5), (F15.60), (F16,0) (F15,60), (F14,5)* sn (F15.3), (F14,10) (F14,10)*, (F15,3)*

*Eliminated Minutia

(a) Intermediate HIT List

SEARCH SELECTED FILE MINUTIA MINUTIA AND SCORE

SI (F6.100) S2 (FT,80) S3 (F3.100) S4 (F2.60) S5 (F9.20) S6 (F10,80) S7 (F7.60) S8 (F13,100) S9 (F14.40) S10 (F15,60) sn

Match Score = 100 + 80 + 100 + 60 + 20 + 80 + 60

+ 100 + 40 + 60 = 700

(b) Final HIT List

TABLE 10

* ELIMINATED MINUTIA

TABLE 11

OMPI

. f A> > , VvIPO

APPENDIX I ECLIPSE FORTRAN 5, VERSION 4.00

1 SUBROUTINE MATCHP 2 OVERLAY OVMAT 3 C 4 C R40 MATCH PROGRAM (MATCHP): CALLS ASORT DATA GENERAL 11/78 5 C 6 PARAMETER ID!=204, ID4=204, ID3=204, ID5=20, ID6=12 7 COMPILER STATIC 8 COMMON/ARRAY/F, COUNT,SC0RET,IXMI ,IXMAX XMI ,IYMAX 9 COMMON/PLOTAG/PA,IJS,XOFS,YOFS,IPAAR,PAA,AVX,AVY

10 COMMON/ARGS/LATID,ISCDA,NP,P,IFCDA,NF,ISCOR,IFLAG,PCN 11 COMMON/MATGP/IPAR 12 INTEGER P(3*ID4),C0UNT(250O),F(3*ID3),PA(ID5*ID4),NBR(ID6*ID4) ft )" ' π 13 *,SUMX,SUMY,AVX,AVY,SDIV(32),CDIV(32),NPRS(33),SC0RET(16,10) π 14 *,RIV(23),NP0S(5),NMAX(5l HIT(ID4),PA (ID4),S(ID5),SS(IDS),NHIT(ID4) n 15 *,NP,NF,ISC0R,ISC0A(24),IFCDA(16),IPAR(256),ISCIVR(500) 16 *,XOF,YOF,DPX,DPY,PX,PY,PXS,PYS,PCN(9),LATID(7) 17 *,DELTH,DELX,DX,ERAA,ERAM,DDX,X0FS,Y0FS,PXLX,PYLY,ISTAB(512)

(. : 18 * ASFP ERAB ASFN ASFS 19 EQUIVALENCE'(ISTAB(21),ISCTVR(1)), (C0UNT(750) ,HIT(1)) 20 *,(C0UNT(630),NHIT(1)), (S(l).PA(l)), (COUNT(l), SS91)) π 21 *,(IPAR(26),IE0T), (IPAR(28),MXNBL), (IRAR(29),NAT) 22 *,(IPAR(30),ERAA), ( IPAR(31),ERAM), (IPAR(32),DELX), (IPAR(33),DX) 23 *,(IPAR(34),NXMAX), (IPAR(35) .NYMAX), (IPAR(36),IETP), (IPAR(37),ΪETPN) 24 *,(IPAR(38),DDX), (IPAR(44).IOFLAG), (IPAP(61),ASFP), (IPAR(62),ERAB)

-3 25 *, (IPAR(63),ASFN), (IPAR(64),ASFS), (IPAR(135).JSMIN), (IPAR(136),IVARF) 26 *,(IPAR(137),IVARMX), (IPAR(138),JSXMX), (IPAR(139),IVARMN) 27 28 DATA SDIV/-32,-32,-33,-34,-35,-37,-40,-43,-48,-54,-62,-75,-95 29 * -132,-218,-652,652,218,132,95,75,62,54,48,43,40,37,35,34,33, 32,32/ 30 DATA CDIV/34,38,42,48,56,66,79,97,124,163,225,333,547,1068,2957,2 6556, 31 * 26556,2957,1068,547,333,225,163,124,57,79,66,56,48,42,38,34/ 32 C

38 IF(NAT*NP .GT. ID5*ID4) NAT = ID5*ID4/MPK 39 IP (IFLAG.EQ.l) GO TO 65 40 C 41 C OPEN AND READ FILE CONTAINING SCORING TABLE DATA 42 C

". '. I

)

tiHl us: CL03E 0 utu ISCOR = 0 u-i- 1 RETURN

50: 1050 CONTINUE 51: •MRIV =' MXNBL ?i_ IF(NRIV .GE. NP) NRIV e NP-1 i: C 5«: C SORT INTO ANGLE ORDER 55: C 5b: IRA = ERAA ♦ OELTH * NAT/2 too 57: CALL AS0RT(IRA,NP, PT,P)

59: C COMPUTE A VERAGE X AND i bi: NP3* NP*3 6?: PCO = NPJ b5: SUMX = 0

77: C

7b: c FIND CLOSEST NEIGHBORS βi: NN = NP * 3 62 _ _τr=o I " β3 DO 000 I = 1,NN,3 θu: oo 3U0 L = 1»NRIV3 e5: N Q RS(L) = 0 Ob: 300 RIV(L) B 32767 87: X = SS(I) 8ft: Pi = SS( I *1 ) o.

00 5

O

0 Z

091 00 750 J « t»NN,3

901 IOX * IAB3(PX ~ - ~ 33( )) 9 l t IDY a IABS(PY-S3(J*l)) IR * IDX ♦ IDY

931 IF(IR .GT. IPAR(19)) GO TO 750 941 IF (IR.GT.RIV(l)) GO TO 750 951 DO 620 K a 2,NRIV3 " 9b: ' IF " (IR.GT.RIVOO) GO " TO * 650 971 RIV(K-I) = RIV(K) 98t 620 NBR3(K-l) r NBR3(K) 9: K a NRI 3* 1

1201

121: NP2 s NP ♦NP J ^JL NP2CD NP2

1231 JA (32 -NATΪ/2 1 12<U JB (32♦NAT)/2 125t KM - -1 2b» DO 30 L clιNPCn«3 1271 KM KM ♦ 2 no: PY 33 (L+l)

DO _\ '_l_ PA(KK) s PX (PX3/CDIV(N))-(P.Y3/SDIV(N))

•> O o

32 o

>

135: .PA(Kr l) a (PXS/SOIV(N) ) ♦ PY - (PYS/CDIVtN )

136: UQ KK = K+NP2C0 137: 30 CONTINUE l mt_ KX s KK _ _ .. . _

Ϊ 9: JF s ' -SSUfjH " " ~ * loo: IF(JF ,LT. 0) JF = 0 .

1 α 1 : LAMIN B JF*(NAT/2)*DELTH - OELTH/2

1«2: K = 0

1«3: DO 90 I s 1,NP

1 f ; K x K4-3 ' lϋb: 90 PAA(I) = 3S(K) ♦ JF l«b: IFLAG = 1 l«7: 6S _ CONTINUE

1"H: C

11 : C** PREPARE FILE OATA

157: NY = MINU((IYMAX-IYMIN)/DELX # NYMAX)

15a: IF(NY.EO.O) NY=l

159: ICXF = (IXMAX+IXMINΪ/2 lbo: ICYF = (IYMAX«]VMIM)/2 l(>i: JFXMIN = ICXF - DELX*NX/2 Yf_ - pEςX.*NY 2_ lδu: NY1 = NY+2

165: XTl a NX1*NY|

Ibb: L = NX*DELX/2

167 : LY ~ NY*0ELX/2 lϋfl|_ NPB = 6* P c

169: NB4 = NRIV

170: c

17i: c START OF BASIC MATCH ALGORITHM

172: c

1011 MHAX ^ n 0

" l έi " II '" - " -I-NP2CO

103: IANGM a -DELTH

___ ___

1051 C COUNT HITS FOR EACH ANGULAR OSITION

107: DO 500 NANGLE = l.NAT * l eβt IANGM x IANGM ♦ DELTH 109: NJ ~ 1

1901_ II ~ 11 ♦ NP2C0 Tfi: IABIA3 = -256-LAMIN+IANGM 1921 DO 300 IBA ~ 1,2

C 1931 IABIA3 a IABIA3 ♦ 256 ~19αt IJ = I ' i " " 1951 00 300 I = l.NP

2091 COUNT(KSHNYl) s COUNT(KST+NY1 ) ♦ 1

2101 KST = KST * 1

2111 COUNT(KST) s COUNT(KST) + 1

212: " " COUNUKST+NYl) a COUNT (KSTtNYl) ♦ " l

213: GO TO 275 216: 275 CONTINUE 217: 300 CONTINUE 2101 " c C

- 2191 C FIND COORDINATES OF MAXIMUM HIT COUNT 2201 C ' 221 : W Oϋ " I a I, ¥TI 222: NSS = COUNT(I) 225: COUNT (I) = 0 22«: IF (NSS.LT.IAN3) GO TO «00 225: IF (NSS.E Q .1AN3) GO TO 399

03 ?26: MMAX=1 > O o

2

Q z

>

229: ■MMAX(MMAX) x NANGLE 2301 GO TO αoo

231: 399 MMAX a MMAX ♦ 1 232: IF (MMAX.6T.5) MMAX = 5 233: NPOS(MMAX) a I 23 ι NMAX(MMAX) a NANGLE 235: α o CONTINUE 25b _ 500 CONTINUE " 237 " : C

23»J: C sεcoNO, MOVE THE LATENT PRINT AND FIND WHICH OF THE LATENT

MINUTIAE MATCH AND RECORD THIS IN THE HIT ARRAY.

2<U : ISC0R3 = 0

2«2: JF(1AN3 .LT. IEOT) GO TO 992

2 " 1iT 00 990 JZ a l.MMAX

219! IF (JN.GT.O) GO T0 601

250: JN ~ NY

2Si: IN a IN - 1

252: 601 CONTINUE

253: MAZ = NMAX(JZ)

25ϋ: IJ = NP2CD»(NMAZ-1)

255i " XOF a ΪN ' * DELX + JFXMI

25b: YOF a JN * DELX ♦ JFYMIN

257: UU 122 I s l.NPΘ

25β: 12? HIT (I) = 9999

259: NJ a 1 O

ZrO__ NANG a (NMAZ-1)»DELTH CO

Υbϊ: IABIA3 a -256 - LAMIN ♦ NANG 2b2: DO 290 1BA a 1,2 263: IABIA3 a IA0IA3 ♦ 256 Zbn: 00 290 i ' a l.NP * " '

2b5I IH a 0*1-7

03 2bb: 273 K a IJ ♦ I + I -1 > O " 2b7r C o 2b5: C TRANSLATE LATENT TO Ert POSITION

2 2b9: C ø 270: PX a PA(K) ♦ XOF ' 271: PY a PA(K+1) ♦ YOF

> tr 2721 IANG a PAA(I) ♦ IABIA3

'273l_ ~ NJ

IF(N.GE. " NF3) GO TO 292 " 275l C '2761 IDENTIFY HIT3

2771

2701 DO 200 J a N.NF3.3

2791 1EA a IAB3(F(J*2) - IANG)

2001 " 1F(IEA ,GT. ERAM) GO TO 279

2011 IEX a IABS(F(J) - PX) IFUEX .GT. DX) GO TO 200

2G31 IEY ~ IABS(F(J+1) - PY) 26A1 IFUEY .GT. DX) GO TO 200 2651 IET x IEA/ASFP ♦ IEX ♦ IEY __ 20bt ~ IF (IET .GT. IETP) GO TO 200

295: IT2 a HIT(IH+JH*1) 29b: HITUH+JH) a HIT(IH*JH*2)

297: HlT(IH+JHfl) = HIT(IH*JH*3) 29o: HIT(lH+JHf2) = HI 5001 GO TO 2703

~ 3ό r 706 CONTINUE

3021 GO TO 200 3031 27 IF (F(J*2).GT.IANG) GO TO 290

3θu: " NJ a J I 305: 28 0 CONTINUE

306|_ •0 CONTINUE " 307: 292 CONTINUE

3001 C

309: C THI Rl ) , FOR EACH LATENT MINUTIAE WHICH IS A HIT, MOVE THE LATENT ' 31Of C PRINT SO THAT THE MATCHING MINUTIAE COINCIDE AND THEN TEST TO

3111 C SEE H0« MANY OF THE CLOSEST LATENT NEIGHBORS ARE ALSO A HIT. c

CD * 3i 3: NBRI a -NRIV > 31«: DO 090 LM a 1,NP O o 315: NBRI = NBRI ♦ NRIV ~ \ 316: 00 095 L 1 a 1,« ø 3171 IS a β*(LM-l) ♦ 2*(L 1-1) ♦ 1 z 3in: IF (HJT(IS) .EO. 9999) GO TO 098 >

319: .JFM a HIT(IS) 320: JJ x (HIT(IS)-1)*3*1 321 : KK = IJ+LM+LM-1

323: C CO M PUTE OFFSETS TO OVERLAY LATENT AND FILE MI UTIAE 32o: C 325: DPX = F(JJ) - PA(K ) 3261 DPY = F(JJ+1) - PA(<K*1) 327: NJ = 1'

3?a:_ on 010 LL = 1,NB« ; ' l\3 " 329: 010 NHIT(LL) a 0

33u: IABIAS a -256 - LAMIN ♦ NANG

331 : 00 050 Z a 1,2

33?: IAΘIA3 a IABIAS ♦ 256 333: c

3«ι: PY a P A(I +1 ) ♦ DPY BIAS 315 J = IAN0(HIT (JSP),377K) 3"b J U_ t 0._9999) GO TO 050 3U7 IF(J .EQ. JF M) GO TO 045 3«0 J = (J-1)*3 ♦ 1 3«9 IEA a IAB3(F (J*2) - IANG) 350 1F(IEA .GT. ERAB) GO TO 045 351 IEX s IABS(F (J) - PX) JS52 IFΠEX .GT. ODX) GO TO 045 co 353 IEY = IAB3(F (J+l) - PY) 35« IF(IEY .GT. DDX) GO TO 045 355 IET a IEX+IE :Y' *IEA/ASFN 35b IFdET ,GT. IETPN) GO TO 045 357 Iri a «*K - 3

ill: C 112: C FINO SCORE FOR NEIGHBORS BASED ON VARIANCE OF FIT J 13: C ib: MTI a H 1 : MX13 s 0 io: MYIS = 0 y 19: MTI3 a 0 ϋ 2°i_ JA61AS a -LAMIN+NANG «2Ϊ: NMM a 0

'122: K a 0 «2ϊ: 00 000 I - l r NB4,4 «2u: K a K+l «25: IF( HITd) .EO. 0) GO TO 000

H b__ N M S NMM _1

«27 : J = NHIT(I)

< 33: MXIS a MXIS+ID*I0 α : 10 a PA(IK+1) ♦ DPY - F(J+1) «35: MYI x MYI ♦ ID i3b: MYI3 a MYIS + IO D «57: ID a PAA( I) ♦ IABIA3 - F(J*2) «3θ: IF(IABSdD) .GT. 127). ΪP.3 I + 256

439: " MTI a MT1 + II) ιuo: MTIS = MTIS ♦ I0*ID i : 000 CONTINUE U2: J3X x NMM - JSMIN ♦ 1 «3: IF(J3X .GT. JSXMX) JSX s JSXMX ^ ϋ IFUSX .GE. 1) GO TO 005 u ' 5: IT3X = 99 α«b: I3C0RV x 0

HUT. ITSXS x 0

«« : 005 IVX a ((MXIS - (MX1*MXI)/NMM)*IVARF)/NMM'

03 «5o: IVY = ((MYIS - (MYI»MY1)/NMM) VARF)/NMM > «5i: " ϊ VT " " a "' ( (MTIS - " (MTIU TI ) /NMMj i vARF) / (N ASFS*ASFS)

Ό «52: o 1T3X x (IVX+IVV*IVT)/3

«5J: IT3X x ITSX - IVARM

0 451: IF(IΪSX .GT. IVARMX) ITSX a IVARMX z 55: IF(IT3X .LT. 1) ITSX a 1

<4 (» ϊ IXJV a (J3X-1)*IVARMX+ΪTSX

U71 I3C0RV * I3CTVR(IXJV)

50! 090 HIT(I3*t) s I3C0RV

1591 095 CONTINUE

1601 090 CONTINUE

4611 C

4621 C ORDER HIT ARRAY ENTRIES RASED ON SCORE

0631 C 4601 DO 920 I s l,NPβ,θ

4651 MX x -5

0661 MX2 a -10

4671 DO 910 J x 1,0,2 βfcβl IF(H1T(I+J) .EO. 9999) GO TO 915

4691 IF(HIT(I*J) .LE. MX) GO TO 905 C

4701 MX2 X

071: MX2N a MXN

0721 MX a HIT(J+I)

0731 MXN x HITU+I-1)

0701 GO TO 910

4751 905 IF(HIT(J*I) .LE. MX2) GO TO 910

0761 MX2 a HIΪ(JH)

0651 920 CONTINUE 4061 C <G7l_ C SELECT LARGEST SCORE FROM HIT LIST MULTIPLE ENTRIES 4001 C " 4091 00 960 I a 1,NP0,Θ j!90t_ IF(HIT(I) .EO. 9999) GO TO 960 4911 925 IFM x IAND(HIT(I),377K) 4921 J 3 I * 4931 930 J x J*fl CD 09«i " " IF(J .GT. PΘ) GO TO " 960 ""

503: IF(HIT ( I ) .GT. HIT(J*D) GO TO 940 I ll=Jl,I2«'»999,J2s9999

5ϋu: 937 MIT(I) x 9999 sos: Hllll+I) x 9999

506: GU TO 9bϋ

50 : 90 HI T(J) ' 9999 f ltxJl,J2x999«»,/ϊ2x9999 r SH.GT.SJl .1

509: GO TO 930

51 * . 90S 1F(M1T(JM) .GE. HIT(ϊ+i). ♦ HIt(J+3)) GO TU 937 t llx l, 12x9999,J2.NE.9999

511 : 4U b nΙT(J) a HIT (J+?J lllβJli J2.NF..9999,/!2x9999,SJ1.LT.SI1'

512: H1TU+1) = HIT(J+31 t 12. E. 999, SI1.GT.SJ1+S12

51 i: MIT(J*2) = 9999 biα: H1TU+3) x 9999 o

515: GO TO 930 I

51b: 900 IF(HIT(J*2) ,t0, 9999) 60 TO 950 I ItaJl.l2.NE.9999

517: IF(HIT(I*1) .GT. HIT(J*1)+HIT(I*3)) GO TO 946 lIlxJl.I2.NE.9999,J2.NE.9999 sn: I Ilx | l,I2.NE.9999.J2.NE.9999,SJl.LT.t

GO TO 9 2

519: t>0 IF (HIT ( 1+1 ) .GT. HIT(Jtl) ♦ HIT(I*3)) GO TO *>00 f IlxJl,IS.NE.99*9,J2x9999

520: llxJl,1 .NE.999<J,/J2x9999,SIt .Ll.^J'

952 HIT(I) = HΪTd+2)

521 : MlT(I*l) x HIT(I»3) j J2.NE.9999, SI1.LT.SI2+3J1 ro 522: HlT(H2) x 9999 >o 525: HlT(I+3) a 9999 o 52u: GO TO 925

13 525: 9b0 CONTINUE

0 52b: C

2 >

51

ATTRIBUTES POSITION SIZE

— ARRAY --

~ __ INTEGER ARRAY 0 612.

COUNT INTEGER " ARRAY llβα 2500,

3S INTEGER ARRAY 1144 20.

NHIT INTEGER ARRAY 2331 ?θa.

HIT INTEGER ARRAY 2521 204.

SCORET INTEGER ARRAY 6050 160.

IXMIN INTEGER 6310

IXMAX INTEGER 6311

IYMIN INTEGER 6312 THAX INTEGER 6313

— PLOTAG .—

PA INTEGER ARRAY 0 4080. S INTEGER ARRAY 0 20.

US INTEGER 7760

XOPS INTEGER 7761

YOFS INTEGER 7762

IPAAθ " ' INTEGER 7763

PAA INTEGER ARRAY 7764 204,

_AVX INTEGER. 1030.0

AVY INTEGER " l0301

~ ~ AR53 —

LATID INTEGER ARRAY 7^

I3CDΔ INTEGER ARRAY 7 24. P INTEGER 37

P INTEGER ARRAY 40 612,

TlFCOA " INTEGER ARRAY " 1204 " 16. ' NF INTEGER 1224 ISCOR .INTEGER 1225

IFLAS INTEGER " 1226 P N INTEGER ARRAY 1227 9.

— MATGP —

OMPI

BAD ORIGINAL <

- 52 -

IPAR INTEGER ARRAY 0 25(

IVARMN INTEGER 212

JSXMX INTEGER 211

IVARMX INTEGER 210

IVARF INTEGER 207

JSMIN INTEGER 206

ASFS INTEGER 77

ASFN INTEGER 76

ERAB INTEGER 75

ASFP INTEGER 74

IOFLAG INTEGER 53

DDX INTEGER 45

IETPN INTEGER 44

IETP INTEGER 43

NYMAX INTEGER 42

NXMAX INTEGER 41

DX INTEGER 40

DELX INTEGER 37

ERAM INTEGER 36

ERAA INTEGER 35

NAT INTEGER 34

MXNBL INTEGER 33

IEOT INTEGER 31

— STATIC VARIABLES —

NBR INTEGER ARRAY 0 244

SUMX INTEGER 4620

SUMY INTEGER 4621

SDIV INTEGER ARRAY 4622 32.

CDIV INTEGER ARRAY 4662 32.

NBRS INTEGER ARRAY 4722 33.

RIV INTEGER ARRAY 4763 23.

NPOS INTEGER ARRAY 5012 5.

NMAX INTEGER ARRAY 5017 5.

ISCTVR INTEGER ARRAY 5050 500

ISTAB INTEGER ARRAY 5024 512

XOF INTEGER 6034

YOF INTEGER 6035

DPX INTEGER 6036

DPY . INTEGER 6037

PX INTEGER 6040

PY INTEGER 6041

PXS INTEGER 6042

PYS INTEGER 6043

OMPI

SHEE BAD ORIGINAL V > II-'O

- 53 -

DELTH INTEGER 6044

PXLX INTEGER 6045

PYLY INTEGER 6046

I INTEGER 6047

NP3 INTEGER 6050

NPCD INTEGER 6051

NN INTEGER 6052

L INTEGER 6053

NRIVS INTEGER 6054

J INTEGER 6055

K ' INTEGER 6056

IEND INTEGER 6057

NRIV INTEGER 6060

IT INTEGER 6061

N INTEGER 6062

JA INTEGER 6063

JB INTEGER 6064

KK INTEGER 6065

NXT1 INTEGER 6066

NANGLE INTEGER 6067

IBA INTEGER 6070

NF3 INTEGER 6071

KST INTEGER 6072

NY1 INTEGER 6073

MMAX INTEGER 6074

JZ INTEGER 6075

NP8 INTEGER 6076

IH INTEGER 6077

JH INTEGER 6100

LM INTEGER 6101

LM1 INTEGER 6102

LL INTEGER 6103

NB4 INTEGER 6104

KZ INTEGER 6105

JK INTEGER 6106

IS INTEGER 6107

NPK INTEGER 6110

IER INTEGER 6111

IRA INTEGER 6112

MPT INTEGER 6113

IDX : INTEGER 6114

IDY INTEGER 6115

IR INTEGER 6116

ITMP INTEGER 6117

NP2 INTEGER 6120

NP2CD INTEGER 6121

- 54 -

KM INTEGER 6122 KX INTEGER 6123

JF INTEGER 6124

LAMIN INTEGER 6125

NX INTEGER 6126

NY INTEGER 6127

ICXF INTEGER 6130

ICYF INTEGER 6131

JFXMIN INTEGER 6132

JFYMIN INTEGER 6133

NX! INTEGER 6134

LX INTEGER 6135

LY INTEGER 6136

IANS INTEGER 6137

II INTEGER 6140

IANGM INTEGER 6141

NJ INTEGER 6142

IABIAS INTEGER 6143

IJ INTEGER 6144

IANG INTEGER 6145

NSS INTEGER 6146

ISCORS INTEGER 6147

IN INTEGER 6150

JN INTEGER 6151

NMA∑ INTEGER 6152

NANG INTEGER 6153,

IEA ' INTEGER 6154

IEX INTEGER 6155

IEY INTEGER 6156

IET INTEGER 6157

IT! INTEGER 6160

IT2 INTEGER 6161

NBRI INTEGER 6162

JFM INTEGER 6163

JJ INTEGER 6164

KI INTEGER 6165

IK INTEGER 6166

JSP INTEGER 6167

IFM . INTEGER 6170

MXI INTEGER 6171

MYI INTEGER 6172

MT1 INTEGER 6173

MXIS INTEGER 6174

MYIS INTEGER 6175

MTIS INTEGER 6176

NMM INTEGER 6177

10 INTEGER 6200 " J3 INTEGE 6201 ITSX INTEGER 6202 I3C0RV INTEGER _620_3_

TTSXS INTEGER- " 6204

IVX INTEGER 6205

IVY INTEGER 6206

IVT INTEGER 6207 IXJV I TEGER 6210

US Oft N IO i- N IΛ o n i O i- CM ro «9 ιr> tn

ή-wsn

ιnσ «a- — «. »3-«d- IΛ i— CO CO O CO i— iifiΛnMΛfl'in coo O n co <3- σ © cn

N r i-r- CO r- r- N IM CM 13- M co aa- in U3

muii— «a- CM ιnoι-N oo oαo^fNn cooi

en to r- cnniniM lO tO tO 1— CO m tO CM CM CO tO tO VO Ul to 1— CO O CM

CM CM CM O σ C 00 CM C0 CM (T5 rθ CM CM CM CM C0 0 CM r0 «a- IΛ tn

CO CO CO f^ QO OO CO CO CO CO CO CO CO CO CO CO CO CO CO r-i— r— IΛr-i— 1— r— r— r— —. <— 1— r—l— r— r— r— •

ϋ.

mm. * a r— " » *~ ! - -.• -- r; '—7 BAD

1 65 bb 67 75 74 75 76 i ' 07 60 117 143 1 3 170

179 195 201 217 221 iid 223 220 233 235 257 250 264

265 2bb 272 306 575 376 377 370 307 ?09 390 391 402

403 404 405 406 400 409 410 423 425 427 441 464 464

469 472 473 475 476 477 400 4P1 X 84 4rt5 409 490

«491 492 501 503 504 505 510 517 519 520 521 522 525

525 530 531 532 536

ICXF 159 lbl 197

ICYF 160 162 19P

10 "" 431 432 " 433 " 434 435 436 437 43ft 439 * 440 "

ID1 b

1D3 6 ro IDα h • , >

D ID5 b o ID6 6

2 ø

IDX 90 92 •- — IDY 91 92

IEA 279 200 205 349 350 355

IEND 103 105 110 112 113 IEOT 26 242

IER 44 •

IET 205 206 200 209 355 356 360 364 365 36β "

1ETP 26 206

IETPN 26 356 *

IEX 2 202 205 351 352 355

IEY 283 204 205 353 354 355 *

IFCOA 10 10 (

IFLAG 10 39 146 IFM 377 302 " 303 491 496 497

IH 265 200 209 290 293 294 295 ?96 297 298 299 357 350 359

360 361 362 364 _365_ _3*A_ 367 360 -

11 102 190 194

IJ 194 196 197 190 254 266 321 339 430

IJ3 9 ro > IK 339 340 341 430 431 434

D IN 247 240 251 255

- 59 -

Kl - m

κι 9 • m κι

9

I

M AX 8 155 159

MIN 8 155 159

MAX 8 157 160

KI 3°.7 338 339 342 344 428 429 . 430 437

KK 132 134 135 136 138 321 325 326

KKX 138

KM 125 127 132 ST 207 208 209 210 211 212 Z 331 370

L 84 85 86 105 1C6 107 108 109 110 114 116 126 128 13 137

LAMIN 141 191 261 330 420

LATID 18 10

LL 328 329

LM 314 317 321 460

LM1 316 317 459 t i LX 166 199 205

( ,'-) LY 167 200 206 - ι I MINO 155 157 I

~ '\ MMAX 181 226 228 229 231 232 233 234 ~ ) ιr-ι o

~ -l

MTIS 419 440 451

MX 465 469 470 472 479 401 MX2 466 470 475 476 402 404 2N 471 477 403 •

MXI 414 432 449 - ._. .. _ ... ,

MXIS 417 433 4«9 "

MXN 471 473 4Θ0 ,

MXNBL 26 51 . . . • .-

MYI 415 435 450

"YI3 410 436 450 σi

N 133 134 135 136 .20?.. ..203 273 274 .270 - — - - - • ro

NANG 260 261 " 330 420

NANGLE 107 229 234 236 ,

NAT 26 36 30 56 123 124 141 . 236 NB4 169 320 329 375 300 410 423 441

N3R 10 116 337 420

NMM 421 426 442 449 450 451

NN 81 83 89 102 117

NP 18 10 37 52 57 61 68 69 81 121 143 145 168 195

217 264 306 314 460

NP2 121 122

NP2CD 122 136 182 190 254

NP3 61 62 65 67

NP8 168 257 258 464 485 489 494 525 530 536

NPCD 62 73 76 126 137

NPK 37 38

NPOS 18 228 233 247 248

NRIV 51 52 80 103 114 116 169 313 315 336 370

NRIVS 80 84 86 95 98 99 tf) NSS 222 224 225 227

NX 155 156 161 163 166

I i NX1 163 165 o NXMAX 26 155

., .-1 r> i NXT1 165 178 179 221 235

-J

I * » 1 π e »: H

-I

NY 157 158 162 164 167 250

NY1 164 165 207 209 212 247 248

NYMAX 26 157

P 18 10 57

PA 18 9 26 134 135 197 198. 270 271 325 326 340 341 431

434

06 1

122 257 250

15 65 67

25 73 7b

260 204 214

275 203 205 206 213 21 6

2703 291 300

2706 200 292 -* 9 .? _30t

279 200 ' 303 "

200 27 ? <\ 2 204 206 302 305

30 126 157

500 ' 192 " 145 214 217

390 04 06

399 225 231

40 133 156

400 221 224 230 235

500 107 236

601 249 252 - 66 -

620 95 98

65 39 147

650 96 100

750 89 93 94 102

760 104 113

770 105 106 no

780 114 116

799 m 114

800 83 117

8030 43 46 50

810 328 329

820 361 365

825 359 364

830 356 366 35 358 363 367 45 343 347 350 352 354 356 364 369 50 331 336 338 346 370 55 377 407 58 379 381 ' 383 386 395 400 60 382 387 62 389 393 64 388 396 402 65 387 401 66 401 403 68 380 408 70 375 376 392 410 80 423 425 429 441 85 444 449 90 448 458 95 316 459 98 314 318 460 0 143 145 05 469 475 10 467 474 475 478 15 468 479 20 464 479 482 485 25 491 524 30 493 495 497 500 509 515 35 496 501 37 504 . 510 0 503 ' 507 519 5 502 510 6 511 517 8 501 516 0 516 519

- 6 7 -

52 518 520

60 489 490 494 506 525

70 530 531 536

90 243 537 539

92 242 540

RGS 10

RRAY 8 ATGP 11

VMAT 0 360 377 535 719 1669 1695 1228

LOTAG 9

- 68 -

APPENDIX II

NAME PROGRAM VARIABLES - DESCRIPTION

ASFP θ Scale Factor for Minutia Pairing Distance

COUNT(2500) Registration X, Y Histogram

DELTH _ angle between rotations in Units of 1.40625 degrees each

DDX Minutia X, Y tolerance values for neighborhood scoring

DELX Minutia X, Y cell size for print registration

DX Tolerance values for minutia pairing

DPX X offset to exactly overlay a registered search minutia with its mating file minutia

DPY Y offset to exactly overlay a registered search minutia with its mating file minutia

ERAA Minutia Angle tolerance for print registration

ERAB Minutia Angle tolerance for neighboring pairing

ERAM Minutia angle tolerance for minutia pairing

F(612) Sorted file minutia X, Y, θ values

HIT(1632) Array of mating file and search minutia

IFLAG Switch, if = 1, then search data is ready

IXMAX Maximum X value of file minutia set

IXMIN Minimum X value of file minutia set

IYMAX Maximum Y value of file minutia set

IYMIN Minimum Y value of file minutia set

ICXF X Coordinate of minutia pattern center for file minutia set

ICYF Y Coordinate of minutia pattern center for file minutia set

IANS Maximum value of registration histogram

ISCORS Match score for a given registration histogram maximum

ISCOR Final match score (maximum of ISCORS values)

- 69 -

APPENDIX II (CONTINUED) NAME PROGRAM VARIABLES - DESCRIPTION

ASFP θ Scale Factor for Minutia Pairing Distance

C0UNT(2500) Registration X, Y Histogram

DELTH m . angle between rotations in Units of 1.40625 degrees each

DDX Minutia X, Y tolerance values for neighborhood scoring

DX Minutia X, Y cell size for print registration, tolerance values for minutia pairing

DPX X offset to exactly overlay a registered search minutia with its mating file minutia

DPY Y offset to exactly overlay a registered search minutia with its mating file minutia

ERAA Minutia Angle tolerance for print registration

ERAB Minutia Angle Tolerance for Neighboring Pairing

ERAM Minutia angle tolerance for minutia pairing

F(612) Sorted file minutia X, Y θ values

HIT(1632) Array of mating file and search minutia

IFLAG Switch, if = 1, their search data is ready

IXMAX Maximum X values file minutia set

IXMIN Minimum X values file minutia set

IYMAX Maximum Y values file minutia set

IYMIN Minimum Y values file minutia set

ICXF X Coordinate of minutia pattern center for file minutia set

ΣCYF Y Coordinate of minutia pattern center for file minutia set

IANS Maximum value of registration histogram

ISCORS Match score for a given registration histogram maximum

ISCOR Find match score (maximum of ISCORS values)

cr rr: OMFI

: -.—, i V IFO

- 70 - APPENDIX II (CONTINUED)

NAME PROGRAM VARIABLES - DESCRIPTION

ISTAB Array Containing Score Table IJ Pointer to PA array for best set of rotated search minutia *IEOT Early out threshold IETP Distance Tolerance for minutia pairing ITSX Scaled Variance of Matching Neighboring Minutia

ISCTVR(500) Score Table ISCORV Individual Minutia Score JXMIN X Coordinate of Lower Left Corner of File Minutia Pattern JYMIN Y Coordinate of Lower Left Corner of File Minutia Pattern JSCOR Number of matching neighbors for a particular search minutia KF(700) Array of file minutia that are mated with search minutia LX 1/2 width of effective file minutia pattern area LY 1/2 height of effective file minutia pattern area

LAMIN Maximum angle bias for search minutia angles NHIT(48) Array of file minutia mating with neighbors of a given search minutia

MMAX Number of axi ums in registration histograms

NB4 Number of neighbors to use times 4

NF Number of file minutia

NMAX(5) Array of best rotation for registration

NAT Number of search print rotations to use

NF3 3 Times the number of file minutia

NRIV Number of neighbors to use for neighborhood scoring

NP Number of search minutia

- 71 - APPENDIX II (CONTINUED)

NAME PROGRAM VARIABLES - DESCRIPTION

NBR(2040) Neighbor array

NX Count array size in X (Number of cells to use in count array in X direction) NMM Number of matching neighbors NY Count array size in Y (number of cells to use in count array in Y direction) NP8 Number of search minutia times 8 NXMAX Maximum number of count array cells in X direction NYMIN Maximum number of count array cells in Y direction P(612) Unsorted search minutia PA(2040) Rotated search minutia X, Y values PAA(204) Search minutia angle values R40STB Disk file containing score table S(612) Sorted Search Minutia SS(612) Sorted, Centered, Search Minutia XOF X offset to overlay search minutia on file minutia for registration histogram maximum YOF Y offset to overlay search minutia on file minutia for registration histogram maximum