4 Iris

4.1 Sensoren

Die Kamera, auf die wir uns geeinigt haben, ist die IrisGuard IG–H100 (Abbildung 16). Sie ist die momentan präziseste und schnellste Iriskamera auf dem Markt. Um ein möglichst gutes Bild zu bekommen, nimmt die Kamera gleich acht Bilder in drei Sekunden auf. Danach wird das beste Bild weiter verwendet.

Die Kamera hat einen Cinch–Ausgang, der ein monochromes NTSC Composite Video Signal liefert. Die Auflösung dabei ist 720 x 480. Die Steuerung der Kamera erfolgt mit einer seriellen Schnittstelle (RS232). Mit der Kamera wird ein eigener Video Grabber geliefert. Dieser wird auf der einen Seite mit dem Cinch–Kabel und dem seriellen Kabel mit der Kamera verbunden und auf der anderen Seite mit einer USB 2.0 Schnittstelle mit einem Rechner, auf dem das Frontend unseres Systems läuft. [?]


PIC

Abbildung 16: IrisGuard IG-H100

Da die Kamera für Microsoft Windows Betriebssysteme ausgelegt ist und auch der Fingerabdrucksensor unter Windows betrieben wird, implementieren wir das Scanner Modul auf einem Windows System. Als Programmiersprache wird dabei Visual C++ verwendet. Wird der Video Grabber an den Rechner angeschlossen, erscheint im Geräte Manager ein neues Video Grabber Device. Wurde der Treiber richtig installiert, kann dieses Gerät schließlich im Source Code angesteuert werden.

Wie die Kamera genau angesprochen wird, ist in [?] beschrieben. Dazu wird noch eine ActiveX Komponente geliefert, mit denen die dort beschriebenen Funktionen ausgeführt werden können. Um an eine BMP– oder JPG–Datei zu gelangen, die ein Bild einer Iris enthält, ruft man die Funktion IFA_Capture auf. Mit dieser Funktion werden mehrere Bilder aufgenommen. Aus dem Besten dieser Bilder wird dann daraus der Iriscode generiert und im lokalen Speicher abgelegt. Des Weiteren kann in einer INI-Datei eingstellt werden, dass diese Funktion zusätzlich das Bild als BMP– bzw. JPG-Datei speichern soll.

Da wir den Daugman–Algorithmus in dieser Projektgruppe selber implementieren wollen, können wir den automatisch generierten Iriscode einfach ignorieren und den Iriscode selber aus dem gespeicherten Bild generieren. Die Funktion IFA_Capture unterstützt zwei Modi. Einen zum Matchen mit der Datenbank und einen, um einen Iriscode in die Datenbank aufzunehmen. Außerdem kann ausgewählt werden, ob das linke Auge, das rechte Auge oder gleich beide Augen gescannt werden. Außer dem Iriscode und dem Bild gibt IFA_Capture noch einen Integer–Wert und einen String mit Statusinformationen zurück.

Es gibt noch einige andere Funktionen, von denen wir die meisten wahrscheinlich jedoch nicht verwenden werden. Das liegt daran, dass diese Funktionen genau das bieten, was wir selber implementieren wollen, zum Beispiel durchsucht die Funktion IFA_Recog die Datenbank nach einem bestimmten Iriscode. Gerade das wollen wir aber verbessern.

Im Lieferumfang der IG–H100 ist das Programm PrivateID enthalten. Dieses Programm wird derzeit schon an Flughäfen und anderen Orten eingesetzt und stellt ein komplettes Iriserkennungssystem zur Verfügung. Dort können jedoch nur wenige Millionen Iris–Templates in die Datenbank aufgenommen werden. Wir entwickeln in dieser Profektgruppe ein ähnliches System, das aber noch mit vielen Millionen effizient arbeiten soll. Trotzdem haben wir mit diesem Programm eine gute Vergleichsmöglichkeit, die uns sagt, wie genau und wie schnell unser System arbeitet.

