Final Project: Iris Recognition
CS342 Computational Photography
Ming Luo & Warren Jeng

Part I: Proposal

Proposal.m

Part II: Checkpoint #1

At this point, we were able to make a circle from 3 given points. This allowed us to get the circles for the pupil and the iris. We then found the 64 points from 8 different thetas ranging from 0-2pi and 8 differents radii ranging from 0-1. Using the pol2cart function, we converted those points to the cartesian ones in the image. We then use a double for loop to sum up the values for rho and phi having the same range as r and theta to find the bit codes. Positive values were 1 and negative values were 0. Adding the bits, we created a map that included all of them but the results looked wrong. Here is the image and codes:

encode.m
findcircles.m
irisDetection.m
normalization.m
pol2cart.m

Part III: Checkpoint #2

At this point, we could not figure out why the result looked like repeated patterns but we reduced the code by removing normalization and using matrices to store the values. By not looping through the entire integral, we cut the run time by 10 fold.

Part IV: Finished Project

Since Part 3, we trimmed our code and added a few new functions. We added the compare function which compares two coded irises and determines if they are a match. This uses a shift function that shifts the iris codes over by 2 columns to account for the different orientations the picture of the eye may be. Finally, we wrapped every function into a main one called irisMatching that simply takes in 2 eye pictures and determines if they are from the same person. Our project returns a 1 if it is a match and a 0 if it is not. We suspect there is still a problem with our code because it does not work as well as it's supposed to. We believe this is because we did not implement automatic search for the boundary of the pupil and iris, and instead manual clicked. This causes some error as seen in the panoramas project where automatic gives a much better result. For same eyes, the match rate was about 95%, and for different eyes the match rate is about 80%. However, we were unable to make the real numbers negative. Thus, being always positive, the match began at a 50% rate. Thus the difference lied only in the imaginary part. If we used the rate of only the imaginary part, the threshold of 70% as said in the paper would sustain and the code would work. We tested our code on this image.

This is the unwrapped iris:

This is the result:

irisMatching.m
4encode.m
4findcircles.m
4irisDetection.m
4pol2cart.m
compare.m
shift.m

Validate CSS Validate HTML