Coarse Level Identification


The overall scheme for the coarse level identification of a fingerprint is shown in the flowchart below. Our goal is to try and classify the fingerprint into one of five categories: whorl, right loop, left loop, twin loop, or tented arch. This type of classification is fairly straightforward for the human eye; however, time limitations require that the system itself be able to identify a fingerprint's type. Thus, accomplishing the coarse level identification is a bit more complicated.

 

 

The first step in the classification algorithm is to compute a directional image of the fingerprint feature. We start by computing a direction for each pixel in the image. So, for each pixel, we use a pre-defined mask which quantizes the directions into 8 values around the point. We compute, using the sum of the pixel grayscale values around the point (slit sum), a "light" direction and a "dark" direction. We the define the "light" direction as the direction with the maximum sum of pixel values (larger grayscale values mean a lighter color) and the "dark" direction as the direction with the minimum sum of pixel values in that quantized direction. Then, based on whether the point of interest itself is a "light" point or "dark" point, we assign a direction to the pixel. The direction can be stored in three forms: as a slit sum direction, an angle, or a unit vector. The angle is the final desired measure of the direction, but we use the unit vector representation to operate on the directional field. Because the directions are quantized into 8 directions, we can not average them directly; thus, we use the vector representation to perform averaging or smoothing operations on the directional image and then recompute the angles from the unit vectors.

 

 

Once the initial directional image is computed, we immediately process the image to reduce small-scale variations. In order to accomplish this, the image is tiled into 2x2 boxes, and an average direction is found for each box. This is done to enhance and extract the large-scale directional features. After this is accomplished, identification is attempted. If identification fails, the image is further smoothed and classification is attempted again. This smoothing of the image is accomplished by simply applying a 3x3 averaging filter to the directional image and then extracting the center portion.

The classification of the fingerprint from the directional image itself has several steps. We traverse the entire directional image, pixel by pixel, to attempt to estimate the type of point the pixel represents. We want to classify each point in the image as an ordinary point, a core point, or a delta point.

 

 

For each point of interest, we traverse a counter-clockwise loop around the point and compute the sum of the angle changes. This index is known as the Poincare index. If this index is 180 degrees, the point is classified as a CORE point; if the index is near -180 degrees, the point is classified as a DELTA point. Otherwise, the point is labeled as "ordinary." In MATLAB, this concept is implemented by looping over 2x2 square box sections of the directional image and computing the Poincare index for each block.

Once all the points in the image are classified as core, delta, or ordinary points, we can classify the image as a whole. As seen in the figure above, different fingerprint types have different characteristic numbers of core and delta points. In addition, the exact type of fingerprint can be determined by finding the relative locations of these points. Once the type determination of the fingerprint is complete, a correlation based index can be computed to try and match the fingerprint sample with ones of a similar type in the database.

 


[Home] [Abstract][Background][Classification] [Correlation] [Results] [Conclusions][Code][References]