|
|
|
|
|
|
Rocco Hausdorf2004 |
|
During study at HTW Dresden in subject neural networks the following project with topic “Iris Eye Recognition“ was developed.
The aim was to demonstrate the learning potential of neural networks on the example topic “Iris Eye Recognition”. The solution was planned to be able to recognize the iris in an eye image, extract the iris characteristic data and learn it. After learning process the net should be able to recognize a learned iris in a presented image.
Before installing the application, the .NET framework should be installed. Afterwards the installation can be started by running Setup.exe or by downloading the source code and compiling it. To uninstall use the Add/Remove Software option of the control panel.
The ability to see is dependent on the actions
of several structures in and around the eyeball.
The graphic below lists many of the essential components of the eye's optical system.
The colored part of the eye is called the iris.
It controls light levels inside the eye similar to the aperture on a
camera. The round opening in the center of the iris is called the
pupil. The iris is embedded with tiny muscles that dilate (widen) and
constrict (narrow) the pupil size. The sphincter muscle lies around the
very edge of the pupil. In bright light, the sphincter contracts,
causing the pupil to constrict. The dilator muscle runs radially
through the iris, like spokes on a wheel. This muscle dilates the eye
in dim lighting. The iris is flat and divides the front of the eye
(anterior chamber) from the back of the eye (posterior chamber). Its
color comes from microscopic pigment cells called melanin. The color,
texture, and patterns of each person's iris are as unique as a
fingerprint.
Illustrations by Mark Erickson
Image material of the CASIA Iris Image DataBase 1.0 was used to provide a good source of pictures. This is a free image database
for scientific purposes consisting of more than 100 persons greyscale pictures. It comes from the Center for Biometric Authentication and Testing (CBAT) which is founded by the Institute of Automation, Chinese Academy of Science, for the national and social security requirements and the rapid development of biometric authentication technology. The CBAT is one of the few professional organizations specialized in biometric authentication globally.
The implemented image processing functions won’t be a solution for practical or even commercial purposes.
The don’t work well on all images in database but that was not the intention of this project.
To detect the pupil in an eye image an own searching algorithm was developed. The algorithm results in the pupil’s centerpoint and radius. It works similar to a floodfill algorithm. From a given startpoint for every direction a circle with a specified starting radius is drawn and it’s pixelcolours are analysed. The circle where the average greyvalue is nearest to a specified reference grey value is the winner circle. From the winner circle again for every direction a circle with a incremented radius is drawn and analysed. The winner circle is found and based on it the recursion starts again. So the circle enlarges more and more until it fits the pupil. The algorithm stops if the circle gets over the borders of the pupil and the greyvalues ratio gets higher than a predefined limit.

The project provides 2 possible ways for detecting the iris; automated recognition and userdefined Selection.
Based on the information got from pupil
detection the iris can be detected as follows.
Starting from the centerpoint of pupil in left and right direction at a
distance of radius of pupil
the algorithm iterates over the imagepixels along a line until it reaches the left or right image
border. For every current radius result 2 pixel grey values – one in left and one for right direction.
The average is calculated and saved to a list. At the end the list value with the most change to
his preceding value in list represents the value where the iris borders are situated.
The iris radius is found.
After experiencing different image filters the best detection results
were achieved by increasing the image contrast and afterwards applying a median filter.
By smoothing the image homogeneous areas became more distinguishable from high-frequency ones.

The diagram shows the local distances of greyvalues of all sequent radius values between 90 and 150 pixels.
With this option the user gets the possibility to manually define the iris area in the image.
Based on the pupil data he can choose between different iris radius values by adjusting a slider.

a. Contrast Filter
The contrast Filter adjusts the contrast of the image based on a given value x down (0 < x < 1.0) or up (x > 1.0)
b. Partial Median Filter
This Median Filter smoothes a given picture by applying a convolution matrix (9x9) to every pixel
and setting the pixel value to the matrix’s median value. For performance reasons not the whole image needs
to be filtered. You can define a target area in the image.

contrast filter partially median filter

