This week we explored different fingerprint algorithms (e.g. libfprint, SDKs of Sensors A & B, ...) to compare our fingerprint samples and compute a match score. We finally found a free novel texture-based
Automatic Fingerprint Authentication System (AFAS) proposed by Dr. JuCheng Yang from Chonbuk National University in Korea.
Brief Description of AlgorithmFirst, it pre-process a fingerprint image and enhances the image by
Short Time Fourier Transform (STFT) analysis. Then, a set of
invariant moment features, as a kind of texture features, are extracted from a Region of Interest (ROI) area based on the reference point from the enhanced fingerprint image. Each set of invariant moments contain seven invariant moments. Fingerprint verification is realized by Euclidean distance between the two corresponding features of the test fingerprint image and template fingerprint image in the database. This computation is illustrated by the equation below,
E = norm (invMoment_img1 - invMoment_img2)where E is the Euclidean distance, norm is the built function in MATLAB (i.e. norm(x) is the Euclidean length of vector x). We take the norm of the difference between the invariant moments of two images and that gives us a matching score between two fingerprint images.
Result
The following table illustrates the matching scores of fingerprint samples of the same individual. The samples include both normal and pruney fingerprint samples.
The scores in the diagonal is the Euclidean distance of the same image; hence, the magnitude is zero. The higher the score, the lower the similarities between the two images.
Due to lack of enough samples, we ran this algorithm for a combination of prints of both thumb and index fingers.
Pictorial Visualization of ResultLet's look at some of the scores above and see if they make sense. The maximum value (i.e. 10.34529) corresponds to the matching score between image 8 and image 9.
These two are pruney fingerprint samples of the index finger of the same individual that are taken on the same day. In other word, the amount of pruning and the fingerprint patterns should be identical. Now you may ask why the scores are high in this case. There are a couple of factors that we need to note in our analysis:
- The role of preprocessing
- The two different fingerprint registration techniques provided by SDK
Part of the preprocessing portion of the algorithm crops 320 x 240 images to 64 x 64 ; whereas the original image size in our database is 352 x 544. So we might have to assign a different size to our cropped images in order to get better result.
Second point refers to the two different methods to save fingerprint samples which could result in slight variations in the result.
Let's look at another interesting comparison and its corresponding score:
The images above correspond to the fingerprint samples of index finger of the same person taken on the same day. The match score provided by the algorithm for these two is 6.576957274! This is a high value considering the fact that it is the same finger and the same day. We think this is due to variations such as orientation in placement of the finger on the scanner as well as two different methods for registration and recording the samples.
Result for fingers with higher pruning effectsThis is the result for an individual who had the highest pruning effect among the entire volunteers. And the scores are as follows:
Next steps ?! We are a few steps away in our implementation from plotting ROC curves. The following steps are required before we proceed to ROC analysis.
- Develop a concrete labeling system
- Identify genuine vs impostor
- ROC curve