You might want to take a look at this similar question.
[kccrosser] As one of the original responders, let me expand a little.
First, you should become familiar with the BioAPI, which is the relatively recent standard for capturing and comparing biometric source data (including fingerprints, iris scans, hand geometry scans, etc., etc.).
Most biometric scanner manufacturers should now be offering BioAPI compatible drivers with their devices.
For handling fingerprints, the process is usually:
Capture – scan a print
Quality check the scan – (the device/drivers should give you a “quality” number indicating whether the scan should be usable or not)
Repeat capture and quality check until a scan of sufficient quality is achieved.
Feature extraction – convert the scanned image data into a set of “minutiae”, which identifies the relative locations and orientations of common fingerprint features (whorls, loops, bifurcations, etc.).
Minutiae match – compare two or more sets of minutiae files and return a “score” indicating the closeness of the match.
The next level of functionality is to do “enroll” (take a good quality scan and minutiae set and record it with associated demographic information ).
Depending on the vendor and software library offered, the system may also have a “find” match function that will return a “best match” set of results against a previously recorded set of “enrollments”.
With this set of functions, it is pretty easy to do a limited fingerprint “verification” or “positive identification” application, where you check whether a new scan matches a specific known previously recorded scan.
Implementing a general purpose identification system using fingerprints is a much larger and more complex task. For true identification by fingerprint, most systems require at least two different fingers to be enrolled and checked. Commercial fingerprint identification systems from Identix, Morpho, Printrak, NEC, Cogent, and others have numerous PhD’s continuing to work on the feature extraction and matching algorithms.