EE435: Biometric Signal Processing Project 10, Part 2: Iris Matching

advertisement

EE435: Biometric Signal Processing

Project 10, Part 2: Iris Matching

Assigned: Thurs 3/27/14 Due: Fri 4/04/14

I. Background

This part of project 10 will introduce you to the common way that matching is performed in iris recognition. The templates/masks you will use have been created using a version of the Daugman algorithm in MATLAB created by a grad student named Libor Masek.

Recall that in Daugman’s algorithm, any iris enrolled in the database has two pieces of information stored. The first is the template, which is a binary array that represents the descriptive features of the iris…much like a pattern vector except it is a two-dimensional array. The second piece of stored information is the mask, which specifies the portions of the template array that is corrupted by noise (such as eyelashes, eyelids or glare) and should not be used when comparing two irises. The mask is used to ensure that only valid bits are compared.

The fractional Hamming distance is the fractional amount of bits that differ between two iris templates, but only among bits that count (that is, don’t count bits that are corrupted by noise like eyelids or eyelashes or glare). The mathematical definition for the fractional Hamming distance is:

HD =

(

⊗ template B

)

mask A

mask B

mask A

mask B

.

Here, template A and template B are the extracted features of any two irises. The ⊗ operator is the exclusive-or operation to detect disagreement between the pairs of bits in the two templates, and mask A and B identify the values in each template that are not corrupted by artifacts such as eyelids/eyelashes and specularities. The || • || is simply used to sum the number of 1-bits in its argument. The denominator ensures that only the bits that matter are included in the calculation, after artifacts are discounted.

The fractional Hamming distance serves as a measure of recognition performance, as it is used to determine if identification has been made. A value of HD = 0 indicates a perfect match between the irises (which can really only happen when comparing identical iris images), while typically a Hamming distance of ≤ 0.32 allows identification with high confidence. The value 0.32 is typically used as the threshold for recognition.

1.

Write a MATLAB function called ColumnShift that will take an input array and rotate it to the right by a certain number of columns along the column. That is, if the input array is to be shifted 3, the 3 rightmost columns will be lopped off and added to the left edge. This function does NOT use loops.

Usage for ColumnShift : y =ColumnShift(x,cols);

Inputs: x is the input array that will be shifted. cols is number of columns that x will be shifted to the right. If cols is negative, the array will actually be shifted to the left. If cols = 0, there is no shift and the input is returned unchanged.

Outputs: y is the column-shifted input array, and is the same size as the input array.

Error checking: The input should be a 1- or 3-plane (so you could actually use it on a binary, grayscale or color image). If not, the output should be null and an error message should appear in the command window. The value of cols should be an integer; if it is not, it should be rounded to an integer and a warning message displayed.

Try your ColumnShift function out on any image…it should work on a color or grayscale…to ensure that it works correctly.

2.

Write a MATLAB function called HD that can compute Hamming distance between two iris templates. This function will perform the calculation listed in the above equation, and will also report the number of bits that were actually valid in the computation.

Usage for HD :

[ hd,N]=HD(template1,mask1,template2,mask2,shifts);

Inputs: template1 / mask1 template2/mask2 represent the two irises that are being compared (after having been read into MATLAB using imread ). shifts is the total number of column shifts that one of the templates/masks will go through BOTH left and right in order to account for head tilt in the iris images (that is, one template/mask will be shifted both left and right by 1, 2, … shifts columns).

Outputs: hd is the computed fractional Hamming distance, and N is the number of valid bits in the comparison.

Error checking: the templates and masks must be binary (1 plane of data), and must all be the same dimensions. If not, the output should be null and an error message should appear in the command window. The value of shifts should be an integer between 0 and 20.

Note: This function does NOT use loops to implement the above HD equation, but you should use a for loop to do the column shifting with your ColumnShift function…the loop can go from –shift to +shift. As part of this loop, you must store the minimum Hamming distance found as well as the number of valid bits for that Hamming distance. The output value of hd is the minimum HD found when doing the shifts. The number of valid bits is important because if you wind up comparing too few bits, the comparison cannot be trusted (e.g., if you wind up only comparing 1 bit between two irises, and your Hamming distance is 0, do you call this a match?). The minimum number of bits in a Daugman system is on the order of 900 bits.

Important: Assume that in the masks, that valid bits are indicated by logic 1 (vice logic 0).

Note: it is a relatively simple matter to test your HD function, by creating small binary arrays (such as the ones in the notes I provided you) and ensure that the HD value your function computes is correct.

3.

Download the iris templates and associated masks from the course website. Using the code you created in this project, fill out the table below with the Hamming distance for each comparison using a shift value of 15 (i.e., one template/mask will be shifted from 15 columns to the left to 15 columns to the right, and Hamming distance and valid bits computed for each. Note that you do not have to compare any particular iris template with itself (since the

Hamming distance should be 0), and if you compare template A with template B, you don’t need to compare template B with template A since you’d get the same Hamming distance.

In your table, with a recognition threshold of 0.32, circle the scores that would be identified as a match (i.e., from same iris).

059_1_1 059_1_3 059_2_2 060_1_1 061_1_2

059_1_1

059_1_3

059_2_2

060_1_1

061_1_2

For this project, turn the code for your functions (hardcopy), and fill out the above table.

Download