PCASYS

Name

pcasys -- fingerprint classifier demo, non-graphical version

Synopsis

pcasys [prsfile]

DESCRIPTION

Pcasys is the non-graphical fingerprint classifier demo program. It reads a sequence of image files, each depicting one box as scanned from a fingerprint card, and classifies each fingerprint, using a Multi-Layer Perceptron (MLP) or Probabilistic (PNN) Neural Network, to one of six pattern-level classes: Arch, Left loop, Right loop, Scar, Tented arch, and Whorl. The type of classifier MLP or PNN is chosen in the parameters file pcasys/parms/pcasys.prs. Pcasys optionally makes an output file, containing a results line for each fingerprint and a summary at the end showing the error rate and the "confusion matrix", and it optionally writes progress messages to the standard output.

The graphical version, pcasysx, is recommended as being much more interesting than this version. However, pcasys is suitable if (1) the X Window System, which pcasysx requires, is not installed, or (2) greatest classification speed is desired. (The graphical displays take a significant amount of additional time.)

Pcasys will look in the default location pcasys/parms for the default parameter files it needs. There are prototype and weights files in pcasys/weights/{mlp|pnn} that are needed by the MLP and PNN classifiers. If NFIS was installed in a location other than /usr/local/nfis the INSTALL_DIR in include/little.h will need to be changed and the code recompiled. Also, the current default location for the 2700 sample fingerprint images is test/pcasys/data/images. If the user wants to save disk space, these images could be left on a mounted CDROM and a link made from the images directory on the CDROM to the image directory where the software is installed.

OPTIONS

[prsfile]

A file containing one or more parameter values that are to override the default values. To find out what the parameters are, and as examples of the format of a parameters file, consult the default parameters files that pcasys reads, namely pcasys/parms/oas.prs and pcasys/parms/pcasys.prs which are described in the section PARAMETER FILES. Each line, in the parms file consists of a parameter name followed by a value; a pound sign indicates that the rest of its line is a comment. If pcasys is run with no argument, i.e. not specifying a user parameters file, then it uses the default values of all parameters.

PARAMETER FILES

pcasys/parms/oas.prs

Contains default values of the parameters that affect the making of orientation arrays (oas): these are the parms of the segmentor (sgmnt), the image enhancer (enhnc), the ridge-valley orientation finder (rors), the registration program (r92a), and the registration-implementing pixelwise orientations reaverager (rgar). The values used for these parms when making the oas used in optimizing the classifier should also be used when running the finished classifier. See the mkoas man page for more information about the parameters in this file.

pcasys/parms/pcasys.prs

Contains default values of the remaining parameters of pcasys. Also look at pcasys.mlp and pcasys.pnn for examples on using each classifier.

Default settings in pcasys/parms/pcasys.prs

network_type 2

Set classifier as (1) PNN (Probabilistic Neural Net) or (2) MLP (Multi-layer Perceptron).

trnsfrm_nrows_use 128

How many (first) rows of the transform matrix to use, and hence, how many features to make for the feature vector of each incoming fingerprint, and also how many (first) features to use of each prototype feature vector when running the classifier:

trnsfrm_matrix_file pcasys/weights/mlp/mlp_tmat.bin

File used by the demo to transform the orientation array of an incoming fingerprint into the low-dimensional feature vector that will be sent to the classifier.

cls_str ALRSTW

Class string used in graphics mode to display the ouput activations. Should be same size as number of outputs (ie. pnn_nclasses or number outputs in mlp_wts file). Must be some combination of "ALRSTW". For PNN, these must be the same classes as used in the prototype files and be in the same order as when the prototype were optimized.

pnn (Probabilistic Neural Net) parameters:

pnn_nprotos_use 24300

How many first feature vectors to use, from the set of prototypes. The value 24300 corresponds to the entire provided set, corresponding to volumes 1 - 9 "f" rollings of Special Database 14.

pnn_nclasses 6

How many different classes there are. For the fingerprint pattern-level classification problem, there are 6: A, L, R, S, T, and W.

pnn_osf 1.368750

Overall smoothing factor for the PNN. May be optimized using optosf.

pnn_protos_fvs_file pcasys/weights/pnn/profvs.bin

Prototype feature vectors file.

pnn_protos_classes_file pcasys/weights/pnn/procls.asc

Prototype classes file.

MLP (Multi-layer Perceptron) network parameters:

mlp_wts_file pcasys/weights/mlp/mlp_wts.bin

MLP weights file.

Parameters used by the pseudoridge tracer:

pseudo_slthresh0 0.0

If squared-length of an orientation vector (in the fine grid used by pseudo) is < this value, then the vector is zeroed before the (possible) application of smoothing iterations.

pseudo_slthresh1 0.04

If, after (possible) smoothing iterations, the squared-length of an orientation vector is < this value, then this location is marked as bad, meaning that no pseudoridge is allowed to start here and if one arrives here, tracing stops at this point.

pseudo_smooth_cwt 0.0

Center-weight for each iteration of smoothing of the orientation grid. An iteration consists of replacing each vector with the weighted average of itself and its four neighbors, with itself getting this much weight and its neighbors equally dividing the remaining weight (sum of weights is 1).

pseudo_stepsize 1.0

Length of one step in the production of a pseudoridge, which is actually a polygon. A value of 1. corresponds to the spacing between vectors in the (finer) orientation array used by pseudo.

pseudo_max_tilt 45

Max allowed tilt of a candidate concave-upward's vertex (point of sharpest turning) from a horizontal that corresponds to exact uprightness. In degrees.

pseudo_min_side_turn 70

Minimum cumulative turn that each side of concave-upward must have. In degrees.

Limits for the block of starting positions in pseudoridge tracing:

pseudo_initi_s 11

Small limit, vertical. (TOP)

pseudo_initi_e 46

Large limit, vertical. (BOTTOM)

pseudo_initj_s 11

Small limit, horizontal. (LEFT)

pseudo_initj_e 50

Large limit, horizontal. (RIGHT)

pseudo_maxsteps_eachdir 200

Maximum number of steps that tracer ever takes in either of the two directions from starting point. (Controls the amount of memory needed to store a pseudoridge, and more importantly, such a limit is needed to prevent possible infinitely looping pseudridges in some whorls.)

pseudo_nsmooth 3

How many iterations of smoothing.

pseudo_maxturn 40

Maximum turn that is allowed to occur in a single step (in degrees). An attempted turn sharper than this causes tracing to stop.

Used by the combine routine.

combine_clash_confidence .9

This is the confidence value combine assigns if pseudo finds a concave-upward (causing hyp class to be whorl) but PNN thinks the print is not a whorl:

PCASYS I/O parameters.

demo_images_list pcasys/parms/first20.txt

List of fingerprint images to run the demo on. The default list here lists the first 20 fingerprints of the provided demo set, which consists of the 2700 fingerprints of volume 10 "s" rollings of NIST Special Database 14. pcasys/parms/all.txt list all 2700 files.

outfile pcasys.out

Output file to be produced. If no output file is wanted, set this to /dev/null.

clobber_outfile n

If n, then if outfile already exists, exit with an error message. If y, then overwrite outfile if it already exists.

verbose y

If y, then write progress messages to stdout.

EXAMPLE(S)

From test/pcasys/execs/pcasys/pcasys.src:

% pcasys Runs the pcasys demo using the default settings found in pcasys/parms/pcasys.prs.

% pcasys myprsfile Runs the pcasys demo using parameters set in myprsfile to change the value of the default settings.

SEE ALSO

pcasysx (1A)

AUTHOR

NIST/ITL/DIV894/Image Group