Wednesday, March 4, 2009

Result for a small scale database

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 Algorithm

First, 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 Result

Let'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:
  1. The role of preprocessing
  2. 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 effects

This 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

Tuesday, February 24, 2009

Going to try out Libfprint

Because of the problems and lack of features in the SDK for sensor a, we will be using a different open source fingerprint system. The open source code we will be working with is called fprint, which can be downloaded from http://reactivated.net/fprint/wiki/Main_Page. Specifically, we will be using the libfprint feature which does the fingerprint processing for the code. We will be setting up the feature on a Linux platform, then hopefully we will be able to run our data to retrieve the results needed for the ROC curve.

Tuesday, February 17, 2009

Visual Description

So this is a basic visual description of how we are conducting our experiment with the fingerprint data set. The diagram shows the template buckets. Each bucket represents each individual participating in the experiment, thus each bucket will have a template fingerprint scan and also a series of pruned fingerprint scan.



The diagram below depicts the score buckets for our results. We will test each fingerprint scan within the same bucket with the template (the normal finger scan) and record the score and put it into the genuine bucket. Then we will test a template from one bucket with various combination of scans from other buckets (so A.template will be tested with B.template, B.pruned1, B.pruned2, ..., H.template, H.pruned1,...) and the result of this should be put into the impostor bucket.



The histogram below shows an ideal histogram for the results. The curve on the right basically represents the genuine scores, and the curve on the left is the impostor scores. This is an ideal case however, so real results may vary.

Monday, February 9, 2009

Small Scale Histogram Representation


This week, we did a small scale histogram analysis of our fingerprint samples in MATLAB. In other word, we chose an image from our fingerprint dataset and plotted its histogram which is simply a tonal distribution of the image.

Fig1. Histogram Distribution


The image above is a graphical representation of tonal variations versus the number of pixels in that particular tone. Furthermore, using histogram equalization we looked at the intensity distribution of the original versus contrast enhanced image. The result corresponding to histogram equalization is displayed in Fig2,3, and 4.


Fig2. Original Image vs. Intensity Image




Fig3. Histogram Representation of the Original Image


Fig4. Histogram Representation of the Intensity Image

Sunday, February 8, 2009

Sensor B in Action

This weekend, we were able to test Sensor B (generic TIR sensor). In comparison to our MSI sensor, the images are faded and not as significant. Below are some examples of the images





















So on the left is an enrollment of a fingerprint into its database. The sensor requires four different scans of the fingerprint. Then on the right is the verification process, which can be done recursively as many times as wanted. The panel on the right side will display whether the finger scan matched the enrolled fingerprint. Here you can see a number of VERIFIED messages, a few that did not register (the sensor did not sense a finger on the platen). And the last one is a failure (where the correct finger was placed but the sensor did not verify). The region that made contact on the platen was the tip of my finger.

TIR sensors are so picky....

There are certain conditions that TIR sensors require to get good quality images. These conditions are the following:
  • Good contact between the finger and the platen
  • Fingerprint features are well defined
  • Skin has a proper index of refraction
  • There is no water, oil or other contaminant on the platen

Below are some generic samples that were collected (using the fingerprint sensor described in Fingerprint Enhancement Using a Multispectral Sensor)


.

Further Analysis of TIR sensor technology

The source of light is generally from LED's (light emitting diodes) that are located on the left side of the prism. This light then reflects off of a diffuse reflective coating that is located on the right side, causing the upper region of the prism (the platen) to light up. If there is no finger placed on the platen, the light will reflect off the platen due to total internal reflectance. There is an imaging system in the lower left side, which will create the image of the top horizontal platen. So when a finger is placed on the platen, the light will cross the valley’s of the fingerprint and cause TIR at these “valley” like locations. So the image that is processed will have dark features where there is contact with the ridges, and lighter features where there is none.