Da sämtliche Iriskameras anderer Hersteller keine offenen Schnittstellen besitzen und einige Kameras ihre Daten verschlüsselt versenden, können wir nicht einfach auf eine andere Kamera ausweichen, falls es mit IrisGuard Probleme geben sollte und wir die IG–H100 doch nicht bekommen können. Statt dessen müssen wir einen anderen Weg gehen. In diesem Fall wird ein einfaches Kameramodul mit Infrarot Beleuchtung bestellt, dieses wurde zwar nicht für die Iriserkennung optimiert, aber für unsere Zwecke reicht es aus. Außerdem können wir bei dieser Lösung sicher sein, dass es eine offene Schnittstelle gibt.

4.2 Algorithmen

Für die Feature-Extraktion des Iriscodes wird der Algorithmus von John Daugman verwendet. Dieser Teil wird lediglich einmal beim Einlesen einer neuen Iris durchgeführt. Die Daten bereits eingelesener Iriden liegen in der Datenbank bereits als Iriscode vor. Aus diesem Grund ist dieser Teil nicht zeitkritisch für das Matchen auf großen Datenbanken.

Dieser Algorithmus gliedert sich in folgende Schritte:

  1. Extraktion der Iris aus dem Bild
  2. Normalisierung der Iris
  3. Generierung des Iriscodes

Extraktion der Iris aus dem Bild

Die Extraktion der Iris aus dem Bild erfolgt in 3 Schritten:

  1. Bestimmung der Grenze zwischen Pupille und Iris.
  2. Bestimmung der Grenze zwischen Iris und Sklera.
  3. Bestimmung der Grenze zwischen Iris und Augenlid.

Der Mittelpunkt der Pupille ist nicht automatisch der Mittelpunkt der Iris. Aus diesem Grund werden die Grenzen von Iris und Pupille, sowie Iris und Sklera separat berechnet.

Daugman beschreibt dabei einen Erkennungs-Operator mit der folgenden Gleichung:

max(r,x0,y0)|Gσ r r,x0,y0I(x,y) 2πr ds|, (1)

wobei I(x,y) ein Bild vom Auge ist. G ist eine Glättungsfunktion mit Skalierungsfaktor σ, * steht für die Faltung, s bezeichnet den Kreisbogen mit Radius r und Mittelpunktkoordinaten (x0,y0).
Für jeden Mittelpunkt (x0,y0) werden konzentrisch wachsende Kreise mit Radius r definiert. Für jeden konzentrischen Kreis wird nun der Durchschnittswert der Pixel entlang der Kontur des jeweiligen Kreises berechnet. Der Wert, für den der Durchschnittswert am signifikantesten bezüglich des Wertes des zuletzt berechneten Kreises steigt, ist der gesuchte Parameter. Dieses Vorgehen wird zum Finden der Grenze zwischen Pupille und Iris benutzt.

Um die Grenzen zwischen Iris und Sklera zu finden, muss der Operator leicht modifiziert werden. Aufgrund des oberen und unteren Augenlides, sowie der Tatsache, dass die linke und rechte Seite der Iris unterschiedlich groß sein können, werden keine konzentrischen Kreise zum finden der Grenzen mehr verwendet. Stattdessen benutzt man 2 horizontale ”Pie Wedges”, die auf 0 und 180 Grad der Pupille gesetzt werden. Jedes ”Pie-Wedge” deckt genau 45 Grad der Irisfläche ab. Dies stellt sicher, dass nur Teile der Iris betrachtet werden.

 
Daugman beschreibt diesen Vorgang durch den folgenden Operator:

maxr[1.5r0,10r0] rp=rδr+δ 2 πδrϕ=θπ8θ+π8I(p,θ)pdpdθ (2)

Dabei bezeichnet r0 den zuvor berechneten Pupillenradius, δ ist eine kleine radiale Hülle, mit δ 0.1r0. Der Wert von ϕ ist entweder 0 oder 180 (π), abhängig davon, ob die linke (180) oder rechte (0) Grenze (Iris/Sklera) berechnet wird. Das für r ein Wert zwischen dem 1.5 und 10-fachen des Pupillenradius genommen wird, hat sich laut Daugman als sehr gut erwiesen. Durch die getrennte Ermittlung des linken und rechten Randes bekommt man nun zwei Radien, einen für den Abstand vom Mittelpunkt zum linken Rand und einen zum rechten Rand der Iris. Als Ergebnis der Berechnung bekommt man also nun die Grenze der Iris zur Sklera, sowie den Radius zur linken und rechten Seite der Iris.

PIC

Abbildung 17: Grenzen der Iris

