1.    Introduction. 1

2.    Requirements. 1

3.    Download. 1

4.    Install. 1

5.    Anatomical Theory. 1

6.    Functionality. 2

7.    Iris Data Extraction. 59

8.    The Neural Network. 83

9.    Iris Verification. 118

10. Extras. 150

11.Future Work. 170

12. Class Description. 185

13. Tutorials:190

Sources:319

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Rocco Hausdorf
2004
  319

I

1. Introduction                

 

Iris Neural Network Project

During study at HTW Dresden in subject neural networks the following project with topic “Iris Eye Recognition“ was developed.

 

A brief task description

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.

 

2. Requirements

 

 

3.    Download

           

Iris.zip

 

4.    Install

 

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.

 

5.    Anatomical Theory

 

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

 

6.    Functionality

 

Image DataBase

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.

 

Image Processing

 

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.

 

Pupil Detection

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.

 

 

 

 

Iris Detection

The project provides 2 possible ways for detecting the iris; automated recognition and userdefined Selection.

 

 

Automated Iris Recognition

 

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.

 

 

 

User defined Iris Selection

 

 

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.

 

    

 

 

 

 

 

ImageFilters

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

 

7.    Iris Data Extraction

 

 

    

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.

 

8.   The Neural Network

 

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 learning process

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:

 

 

 

9.   Iris Verification

 

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:

 

10. Extras

 

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

 

 

11.Future Work

 

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:

 

12. Class Description

                 

Here you can find a detailed commented view on the project’s sources. 

Commented Sources

     

13. Tutorials:

                       

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.

 

 

 

Sources:

 

http://www.sinobiometrics.com/casiairis.htm

http://www.stlukeseye.com

 

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