Motivation behind Iris Detection
Passwords are Bad
Pin numbers, email passwords, credit card numbers, and protected premises access numbers all have something in common. All of them are a key to your identity, and all of them can easily be stolen or guessed after reading the first few pages of "Identity Theft for Dummies".
Currently users have been encouraged to create strong passwords for every different domain. This leads to some logical problems. People tend to forget multiple, lengthy and varied passwords, therefore, they use one strong password for everything. This only allows the successful thief to gain access to all the protected information. The other option which follows is to carry a hard copy of each password which again can only be a reward for the quick pick-pocket.
Only recently have companies started to use biometric authentication to protect access to highly confidential assets. You may be familiar with some of the physical traits used by biometric authentication programs such as fingerprints and retinas. Other traits that can be measured include the voice, face, and the iris. For most people, these are only high-tech gadgets simulated in hollywood. However, this technology is very real and is currently being used in the private sector. One method of particular interest is the use of iris codes to authenticate users.
Enter: Iris Detection
Iris detection is one one of the most accurate and secure means of biometric identification while also being one of the least invasive. Fingerprints of a person can be faked--dead people can come to life by using a severed thumb. Thiefs can don a nifty mask to fool a simple face recognition program. The iris has many properties which make it the ideal biometric recognition component.
The iris has the unique characteristic of very little variation over a life's period yet a multitude of variation between individuals. Irises not only differ between identical twins, but also between the left and right eye. Because of the hundreds of degrees of freedom the iris gives and the ability to accurately measure the textured iris, the false accept probability can be estimated at 1 in 10^31. Another characteristic which makes the iris difficult to fake is its responsive nature. Comparisons of measurements taken a few seconds apart will detect a change in iris area if the light is adjusted--whereas a contact lens or picture will exhibit zero change and flag a false input.
Iris Recognition: Detecting the Pupil
Acquiring the Picture
Beginning with a 320x280 pixel photograph of the eye taken from 4 cenimeters away using a near infrared camera. The near infrared spectrum emphasizes the texture patterns of the iris making the measurements taken during iris recognition more precise. All images tested in this program were taken from the Chinese Academy of Sciences Institute of Automation (CASIA) iris database.
Edge Detection
Since the picture was acquired using an infrared camera the pupil is a very distinct black circle. The pupil is in fact so black relative to everything else in the picture a simple edge detection should be able to find its outside edge very easily. Furthermore, the thresholding on the edge detection can be set very high as to ignore smaller less contrasting edges while still being able to retrieve the entire perimeter of the pupil.
The best edge detection algorithm for outlining the pupil is canny edge detection. This algorithm uses horizontal and vertical gradients in order to deduce edges in the image. After running the canny edge detection on the image a circle is clearly present along the pupil boundary.
Image Clean Up
A variety of other filters can be used in order decrease the extraneous data found in the edge detection stage. The first step in cleaning up the image is to dilate all the edge detected lines. By increasing the size of the lines nearby edge detected components are likely to coalesce into a larger line segment. In this way complete edges not fully linked by the edge detector can form. Thus the dilation will give us a higher probability that the perimeter of the pupil is a complete circle.
Knowing that the pupil is well defined more filters can be used without fear of throwing out that important information. Assuming the image is centered a filter can be used to fill in the circle defined by the pupil's perimeter. In this way we clearly define the entire area of the pupil. After this, a filter which simply throws out sections of connected pixels with an area below a threshold can be used effectively to throw out smaller disconnected parts of the image the edge detector found. Finally, any holes in the pupil caused by reflections or other distortions can be filled, by looking for sections of blank pixels with an area below a threshold. After this processing we achieve a picture that highlights the pupil area while being fairly clean of extraneous data.
Pupil Information Extraction
Having pre-processed the image sufficiently the extraction of the pupil center and radius can begin. By computing the euclidean distance from any non-zero point to the nearest zero valued point an overall spectrum can be found. This spectrum shows the largest filled circle that can be formed within a set of pixels. Since the pupil is the largest filled circle in the image the overall intensity of this spectrum will peak in it.
In the pupil circle the exact center will have the highest value. This is due to the simple fact that the center is the one point inside the circle that is farthest from the edges of the circle. Thus the maximum value must correspond to the pupil center, and furthermore the value at that maximum (distance from that point to nearest non-zero) must be equal to the pupil radius.
Iris Recognition: Detecting the Iris
Iris Detection
With the information on the pupil discovered the location of the iris can now begin. It is important to note that the pupil and iris are not concentric. Consequently, the pupil information does not help directly determine the same parameters for the iris. However, the pupil information does give a good starting point, the pupil center.
Most modern iris detection algorithms use random circles to determine the iris parameters. Having a starting point at the pupil, these algorithms guess potential iris centers and radii. They then integrate over the circumference in order to determine if it is on the border of the iris. While this is highly accurate the process can consume a lot of time. This module explains an alternate approach which is much more lightweight but with higher error rates.
Iris Radius Approximation
The first step in finding the actual iris radius is to find an approximation of the iris radius. This approximation can then be fine tuned to find the actual iris parameters. In order to find this approximation a single edge of the iris must be found. Knowing that eyes are most likely to be distorted in the top and bottom parts due to eyelashes and eyelids, the best choice for finding an unobstructed edge is along the horizontal line through the pupil center.
Having decided on where to attempt to detect the iris edge, the question of how to do it arises. It seems obvious that some type of edge detection should be used. It happens that for any edge detection it is a good idea to blur the image to subtract any noise prior to running the algorithm, but too much blurring can dilate the boundaries of an edge, or make it very difficult to detect. Consequently, a special smoothing filter such as the median filter should be used on the original image. This type of eliminates sparse noise while preserving image boundaries. The image may need to have its contrast increased after the median filter.
|
Now that the image is prepped the edge detection can be done. Since there is such a noticeable rising edge in luminescence at the edge of the iris, filtering with a haar wavelet should act as a simple edge detector. The area of interest is not just the single horizontal line through the iris, but the portion of that line to the left of the pupil. This is so that the rising luminescence from the transition from iris to white is the only major step.
|
The iris should represent the steepest luminence change in the area of interest. Consequently, this area of the image should correspond to the highest valued componenet of the the output from the filter. By finding this maximal value the edge of the iris to the right of the pupil should be found. It should be noted that since the iris may not be concentric with the pupil the distance from the pupil center to this edge may not correspond to the iris' radius.
Iris Translation
Having acquired an approximate radius, a small pad of this value should produce a circle centered on the pupil which contains the entire iris. Furthermore, with the perimeter of the pupil known, an annulus may be formed which should have the majority of it's area filled by the iris. This annulus can then be unrolled into cartestian coordinates through a straight discretized transformation. (r --> y, θ --> x) The details of this procedure are described in Step 3.
If the iris is perfectly centered on the pupil, the unrolled image should have a perfectly straight line along its top. However, if the iris is off center even a little this line will be wavy. The line represents the overall distance the iris is at from the pupil center. It is this line which will help to determine the iris' center and radius. Consequently, an edge detection algorith m must be run on the strip in order to determine the line's exact location. Once again canny edge detection is used. However, before the edge detection can be run the image should undergo some simple pre-processing to increase the contrast of the line. This will allow for a higher thresholding on the edge detection to eliminate extraneous data.
|
Iris Information Extraction
In order to extrapolate the iris' center and radius, two chords of the actual iris through the pupil must be found. This can be easily accomplished with the information gained in the previous step. By examing points with x values on the strip offset by half of the length of the strip a chord of the iris is formed through the pupil center. It is important to pick the vectors for these chords so they are both maximally independent of each other, while also being far from areas where eyelids or eyelashes may interfere.
|
The center of the iris can be computed by examining the shift vectors of the chords. By looking at both sides of a chord and comparing their lengths an offset can be computed. If the center was shifted by this vector it would equalize the two components of the chord. By doing this with both of the chords two different offset vectors can be computed. However, by just shifting the center through both of these vectors some components of shift will be overcompensated for due to the vectors not being orthogonal. Thus, the center should be shifted through the first vector, and the orthogonal component of the second to the first.
The diameter of the iris can now be estimated by simply averaging the two diameters of the chords. While this is not a perfect estimate, that would require a single chord through the iris center, it is a very good approximation.
Possible Improvements
Currently the algorithm only examines two static vectored chords. While these were chosen to work best within the maximal orthogonality and minimal eyelash/eyelid interference constraint there are still many cases where they do not work. It is possible for someone to have the entire upper half of their iris covered and still have the rest of the iris code generation work since less then half of the iris surface is needed for an identification. Of course, if half of the eye is shut the chords will not intersect the iris edge and no result will occur. Instead of these static vectors for chords, an adaptive algorithm could be used which starts from the eye center and works progressively through angles to find points near the eyelid interference region. In this case the orthogonality would be maximized for that eye while still finding points on the iris edge.
Most modern iris detection algorithms produce what is known as an iris mask. This mask represents the portion of the iris obstructed by the eyelid or eyelash. This portion can then be ignored when doing the iris code comparison. In this way a user is not penalized for blocking a portion of their iris in the overall authentication. This takes advantage of the need for only a fraction of the iris for identification. The algorithm described in this module does not currently produce a mask. One way in which a mask could be produced is during the iris extrapolation. After unrolling the iris the presence of discontinuities in the line across the top the eyelids or eyelashes could be detected and a mask could be returned showing them. Another way a mask could be generated is through the running of a edge detector around the edge of the computed iris. In this way all sections of the perimeter which are messy could be found and masked.
Iris Recognition: Unwrapping the Iris
Why is unwrapping needed?
Image processing of the iris region is computationally expensive. In addition the area of interest in the image is a 'donut' shape, and grabbing pixels in this region requires repeated rectangular-to-polar conversions. To make things easier, the iris region is first unwrapped into a rectangular region using simple trigonometry. This allows the iris decoding algorithm to address pixels in simple (row,column) format.
Asymmetry of the eye
Although the pupil and iris circles appear to be perfectly concentric, they rarely are. In fact, the pupil and iris regions each have their own bounding circle radius and center location. This means that the unwrapped region between the pupil and iris bounding does not map perfectly to a rectangle. This is easily taken care of with a little trigonometry.
There is also the matter of the pupil, which grows and contracts its area to control the amount of light entering the eye. Between any two images of the same person's eye, the pupil will likely have a different radius. When the pupil radius changes, the iris stretches with it like a rubber sheet. Luckily, this stretching is almost linear, and can be compensated back to a standard dimension before further processing.
The unwrapping algorithm
In figure1, points Cp and Ci are the detected centers of the pupil and iris respectively. We extend a wedge of angle dθ starting at an angle θ, from both points Cp and Ci, with radii Rp and Ri, respectively. The intersection points of these wedges with the pupil and iris circles form a skewed wedge polygon P1 P2 P3 P4. The skewed wedge is subdivided radially into N blocks. and the image pixel values in each block are averaged to form a pixel (j,k) in the unwrapped iris image, where j is the current angle number and k is the current radius number.
For this project, the standard dimensions of the extracted iris rectangle are 128 rows and 8 columns (see Figure 4). This corresponds to N=128 wedges, each of angle
2π |
128 |
P1=Cp+Rp(cos(θ)−sin(θ)) P2=Cp+Rp(cos(θ+dθ)−sin(θ+dθ)) P3=Ci+Ri(cos(θ)−sin(θ)) P4=Ci+Ri(cos(θ+dθ)−sin(θ+dθ))
Pa=P1(1−
k |
N |
P3k |
N |
k+1 |
N |
P3(k+1) |
N |
k |
N |
P4k |
N |
k+1 |
N |
P4(k+1) |
N |
|
Masking of Extraneous Regions
Subfigure 2.2 demonstrates a high-resolution unwrapping. Note the large eyelid regions at the top and bottom of the image. These are the areas inside the iris circle that are covered by an eyelid. These regions do not contain any useful data and need to be discarded. One way to do this is to detect regions of the image that are unneeded and note the position of pixels within the region. Then, when the iris pattern is decoded and compared to another image, only regions that are marked "useful" in both images are considered.
A less robust method of ignoring the eyelid regions is to extract the inner 60% of the region between the pupil and iris. This assumes that an eyelid within this 50% will be detected before unwrapping and the image will be discarded. While simpler to implement, this method has the drawback that less iris data is extracted for comparison.
Contrast adjustment
Notice that subfigures 2.2 and 2.3 appear to be better contrasted than subfigure 2.1. These images have been equalized in contrast to maximize the range of luminance values in the iris image. This makes it numerically easier to encode the iris data. The equalizing is done by acquiring a luminance histogram of the image and stretching the upper and lower boundaries of the histogram to span the entire range of luminance values 0-255. Figure 3 demonstrates an example of this process.
|
Iris Recognition: Gabor Filtering
Gabor Wavelets
To understand the concept of Gabor filtering, we must first start with Gabor wavelets. Gabor wavelets are formed from two components, a complex sinusoidal carrier and a Gaussian envelope. g(x,y)=s(x,y)wr(x,y) The complex carrier takes the form: s(x,y)=ej(2π(u0x+v0y)+P) We can visualize the real and imaginary parts of this function seperately as shown in this figure.
|
The second component of a gabor wavelet is its envelope. The resulting wavelet is the product of the sinusoidal carrier and this envelope. The envelope has a gaussian profile and is described by the following equation:
To put it all together, we multiply s(x,y) by wr(x,y). This produces a wavelet like this one:
Generating an Iris Code
Now that we have Gabor wavelets, lets do something interesting with them. Lets start with an image of an eye and then unroll it (map it to cartesian coordinates) so we have something like the following:
|
Any given iris has a unique texture that is generated through a random process before birth. Filters based on Gabor wavelets turn out to be very good at detecting patterns in images. We'll use a fixed frequency 1D Gabor filter to look for patterns in our unrolled image. First, we'll take a one pixel wide column from our unrolled image and convolve it with a 1D Gabor wavelet. Because the Gabor filter is complex, the result will have a real and imaginary part which are treated seperately. We only want to store a small number of bits for each iris code, so the real and imaginary parts are each quantized. If a given value in the result vector is greater than zero, a one is stored; otherwise zero is stored. Once all the columns of the image have been filtered and quantized, we can form a new black and white image by putting all of the columns side by side. The real and imaginary parts of this image (a matrix), the iris code, are shown here:
|
Comparing Iris Codes
The problem of comparing iris codes arises when we want to authenticate a new user. The user's eye is photographed and the iris code produced from the image. It would be nice to be able to compare the new code to a database stored codes to see if this user is allowed or to see who they are. To perform this task, we'll attempt to measure the Hamming distance between two iris codes. The Hamming distance between any two equal length binary vectors is simply the number of bit positions in which they differ divided by the length of the vectors. This way, two identical vectors have distance 0 while two completely different vectors have distance 1. Its worth noting that on average two random vectors will differ in half their bits giving a Hamming distance of 0.5. The Hamming distance is mathematically defined in this equation: D=
A⊕B |
length(A) |
In theory, two iris codes independently generated from the same iris will be exactly the same. In reality though, this doesn't happen vary often for reasons such as imperfect cameras, lighting or small rotational errors. To account for these slight inconsistencies, two iris codes are compared and if the distance between them is below a certain threshold we'll call them a match. This is based on the idea of statistical independance. The iris is random enough such that iris codes from different eyes will be statistically independent (ie: have a distance larger than the threshold) and therefore only iris codes of the same eye will fail the test of statisical independance. Empirical studies with millions of images have supported this assertion. In fact, when these studies used the threshold used in our method (.3) false positive rates fell below 1 in 10 million.
Iris Recognition Results and Conclusions
Iris Recognition Results
Our implementation of the iris recognition algorithm is broken up into several components, each of which has its strengths and weaknesses.
The pupil recognition algorithm appears to be 98% effective in detecting the pupil center when tested against a database of 50 images. This is due to the extremely uniform black color of the pupil and strong contrast to the iris and virtuall all other features in the image. Although the assumptions that the algorithm is founded break down in extreme cases, such as when there are other large black spots in the image, these cases can be detected by other means and discarded.
The iris detection algorithm proved to be rather hit-or-miss. In it's current form, it has a 50% success rate in detecting the iris correctly within an image of the eye. This large error lies mostly in the 'guessing' scheme used to make an initial prediction about the radius of the iris. This guessing scheme can be expanded to make higher precision, higher accuracy guesses at the expensive of algorithm execution speed. Also, the iris-sclera transition boundary of the eye can be more intensively processed by a multi-scale edge detection kernel (the implementation in this project uses a single-scale Haar wavelet kernel).
The Gabor correlation algorithm proved to be very robust. Our implementation used a 1-D, single frequency, single phase Gabor wavelet to generate the iris codes. The threshold for statistical independence (Hamming Distance) between two iris codes was experimentally determined to be 0.3. During testing, we chose a set of images that reliably passed the other stages of the iris detection process (find pupil, find iris) so that we could test the functionality of the Gabor filter independent of errors accrued in earlier stages. Because of long computation times, small datasets of 6 images were compiled, and all combinations of two images within each dataset were compared to another. In one test (Figure 1), 100% of all combinations of 6 eyes of the same person registered as correctly positive. In another run of this same test on a different person (Figure 2), 80% of combinations of 6 eyes registered as correctly positive. This is due to the fact that our algorithm does not mask out regions of the iris obscured by eyelashes and eyelids. The second set of images had substantially more interference from eyelids, which produced errors in the Gabor codes. The first set of images is less prone to these defects, and so passes the tests better.
The Future of Iris Codes
As evident from the results, it is possible to create, relatively easily, an algorithm to detect and recognize irises to a calculated degree of confidence. In addition, after a little research (hint: google "John Daugman"), it is clear that more sophisticated algorithms exist that give zero false acceptance--something many other authentication techniques simply cannot deliver. One specific algorithm patented by Dr. Daugman, is currently the most accepted and widely used in iris code recognition systems. This embodiment of the algorithm uses robust algorithms in each part of the implementation (pupil and iris detection, masking, Gabor correlation), and has experimentally proven to be extremely accurate. In the largest deployment of iris recognition systems, this algorithm does 3.8 billion comparisons a day in the United Arab Emirates (story here).
27 comments:
sir i have iris detection as my final year project. will u send me the complete source code along with the database of iris detection..
SIR,I am S.A.KIRAN,I am doing my final year project on Iris Detection.I kindly request you to provide me the complete source code.I will be happy if u give me permission to promote your website in my own blog( www.sakiran.blogspot.in)
Hi Sir,
This topic is really interesting to read. My sister have choosen this topic only for her final year M.S project. Please help her by sending complete source code to her mail. her mail id is l_k@sify.com. She and me will be very thankfull.
hello! iris segmentation in non-cooperative envrioment is my research area,I really need the source code relative to iris recognition. will u send any about iris recognition matlab source code except masek's open source?
here is my mail address
hanyingli@nate.com
hello Sir! iris segmentation in non-cooperative envrioment is my research area,please I really need the source code relative to iris recognition. will u send any about iris recognition matlab source code except masek's open source?
here is my mail address
mfadhelmu@yahoo.com
Hello sir , My name is khawla and I'm doing a project on iris recognition .. would you mind sending me the complete matlab code on k_sarari@yahoo.com
thank you in advance
Hello Sir ,
I Am Suyog Rasal, Need IRIS Recognition Using MATLAB, This is My Final Year Project . Pls Help Me.
suyogr@gmail.com
Very impressive! Would you mind giving me you code so that I can test it with eye images. My email is xrchen@hotmail.com
Many thanks.
SIR,I am Haibara ,I am doing my a term project on Iris Recognition.Would you like to provide me the complete source code via my emai ( Haibaranin@gmail.com).Thank you so much .
SIR,I am Haibara ,I am doing my a term project on Iris Recognition and the submission date is fast approaching. please help me..Would you like to provide me the complete source code via my emai ( Haibaranin@gmail.com).Thank you so much .
i NEED THE IRIS RECOGNITION CODE
PLEASE MAIL ME
manvendra.hcst@gmail.com
Hello Sir, I m Abhi n m doing my project on iris localization. plz mail me the main code for this algorithm
Hello Sir, I am doing my project on iris localization. plz mail me the main code for this algorithm its urgent.
I would be very thankful
My mail Id is pra125wal@gmail.com
Hello Sir, I am doing my project on iris localization. plz mail me the main code for this algorithm its urgent.
I would be very thankful
My mail Id pra125wal@gmail.com
Hello Sir, I am doing my project on iris localization. plz mail me the main code for this algorithm its urgent.
I would be very thankful
My Id (pra125wal@gmail.com)
Hello Sir, I am doing my project on iris localization. plz mail me the main code for this algorithm its urgent.
I would be very thankful
My Id (pra125wal@gmail.com)
Hello Sir, I am doing my project on iris localization. plz mail me the main code for this algorithm its urgent.
I would be very thankful
My Id (pra125wal@gmail.com)
hello sir i am doing my sunject project on iris recognition.
i have localized nad segmeeted the iris but having difficulty in normalizing and encoding.
please can you help me or send me the code for iris recognition.
will be very thankfull to you.
and definitely will promote the website and the link
Hello Sir
I'm working on developing a multibiometric system based on face and iris traits and in fact I'm interesting in using your project in the iris detection step. So please can you send me the matlab code?
My email add: king_alaa87@yahoo.com
I work on biometric system based on iris modality ,I'm interesting in your project . So please could you send me your code
My email add: hajrisarra@gmail.com
Hello sir
we are student of University of Ulsan,Korea.
we are moved by your code.
we need your ablilty for our medical image processing project.
can we reference your code?
please could you send me your code!!
My email add: warwar65@naver.com
Hello sir
we are student of University of Ulsan,Korea.
we are moved by your code.
we need your ablilty for our medical image processing project.
can we reference your code?
please could you send me your code!!
My email add: warwar65@naver.com
please can you send the matlab code to sndraprasad@gmail.com
Hello sir
I have iris detection as my final year project. will u send me the complete source code along with the database of iris detection..
My email: imageprocessing613@gmail.com
sir i have iris detection as my final year project. will u send me the complete source code along with the database of iris detection..
My email : imageprocessing613@gmail.com
hello !! can u send me the code source of the iris recognition matlab
thanks so much
imageprocessing613@gmail.com
Hello sir
I have iris detection as my final year project. will u send me the complete source code along with the database of iris detection..
ashiqbazgha15@gmail.com
Post a Comment