Anschließend wird die Grenze zwischen Iris und Augenlid ermittelt. Dabei wird nun wieder der Operator (1) verwendet. Es werden aber anstatt der kreisförmigen, konzentrisch wachsenden Kreise, bogenförmige Linien benutzt. Diese Methode bietet zusätzlich eine Möglichkeit, um die Sicherheit bei der Authentifizierung zu erhöhen. Angreifer versuchen, die Iriserkennung zu überlisten, indem sie sich durch ein Foto, der Iris einer zugangsberechtigten Person, Eintritt verschaffen wollen. Eine andere Möglichkeit der Überlistung ist, Kontaktlinsen mit Mustern von einer legitimisierten Iris zu tragen. Eine wichtige Eigenschaft eines lebendigen Auges ist, dass der Pupillendurchmesser sich in einer Sekunde ein bis zweimal minimal verändert. Durch das Messen des Pupillenradius in bestimmten Zeitabständen lässt sich diese Eigenschaft dazu nutzen, eine unechte Iris zu erkennen.

Normalisierung der Iris

Eine Normalisierung der Iris ist notwendig, um zu gewährleisten, dass im Laufe des Vergleichs stets die gleichen Regionen der Iris miteinander verglichen werden. Veränderungen der Iris können zum Beispiel durch Lichteinfluss entstehen.

PIC

Abbildung 18: Iris


PIC
Abbildung 19: Iris
PIC
Abbildung 20: Polardarstellung

In diesem Modell wird jeder Punkt (x,y) der Iris in ein pseudopolares Koordinatensystem mit Koordinaten (r,θ) transformiert. Dabei gilt : (r,θ) {[0, 1] x[0, 2π]}.
Daugman beschreibt diesen Prozess durch die folgende Formel :

I(x(r,θ),y(r,θ)) I(r,θ), (3)

wobei

x(r,θ) = (1 r)xp(θ) + rxi(θ) y(r,θ) = (1 r)yp(θ) + ryi(θ) (4)

gilt. Hier bezeichnet xp(θ) einen Punkt, der auf der Grenze Pupille/Iris liegt. Analog bezeichnet xi(θ) einen Punkt auf der Grenze Iris/Sklera. Der Winkel θ bezieht sich immer auf den Mittelpunkt.

Aus der Normalisierung ergeben sich folgende Vorteile :

Generierung des Iriscodes

Ziel dieses Kapitels ist es, zu beschreiben, wie der Iriscode berechnet wird.

Eine Methode um strukturelle Informationen zu einem Bild zu bekommen ist die Verwendung eines 2D Gabor-Filters. Dieser Filter entsteht, wenn man ein Gaußfenster mit einer komplexen Welle der Frequenz ω multipliziert. Ein 2D Gabor-Filter ist eine lokale, wellenförmige Funktion, die über verschiedene Größen und Positionen definiert wird. Diese Funktion wird mit den Rohdaten (Grauwerte des Irisbildes) des Bildes multipliziert. Über die Resultate wird dann integriert. Das Ergebnis dieser Integration sind Koeffizienten, die Informationen zu den Strukturen des Bildes wiedergeben. Ein 2D Gabor-Filter ist wie folgt definiert:

G(r,θ) = e2πiω(θθ0)e(rr0)2a2 e(θθ0)2β2 , (5)

wobei (r,θ) Polarkoordinaten und α,β Konstanten sind. Über diese Konstanten wird später die Ausdehnung spezifiziert.

Die Größe des Iriscodes ist 256 Byte. Diese Größe begründet sich laut Daugman aus der Überlegung, dass die Größe ungefähr der Kapazität des Magnetstreifens einer drei-kanaligen Standard-Kreditkarte nach ISO-7811 entspricht.

Um die 256 Byte Signatur zu berechnen werden folgende Formeln benutzt:

hRe(r0,θ0) = 1ifRepϕI(p,ϕ)eiω(θ0ϕ)e(rop)2α2 e(θ0ϕ)2β2 pdpdϕ > 0 (6)
hRe(r0,θ0) = 0ifRepϕI(p,ϕ)eiω(θ0ϕ)e(rop)2α2 e(θ0ϕ)2β2 pdpdϕ 0 (7)
hIm(r0,θ0) = 1ifImpϕI(p,ϕ)eiω(θ0ϕ)e(rop)2α2 e(θ0ϕ)2β2 pdpdϕ > 0 (8)
hIm(r0,θ0) = 0ifImpϕI(p,ϕ)eiω(θ0ϕ)e(rop)2α2 e(θ0ϕ)2β2 pdpdϕ 0 (9)

