Due: 11/13/15 at 11:59PM Eastern Time

Objective: Distinct from the face recognition pipeline we examined in the first two assignments, iris recognition incorporates several elements from image processing and computer vision including segmentation, filtering, signal coding and hamming distance calculation. Using a set of iris data collected at Notre Dame, we will step through the enrollment and matching process for a well-known implementation of a Daugman-like algorithm. By the end of this assignment, you will be able to identify good and bad iris pairs, representing a number of different factors we have discussed in class.

Grading: You will be graded based on the code you develop, plus your answers to the following questions. Similar to the last two assignments, you will not be graded on iris recognition performance, but rather on the analysis of its capabilities. This assignment is worth 175 points.

Task 1: Setup environment and download code

  1. You will need a working MATLAB environment to complete this assignment, which can be obtained freely through the university.
  2. Download and unarchive Libor Masek's open source iris matching code.
  3. A detailed description of the implementation is provided in Masek's thesis, which you should look over. The two key functions you will need to call are createiristemplate.m and gethammingdistance.m

Task 2: Download the data

  1. Download and unarchive the data set for this assignment. The username and password for the download was provided in class (email Sreya for the credentials if you do not have them). The data is arranged as pairs of irises from a single subject (50 subjects total) for the same eye, where filenames follow the format of subject_(subject id)_(iris id).tiff.
  2. Also download the genuine_impostor_pairs.txt file containing the genuine and impostor pairings for the experiment. The first 50 lines reflect the genuine pairs, and the remaining 500 lines reflect the impostor pairs. The impostor pairs were generated by randomly sampling pairs of non-matching iris images from the data set. Thus, all of the image data you need is in the 100 images of the data set.

Question 1: Take a look at the images in the data set. What potential problematic conditions mentioned in class can you find?

Task 3: Enrollment

  1. Write a script to enroll all of the images in the data set. Enrollment will also produce diagnostic images that show the results of segmentation, noise masking and iris coding.
  2. Run your script to generate .mat files that can be loaded rapidly on subsequent calls to createiristemplate.m

Tip #1: Depending on your version of MATLAB, you may need to re-arrange the file layout to fix broken function call dependencies.

Question 2: From the diagnostic images, find some examples of poorly segmented irises. Given what you learned about the segmentation algorithm from Masek's thesis, why do you think these problems are occuring?

Task 4: Matching

  1. Write a script to generate matching scores from all 550 pairs of irises in genuine_impostor_pairs.txt. Make sure you can map back from these scores to the iris pairs they came from so you can answer the following questions.

Tip #2: The last argument to gethammingdistance.m is the number of filters used to encode the templates. If you have not changed any of the encoding parameters hardcoded in createiristemplate.m, this argument will be "1".

Question 3: Calculate the mean and standard deviation for the genuine and impostor score distributions. By how much do they differ?

Task 5: Analysis of Distributions

  1. Using MATLAB, plot two Gaussian distributions defined by the parameters you calculated in Question 3. Put both distributions on the same graph so you can compare them.

Question 4: Now that you have seen the overlap between the the genuine and impostor distributions, would you characterize this data set as being easy or difficult?

Question 5: Find the lowest scoring genuine pair. Why do you think this pair matched well?

Question 6: Find the highest scoring genuine pair. Why do you think this pair matched poorly?

Question 7: Find the lowest scoring impostor pair. Why do you think this incorrect pairing matched well?

Question 8: Find the highest scoring impostor pair. Why do you think this incorrect pairing showed good separation?

Question 9: Based on your knowledge from the lectures in Unit 4, and any additional research you've performed for this assignment, what do more recent implementations of iris algorithms do to compensate for the problems you've encountered here?

Deliverables. Submit the following files to receive full credit for this assignment:

  1. All source code you developed (MATLAB scripts to run experiments and perform analysis).
  2. A PDF report including:
    • The genuine and impostor distribution plot from Task 5.
    • The answers to Questions 1-9. Include example images for questions requesting an analysis of images.

Have questions about this assignment? Ask them! If globally applicable, your question and its answer will be posted to the course website for others to see.

Tip #3: Start early! If you run into trouble with your development early on, having ample time for debugging will help.


Q: Do we have to write any pre-processing or normalization code before enrollment?

A: No. You can rely on the pre-processing routines of Libor Masek's enrollment code.

Q: Is there a mistake in the documentation of the gethammingdistance.m function? The provided function usage appears to be for the template generation function.

A: Yes, this is a mistake in the header. The description of the parameters is correct though, and you can figure out the usage by looking at the function call in the code.

Q: Can I submit my assignment after the deadline?

A: We will consider late submissions. However, there will be a penalty of 10 points per day you are late, which will be automatically subtracted from your total score.