Option 1 – User defined iris area Option 2 – Automatic iris area
For educational and demonstrational reasons the project offers two options for extracting iris data.
Option 1 - User defined iris area – 60 Features
This option results in a 60 features dimensioned feature vector. It’s based on the theory that the iris characteristic information
are situated directly around pupil. So how does it work:
The algorithm moves around centerpoint and calculates for every degree the range of points between inner radius and outer radius and adds this line of pixelvalues into the resulting bitmap which now gets scaled to a fixed size of 360 x 25 Pixels. This bitmap now gets partitioned into 60 parts each a size of 5x25 pixels. For every part a segmentvalue is calculated as follows: The bitmaps colour depth of 8 bit is divided into 16 ranges. Every range has a predefined weight. A parts segmentvalue is the summation of all pixel weights. These segment-values form the resulting featurevector.
Option 2 – Automatic iris area – 196 Features
This option results in a 196 features dimensioned feature vector. It’s a simple implementation for grabbing the iris data
and putting it into a bitmap. This bitmap now gets partitioned into 14x14 kacheln each a size of 10x10 pixels. For each part
the representing segmentvalue gets calculated as described above. The resulting feature vector has a dimension of 196 features.
Conclusion:
The aim should always be to minimize the featurevector’s dimensions. These two options show that there are many possibilities to calculate the feature vector but it is important to recognize the really characteristic data in order to achieve a minimum vector.
The underlying neural network is a so called self organizing feature map (som). They are also known as Kohonen-Networks after the name of their inventor – T. Kohonen. During the so called unsupervised learning process they restructure themselves through competitive learning. That’s why they are called self organizing maps.
The map needs to be trained with all patterns which should later be recognized. The feature vector looks like shown:

The neurons get compared with the input patterns . During learning process the neurons weights are changing. Before learning the som’s neurons are initialised with
Randomised weight values. The input pattern vectors have to be the same length as the weight vectors in the som.

During learning process every input pattern gets compared with all neuron weights of the map. The so called winner neuron is the one with the shortest
distance between it and the input pattern feature vector where distance means the shortest angle between the two vectors.

The winner neuron weights now get adapted nearer to the presented pattern values as the following formula shows: The distance between presented pattern and the
neuron weights multiplied with current learning rate gets summated to the current neuron weights.

Epsilon is the
learning rate. (0 < Epsilon < 1)
With Epsilon = 0 there is no
learning; with Epsilon = 1 the
neuron gets exact the same values as the presented input pattern. Both
values make no practical sense at all.

With more and more learning Steps the learning rate exponentially decreases from a predefined maximum to a minimum. The winner neurons neighbours get involved into the adaption process. The neighbourhood is large in the beginning and decreases during learning progress. So the net roughly gets structured at the beginning and gets dispersed more and more during learning progress. Neighbours closer to the winner neuron learn with a higher learning rate than other neighbours.
The neighbourhood radius is calculated like this:

Verification consists of 3 steps:
1) Presenting the bitmap for verification.
The user loads one of the bitmaps into project by choosing the “load image” button.
2) Extracting the iris data
By clicking the “extract” button the “Feature Extraction Window” is opened. The user now can extract the characteristic iris data
In order to get the corresponding feature vector.
3) Comparing the extracted feature vector with all neurons in som
By pressing the “verify” button the found feature vector gets compared with all neuron’s weights in the map.
The winner is the neuron with the shortest distance (Euclidian Distance).
Verification Results:
The verification results depend strongly from the choosen learning parameters and from the image preprocessings. The best achieved recognition rates were around 60-70%.
learning conditions:
It was a 10x10 big som with 60 features with following learning parameters:
Patterns:
The project offers some addon’s but they are mostly for testing purposes.
BatchExtracter
The BatchExtracter offers the possibility to batch-like extract iris data from a bunch of bitmaps automatically. It’s implemented to work with option 2 – the automated iris extraction which results in a 196 feature vector. For each extracted person a xml-file containing the feature vector will be created. The Extracter is only useable with pictures where the image processing algorithms for pupil finding and iris detection work properly.
BatchVerifier
The BatchVerifier offers the possibility for automatically verifying a bunch of iris data. The results are written in a summary xml file and viewed with any text editor.
Statistics
The Statistics addon takes the summary xml file from BatchVerifier and analyses it by doing some statistical calculations on it.
You can find out:
· Count of person
· Count of recognized marked persons
· Count of errors
· Average distance
· Variance of distance values
This project identifies itself as demonstration of the potential of neural networks and an introduction into iris eye detection topic. So this work should be continued for sure. Possible improvements are:
Image Processing:
Implementing more efficient and error prone pupil & iris detection algorithms
Aspects:
Feature Extraction:
Here you can find a detailed commented view on the project’s sources.
|
Tutorial 1: How to create a FeatureVector by a bitmap |
1. To create a feature vector you have to do 5 steps:
2. Open a bitmap
3. Go to extraction dialog
4. Choose extraction options and start extraction
5. Return the resulted vector to FeatureData window