In diesen Formeln finden folgende Koeffizienten Verwendung.

In den Formeln wird über das Produkt des Gaborfilters mit dem Grauwert des Bildes integriert. Dabei erhält man einen Wert für gerade (Realteil) und schräge Symmetrien (Imaginärteil) des Bildes. Die Struktur der Iris wird also durch Phasoren der komplexen Ebene repräsentiert. Dabei wird jeder Phasor in einen Quadranten des Einheitskreises quantisiert. Hierbei ist zu beachten, dass nur die Phase des Phasors, nicht aber die Amplitude des Phasors für den Iriscode eine Rolle spielt. Reagiert ein Gaborfilter positiv (> 0) auf die Eingabedaten wird eine 1, andernfalls ( 0) eine 0 im Iriscode gesetzt.

PIC

Abbildung 21: Quantisierung

Aufgrund des kreisförmigen Koordinatensystems werden eine Reihe von „Analysebändern“ definiert. Diese haben jeweils einen Radius p. Aus dieser Tatsache folgt, dass Bildpunkte, die nah an der Pupille liegen mehr Gewicht haben, als Punkte die weiter außen zur Sklera hin liegen.

Insgesamt hat der zu berechnende Iriscode eine Größe von 256 Byte = 2048 Bit. In jedem Durchlauf (Berechnung eines Waveletkoeffizienten) von 6-9 werden 2 Bits des Codes gesetzt. Es sind also insgesamt 1024 Waveletkoeffizienten zu berechnen.

Position der Analysebänder

PIC

Abbildung 22: Analysebänder

Bei der Positionierung der Analysebänder ist folgendes zu beachten :

 
Skalierung und Frequenz der Wavelets

Insgesamt müssen 1024 Punkte auf 8 Skalierungen und 8 Wavelets verteilt werden. Das bedeutet, dass eine durchschnittliche Anzahl von 16 Punkten auf einem Band verteilt werden muss. In jedem Band werden dann die Punkte mit verschiedenen Skalierungen der Wavelets untersucht.

PIC

Abbildung 23: Iriscode

Freiheitsgrade

Innerhalb des Wavelets gibt es Freiheitsgrade. Durch diese Variablen kann die Frequenz und die Amplitude des Wavelets angepasst werden.

Maskenbits

Maskenbits werden parallel erzeugt und geben die ungültigen Bereiche auf der Iris an. Diese ungültigen Bereiche werden später beim Matchingprozess ignoriert. Ungültige Bereiche können zum Beispiel Bereiche sein, die durch Augenwimpern, Reflexionen, Kontaktlinsen, usw. beeinflusst werden. Zu jedem Bit b des Iriscodes existiert also ein Maskenbit, dass anzeigt, ob b gültig ist, oder nicht.

Matching auf Datenbanken

Für das Matching wird die Hamming Distanz verwendet. Diese kann gut auf FPGAs implementiert werden, da sie aus den boolschen Operatoren XOR und AND besteht. Um auf großen Datenbanken zu Matchen, muss die HD-Schwelle entsprechend der Größe der Datenbank angepasst werden. Für die parallele Abarbeitung wird die Datenbank in Teile der Größe 100.000 geteilt und jeder Block einem Prozessor zugewiesen. Diese Teile können unabhängig voneinander betrachtet werden.

Freiheitsgrade

Es gibt mehrere Parameter für die Freiheitsgrade. Diese werden im folgenden näher betrachtet:

1. Skalierung des Wavelets:
Für die Skalierung werden die Parameter α und β verwendet. α bestimmt die Ausdehnung der Grenze zwischen Pupille und Iris und entspricht im transformierten Bild der horizontalen Ausdehnung des Wavelets. β reguliert die Ausdehnung des Wavelets in radialer Richtung und entspricht im transformierten Bild der vertikalen Ausdehnung.

2. Ortskonstanten:
Die Parameter θ0 und τ0 regulieren die Positionierung des Wavelets bezüglich der Irisdaten. Auf den transformierten Bilddaten bestimmt θ0 die vertikale und τ0 die horizontale Positionierung des Wavelets.

