This chapter does not appear in the book.
Fingerprint recognition is becoming a familiar part of business due to the need to reliably identify people in a convenient and low-cost manner. A good optical print reader cost around US$100, and only requires the user to press a finger tip against a plastic plate above a CCD.
But this book is about the wonderful webcam, so is it possible to build a recognizer using a camera as an input device? The answer, at least for my dusty old webcam, is 'not directly'. It proved incapable of accurately focusing on a finger held close to its lens, and couldn't pick up the fingerprint's dark lines (ridges).
My somewhat unsatisfactory solution is to use pencil graphite and sticky tape to transfer an impression of my fingertip onto paper (e.g. as explained here). I photocopied the paper, enlarging the image, so my webcam could adequately focus on it.
My application for converting a fingerprint into a template is shown at the top of the page.
As I'll explain shortly, a fingerprint template is a collection of numerical data about the position and orientation of certain types of ridges in a print.
The Templater application consists of three panel: the left one shows the current webcam image, and a yellow border around the identified fingertip, and two other panels for the extracted fingerprint image, and a drawing of the template data.
There's a separate Matcher application (shown on the right) for comparing a test fingerprint template with other templates to determine the closest match.
The test template is drawn in the left-hand panel, the matching scores are presented in the text area, and the best matching template rendered in the panel on the right.
The Templater and Matcher applications are shown as flow diagrams shown below.
Templater utilizes JavaCV to improve the quality of the webcam image, and to narrow in on the fingerprint. The techniques utilized include equalization, adaptive thresholding, and masking to eliminate noise around the print.
The fingerprint processing operations (i.e. for thinning, template creation, and matching) come from Scott Johnston's Biometric SDK.
Before going into the details of the two applications, I'll start by reviewing a few basic ideas in fingerprint classification, especially the use of minutiae.