Activate the FeatureData tabpage in the main dialog.

Press the Load Picture button and select a bitmap to extract from.


Press the extract button to open the extraction window.

You can choose between automated or manually iris detection/selection.
For now choose user defined (default).

Press the Find Pupil button to locate the images pupil.

decrease the starting radius decrease the range option or increase the required ratio option
For fine tuning you can change the displayed options but for most pictures the defaults will work.
In the first picture the default start point did not work, just decrease the start radius to a value between 5-10 and it should work.

After pressing the pupil button you can recognize that the slider control for iris area definition has set up itself based on found pupil.
Now define the extraction area by adjusting the slider. When finished press the extract button.
You can see the current area marked by a red circle.

After pressing the extract button the iris is cut out of the bitmap and the results are shown in the picturebox.

By pressing the button based on the extracted iris data a feature vector is built and it’s features are shown in the
corresponding textbox control.

Press the return Vector button in order to return the resulting feature vector to the main window.

Back to main window you can define a name for the iris data and finally add the vector to the applications featurevector list.

After pressing the Add to List button you can see the newly created vector in the tree control on the right.
Now you could save the vector list to xml-file (*.inp) for later use by pressing the save button.
You can easily reload an input-file by pressing the Load button and selecting the file. You’ll be shown loaded symbols count and
the feature count.
|
Tutorial 2: How to create a SOM… |

In order to create a new SOM just go to FeatureMap tab.

By pressing the New SOM button the NewSOM dialog pops up and you can edit the new som’s dimensions.

After editing the textvalues you can start creating the som by pressing button “Create SOM”.

On success you can see the assigned dimensions in the characteristics groupbox.

By pressing the Init SOM button all of the som’s weights are initialised with randomly chosen values.

You can load a map by pressing the load button and save the current map to a som-xmlfile (*.som) by pressing the save som button.
|
Tutorial 3: Learning… |
In order to learn you need to have loaded an input-patternfile ( *.inp ) which holds featurevectors extracted from eye images and you need to have loaded or created a new featuremap. ( *.som ) Be sure to init a new created som through init button. Take care that the featurecount in featuremap and inputsymbols must be the same.

Now change to the Learning tab page.
You can edit the learning parameters now e.g.:

After pressing the Learn button the process gets started and you can watch the progress on the datamap.


during learning the important information like learning steps , current learning radius and current learning rate are refreshed.

after learning you can save the som through menu option save or like shown before.
|
Tutorial 3: Verification… |
For verification it’s required to have done loading a learned som (*.som) and the inputvectors file (*.inp).

At first change to tab Verification.

Now press the Load Picture button in order to choose the picture to verify which is loaded then.

After pressing the Extract button the feature extraction dialog appears and you can create a featurevector like described in tutorial 1.


By pressing the Return vector button the dialog disappears and the vector is returned to the main window’s Verification tabpage.

Now just click the Verification button and you’ll be shown the distances between current featurevector and the other vectors in som
In the tabpage’s listbox.

You can see a list of ascending distances with the best person (shortest distance) on top.

In this case the som recognized person 046 as the person from the loaded image. You’ll get an information on the status control at the bottom.
http://www.sinobiometrics.com/casiairis.htm
Praxis der digitalen Bildverarbeitung und Mustererkennung, Hanser Verlag 1995, ISBN 3-446-15517-1
For further work this literature could be a help:
Daugman, J.: „How Iris Recognition Works“,
University of Cambridge CB2 3QG, UK, 1998
Daugman, J.: „Iriserkennung“, in: Behrens, M.,
Roth, R. (Hrsg.): Biometrische Identifikation,
Datenschutz und Datensicherheit-Fachbeiträge
2001
Johns, M.: „Der Algorithmus zur Iriserkennung
von John Daugman“, Vortrag in Lehrveranstaltung
„Aktuelle Probleme der IT und Netzsicherheit“,
WS 2001/2002, Universität Hamburg