3. Frequenz:
ω bestimmt die mittlere Frequenz des Gaborwavelets. Das Verhältnis von ω und α bestimmt die konkrete Ausprägung des Wavelets. Die Anzahl der Schwingungen des Gaborwavelets wächst mit ω α.

Die Skalierungsparamter α und β verhalten sich umgekehrt proportional zur Frequenz ω. Das Verhältnis der Werte zueinander wird so gewählt, dass alle acht Skalierungen der Wavelets selbstähnlich sind. Der Skalierungsparamter α steht in einem definierten Verhältnis zur dominierenden Frequenz ω. Dadurch ergibt sich eine Familie selbstähnlicher Wavelets. Das Verhältnis von ω und α wird so gewählt, dass das Produktω α = k konstant bleibt. Versuche haben gezeigt, dass die Wahl von k=6 eine sehr geringe DC-Sensitivität aufweist. Bei k=4 ist der Realteil eine gute Approximation des Mexican-Hat-Wavelets.

Da ω zu β genau wie ω zu α umgekehrt proportional ist, muss das Verhältnis von α zu β konstant sein. Das Verhältnis α β bestimmt die Maße des vertikalen Bereichs der Irisdaten bezüglich eines Analysepunkts und fließt somit in die Berechnung des Iriscodes ein. Das Verhältnis α β ist abhängig vom Format der Irisdaten aus der Normalisierung und muss entsprechend angepasst werden. Die Festlegung ist erst möglich, wenn das Datenformat fest steht.

Es existieren acht Skalierungen und acht Analsysebänder. Der radiale Abstand der Analysebänder kann gleichmäßig gewählt werden oder zur Iris hin dichter werden. Abhängig von der Auflösung kann es sinnvoll sein, mehr Daten aus den äußeren Bändern zu lesen, da hier mehr Pixel zur Verfügung stehen.

4.2.1 Template Matching

 
 
Für die Iriserkennung verwenden wir, wie im vorherigen Abschnitt vorgestellt, das Verfahren von John Daugman, da es das in kommerziellen Systemen am häufigsten verwendete ist und nach Angaben der Lizenznehmer Falschakzeptanzraten von Null liefert. Dieses Verfahren zeichnet sich dadurch aus, dass bei der Feature Extraction zu einer Iris der so genannte Iriscode generiert wird. Dies ist ein 2048 Bit großer Vektor, welcher das Muster der Iris repräsentiert. Zudem wird zu jedem Iriscode ein ebenso großer Maskenbit-Vektor erzeugt. Dieser gibt die Bereiche an, die für die Feature Extraction verwendet werden konnten. Unbrauchbare Bereiche entstehen durch Verdeckungen, Spiegelungen, u. ä. bei der Aufnahme einer Iris.

Hamming Distanz  
 
Aufgrund der Tatsache, dass bei Daugmans Verfahren ein Irismuster auf einen exakt 2048 Bit großen Vektor genormt wird, ist die Vorgehensweise für das Template Matching vorgegeben. Das Matching beruht auf der Berechnung der Hamming Distanz (HD) für ein Paar zu vergleichender Iriscodes. Die HD ist ein Maß für die Unterschiedlichkeit von Zeichenketten. Für die Iriserkennung ergibt sich die Hamming Distanz beim Vergleich zweier Iriden A und B aus folgender Formel:

HD = (CodeA CodeB) MaskA MaskB MaskA MaskB

Die Hamming Distanz für ein Iriscode-Paar ist somit genormt auf einen Wert zwischen 0 und 1. Wobei 0 die komplette übereinstimmung und 1 die völlige Unterschiedlichkeit der Iriscodes im gültigen Bereich bedeuten würde.
Daugman erzeugt zur Optimierung seines Verfahrens 7 Iriscodes zu einem Muster, welche jeweils die Iris in einer anderen Orientierung beschreiben. Dies geschieht durch das zyklische Weiterschalten der Winkelvariable θ (siehe Abschnitt Feature Extraction). Beim Matching werden nun für jedes biometrische Template in der Datenbank 7 Hamming Distanzen bestimmt und der kleinste dieser Werte als repräsentativ ausgewählt. Da Daugman keine Angaben dazu macht, um welchen Wert θ jeweils weiter zu schalten ist, werden wir hierfür bei der Implementierung verschiedene Werte testen und gegebenenfalls auch die Anzahl berechneter Orientierungen anpassen.

Schwellwertbestimmung  
 
Mit der Hamming Distanz liegt ein Maß vor, um die Unterschiedlichkeit zweier Irismuster zu beschreiben. Für das Matching ist es also nötig einen Schwellwert für die Hamming Distanzen festzulegen, um daran zu entscheiden, ob zwei Iriscodes zur selben Iris gehören oder nicht. John Daugman hat dazu in umfangreichen Feldexperimenten die Verteilungen auftretender HD-Werte untersucht.
In einem Feldexperiment wurden die Hamming Distanzen für 200 Mrd. Paare unterschiedlicher Iriden bestimmt (In 7 diskreten Orientierungen und mit der Wahl des kleinsten HD-Wertes als repräsentativ). Es konnte gezeigt werden, dass die resultierende Verteilung nahezu perfekt einer Binomialverteilung mit 249 Freiheitsgraden entspricht und dass die Iriscodes zweier unterschiedlicher Iriden statistisch unabhängig sind (Linksverschiebung der Verteilung durch die Berücksichtigung verschiedener Orientierungen). Die folgende Verteilungsfunktion repräsentiert also ein gültiges statistisches Modell für die Verteilung des Feldexperiments:

fk(x) = kf0(x) 1 F0(x) k1

mit

f0(x) = N! m!(N m)!pm(1 p)(Nm)

Dabei bezeichnet p die Wahrscheinlichkeit des günstigen Ergebnisses eines einzelnen Vergleichs, p = 0.5 aufgrund der statistischen Unabhängigkeit verschiedener Irismuster. N = 249 ist die Zahl der gesamten Versuche (Freiheitsgrade) und m ist die Anzahl erfolgreicher Versuche. Dass die Versuchsreihe für mehrere unabhängige Orientierungen durchgeführt wird, wobei die beste Übereinstimmung als repräsentativ gewählt wird, drückt die Variable k aus. Die Funktion fk(x) gibt also die Wahrscheinlichkeit an, dass sich beim Vergleich zweier unterschiedlicher Iriden eine Hamming Distanz von genau x ergibt. Somit gibt die kumulierte Funktion von fk(x) die Wahrscheinlichkeit des Auftretens eines Wertes HD x an. Für das Matching entspricht dies der Wahrscheinlichkeit, dass es bei einem Schwellwert x zu einer Falschakzeptanz kommt.

Fk(x) = 1 1 F0(x) k

Es zeigte sich in einem Feldexperiment bei dem 7070 Paare von Iriscodes identischer Iriden verglichen wurden, dass die Resultate stark mit den Rahmenbedingungen bei der Aufnahme der Iris zusammenhängen. Unter realistischen Annahmen ist davon auszugehen, dass bei zwei unabhängigen Aufnahmen der selben Iris die Verhältnisse, wie Licht und Entfernung zur Kamera niemals völlig identisch sind. So lässt sich auch für die HD-Verteilung von gleichen Iris-Paaren kein statistisches Modell aufstellen. Der größte aufgetretene HD-Wert in diesem Feldexperiment betrug jedoch lediglich 0.327. Er liegt damit also unter dem kleinsten aufgetretenen HD-Wert im Feldexperiment zum Vergleich unterschiedlicher Iriden. Dieser Wert betrug 0.330.
Um für die vorgesehene Implementierung einen geeigneten Schwellwert festzulegen, bietet das statistische Modell eine wichtige Grundlage. Umgesetzt werden sollen sowohl die Verifikation, als auch die Identifikation anhand des Irismusters. Für die Verifikation, also den 1 : 1 Vergleich zweier Iriscodes lassen sich anhand des statistischen Modells sehr leicht die mit einem Schwellwert verbunden Falschakzeptanzraten bestimmen. Bei einem HD-Kriterium von 0.330 beträgt diese Rate 1 : 4Mio. Der Schwellwert wäre zudem kleiner als die größte aufgetretene Hamming Distanz im Feldexperiment zum Vergleich identischer Iriden. Somit wäre auch das Auftreten einer Falschrückweisung extrem unwahrscheinlich.
Da für unsere Implementierung eine Datenbankgröße von mehreren Millionen Templates angestrebt wird, sofern sich genügend Iriscodes beschaffen lassen, muss diese Anzahl auch bei der Wahl eines geeigneten Schwellwertes für die Identifikation berücksichtigt werden. Eine FAR von 1 : 4Mio. wäre hierbei nicht akzeptabel. Bei einer Datenbankgröße von N und einer Einzelfehlerwahrscheinlichkeit P1 beschreibt folgende Formel die Wahrscheinlichkeit, dass es bei der Identifikation zu einer Falschakzeptanz kommt:

PN = 1 (1 P1)N

PN lässt sich durch N P1 approximieren, so dass bei einem Schwellwert von 0.28 und 5 Mio. Datensätzen eine FAR von 1 : 20000 zu erwarten ist. Für die endgültige Festlegung von Schwellwerten für Verifikation und Identifikation bleibt abzuwarten, wie sich die mit der Feature Extraction erzeugten Iriscodes für identische Iriden verteilen, um auch die FRR möglichst klein zu halten.

Implementierung  
 
Das Template Matching lässt sich durch sehr einfache arithmetische und logische Operationen auf binären Vektoren realisieren. Für die Berechnung der Hamming Distanz werden die Operatoren , , die Division sowie die Normierung benötigt. Der Vergleich mit dem festgelegten Schwellwert erfordert eine Kleiner-Gleich-Operation. Daher soll das Template Matching auf Hardware-Ebene durch den Einsatz von FPGAs implementiert werden. Da es angepeilt ist, einen Datenbestand von Iriscode Templates im Millionenbereich aufzubauen, sollen die Berechnungen in parallelisierten Blöcken durchgeführt werden, um auch für die Iris-Identifikation eine hohe Performance zu erzielen. Für die Implementierung sind folgende Parameter festzulegen:

Jeder Eintrag in der Template Datenbank besteht aus

Im Folgenden wird das grundlegende Vorgehen zur Verifikation und Identifikation jeweils durch Pseudocode beschrieben, wobei die for-Schleifen entsprechend in parallelen Blöcken zu realisieren sind:

 
IrisVerification 
 
Eingabe:CodeA[],MaskA[],ID 
 
1.  parbegin 
2.  CodeB:=getCode(ID) 
3.  MaskB:=getMask(ID) 
4.  fori:=1tok 
5.   ifHD(CodeA[i],MaskA[i],CodeB,MaskB)SV 
6.     return”accept” 
7.  return”reject” 
8.  parend

 
IrisIdentification 
 
Eingabe:CodeA[],MaskA[] 
 
1.  parbegin 
2.  fori:=1toN 
3.   CodeB:=getCode(i) 
4.   MaskB:=getMask(i) 
5.   fori:=1tok 
6.     ifHD(CodeA[j],MaskA[j],CodeB,MaskB)SI 
7.       returngetID(i) 
8.  return”noresult” 
9.  parend

Erläuterungen

4.3 Schnittstellen

Dieser Abschnitt beschäftigt sich mit der Schnittstelle zum Austausch und Abspeicherung der Iris Templatedaten. Es wird nur beschrieben wie die Struktur eines Templates aussieht, genauere Details zur physikalischen Speicherung der Templates sind unter 2.3 zu finden.

Zu einem Iris Template gehören der Daten- und Maskenvektor sowie die zu jedem Template gehörige ID. Die Datenstruktur eines Iris-Templates hat somit eine feste Größe von 4128 bit. Der Aufbau der Datenstruktur ist wie folgt definiert:

        id       ::= 32bit unsigned integer  
        vector   ::= 2048bit unsigned integer  
        mask     ::= 2048bit unsigned integer  
        template ::= id vector mask

Da bei eventuellen Änderungen im Algorithmus zur Iriscode-Erzeugung die bereits vorhandenen Iriscode-Templates ungültig werden können, kann es nötig sein, die Templates neu zu generieren. Hierzu wird eine weitere Datendatei angelegt, die nur beim Rollout der Daten eine Rolle spielt und die Originalbilder der Iriden persistent speichert:

        id        ::= 32bit unsigned integer  
        picture   ::= byte*  
        rollout   ::= id picture  
        rolloutdb ::= rollout*