!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRS
MASARYKOVA UNIVERZITA FAKULTA INFORMATIKY
Biometricka´ registrace otisku˚ prstu˚ BAKALA´RˇSKA´ PRA´CE
Daniel Stibor
Brno, podzim 2010
Prohla´sˇenı´ Prohlasˇuji, zˇe tato bakala´rˇska´ pra´ce je my´m pu˚vodnı´m autorsky´m dı´lem, ktere´ jsem vypracoval samostatneˇ. Vsˇechny zdroje, prameny a literaturu, ktere´ jsem prˇi vypracova´nı´ pouzˇ´ıval nebo z nich cˇerpal, v pra´ci rˇa´dneˇ cituji s uvedenı´m u´plne´ho odkazu na prˇ´ıslusˇny´ zdroj.
ˇ ´ıha, Ph.D. Vedoucı´ pra´ce: Ing. Mgr. Zdeneˇk R ii
Podeˇkova´nı´ Na tomto mı´steˇ bych ra´d podeˇkoval sve´mu vedoucı´mu za odbornou pomoc prˇi vedenı´ me´ bakala´rˇske´ pra´ce, a take´ za cenne´ rady prˇi vytva´rˇenı´ prakticke´ cˇa´sti pra´ce.
iii
Shrnutı´ R R Tato bakala´rˇska´ pra´ce se zaby´va´ akvizicı´ otisku˚ prstu˚ cˇtecˇkou Crossmatch Verifier
300 LC 2.0 a meˇrˇenı´m kvality zı´skany´ch vzorku˚ za pomoci sady funkcı´ NFIQ z knihovny NBIS. Teoreticka´ cˇa´st uvozuje cˇtena´rˇe do problematiky biometricky´ch technologiı´. Prakticka´ cˇa´st te´to pra´ce v implementaci kombinuje snı´ma´nı´ otisku˚ s meˇrˇenı´m kvality za u´cˇelem registrace jejich nositele.
iv
Klı´cˇova´ slova Biometriky, otisky prstu˚, Crossmatch Verifier 300 LC 2.0, C, C++, WinAPI, NIST, NIST Biometric Image Software, NBIS
v
Obsah ´ vod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . U Biometriky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1 Biometricke´ syste´my . . . . . . . . . . . . . . . . . . . . . . 2.1.1 Za´kladnı´ vlastnosti biometricky´ch syste´mu˚ . . . . 2.1.2 Krite´ria pro vy´beˇr meˇrˇitelny´ch biometrik cˇloveˇka 2.1.3 Chybovost . . . . . . . . . . . . . . . . . . . . . . . 2.2 Otisky prstu˚ . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3 Dalsˇ´ı cˇasto pouzˇ´ıvane´ biometriky . . . . . . . . . . . . . . . . 3 Pouzˇite´ knihovny . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1 Crossmatch USB SDK . . . . . . . . . . . . . . . . . . . . . 3.1.1 Inicializace snı´macˇe . . . . . . . . . . . . . . . . . 3.1.2 Runtime zmeˇny nastavenı´ . . . . . . . . . . . . . . 3.2 NIST Biometric Image Software . . . . . . . . . . . . . . . . 3.2.1 PCASYS . . . . . . . . . . . . . . . . . . . . . . . . 3.2.2 MINDTCT . . . . . . . . . . . . . . . . . . . . . . . 3.2.3 NFIQ . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.4 AN2K . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.5 IMGTOOLS . . . . . . . . . . . . . . . . . . . . . . 3.2.6 BOZORTH3 . . . . . . . . . . . . . . . . . . . . . . 3.2.7 NFSEG . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.8 SIVV . . . . . . . . . . . . . . . . . . . . . . . . . . 4 Implementace praktice´ cˇa´sti bakala´rˇske´ pra´ce . . . . . . . . . 4.1 Analy´za a na´vrh aplikace . . . . . . . . . . . . . . . . . . . . 4.2 Implementacˇnı´ detaily a za´sady . . . . . . . . . . . . . . . . . 4.2.1 Programovacı´ jazyk . . . . . . . . . . . . . . . . . 4.2.2 Platforma . . . . . . . . . . . . . . . . . . . . . . . 4.2.3 Knihovny trˇetı´ch stran . . . . . . . . . . . . . . . . 4.2.4 Pouzˇite´ programovacı´ konvence . . . . . . . . . . Na´zvy promeˇnny´ch 14 Na´zvy funkcı´ 15 Na´zvy trˇ´ıd 15 Na´zvy souboru˚ 15 1 2
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
3 4 4 4 5 5 6 6 8 8 8 9 9 10 10 10 10 11 11 11 12 13 13 13 13 14 14 14
1
Ochrana proti vı´cena´sobne´mu vlozˇenı´ 15 Uka´zka definice trˇ´ıdy v souboru .hpp 15 Uka´zka deklarace trˇ´ıdy v souboru .cpp 16 Programovacı´ styl 16 Komenta´rˇe 17 5 Dokumentace zdrojovy´ch ko´du˚ a vy´sledne´ho programu 5.1 CrossmatchWrapper . . . . . . . . . . . . . . . . . . . 5.2 GrayscaleBitmap . . . . . . . . . . . . . . . . . . . . . 5.3 LimitSingleInstance . . . . . . . . . . . . . . . . . . . . 5.4 Ostatnı´ funkce . . . . . . . . . . . . . . . . . . . . . . 5.5 Popis GUI . . . . . . . . . . . . . . . . . . . . . . . . . 6 Za´veˇr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
18 18 20 21 21 23 24
2
Kapitola 1
´ vod U Ve sve´ bakala´rˇske´ pra´ci jsem se rozhodl vyvinout aplikaci pro snı´ma´nı´ biometricky´ch dat (otisku˚ prstu˚) a meˇrˇenı´ jejich kvality. V soucˇasne´ dobeˇ se kriticky zvysˇuje potrˇeba identifikace a verifikace totozˇnosti lidı´ pouze podle jejich fyziologicky´ch aspektu˚. Oproti tradicˇnı´m technika´m identifikace na´m biometriky nabı´zejı´ zcela odlisˇne´ mozˇnosti. Jejich nejveˇtsˇ´ı vy´hodou je fakt, zˇe jsou nezameˇnitelne´, nepropu˚jcˇitelne´ a nezcizitelne´. Biometriky lze vsˇak obecneˇ pouzˇ´ıvat nejen k zı´ska´nı´ identity, ale take´ k jejı´ verifikaci (naprˇ. autentizace uzˇivatelu˚). S pomocı´ biometrik se vu˚cˇi druhe´ straneˇ prokazujeme neˇcˇ´ım, cˇ´ım jsme. Na rozdı´l od klasicky´ch metod autentizace, u ktery´ch musı´me neˇco vlastnit (token, platebnı´ karta, . . . ), nebo neˇco zna´t (typicky heslo). Biometrie je automatizovany´ proces zı´ska´nı´ identity jedince na za´kladeˇ ” unika´tnı´ch fyzicky´ch, chemicky´ch, cˇi behaviora´lnı´ch kvalit jedince.“1 . Pra´ce je rozdeˇlena na teoretickou a praktickou cˇa´st. V teoreticke´ cˇa´sti jsem se zaby´val vlastnostmi biometricky´ch dat, jejich akvizicı´, meˇrˇenı´m kvality a na´sledny´m vyhodnocova´nı´m s du˚razem pra´veˇ na otisky prstu˚. V na´vaznosti na uvedene´ informace jsem zmı´nı´l za´kladnı´ popis knihoven pouzˇity´ch prˇi implementaci prakticke´ cˇa´sti. Prima´rnı´m u´kolem prakticke´ cˇa´sti je naprogramova´nı´ funkcˇnı´ aplikace, ktera´ doka´zˇe snı´mat otisky prstu˚ a urcˇovat jejich kvalitu v rea´lne´m cˇase. V jednotlivy´ch kapitola´ch druhe´ cˇa´sti sve´ bakala´rˇske´ pra´ce jsem popsal obecne´ informace o implementaci softwaru, pouzˇity´ programovacı´ jazyk, pouzˇite´ programovanı´ konvence, atd. V na´vaznosti na obecnou cˇa´st jsem uvedl implementacˇnı´ detaily a strucˇne´ vysveˇtlenı´ jednotlivy´ch funkcı´ vcˇetneˇ popisu uzˇivatelske´ho rozhranı´.
1. [Handbook of biometrics; Jain, A., Flynn, P., Ross, A.][2]
3
Kapitola 2
Biometriky ´ vodnı´ kapitola je veˇnova´na za´kladnı´mu popisu biometrik a metoda´m U zı´ska´va´nı´ teˇchto fyziologicky´ch vlastnostı´ cˇloveka. Tato cˇa´st mojı´ bakala´rˇske´ pra´ce pocha´zı´ cˇa´stecˇneˇ z knih Autorizace elektronicky´ch transakcı´ a autentizace dat i uzˇivatelu˚[3], Biometrics[1] a ze za´znamu symposia 46th International Symposium Electronics in Marine[4].
2.1
Biometricke´ syste´my
Biometricke´ syste´my jsou zalozˇeny na porovna´va´nı´ vzoru˚. To znamena´, zˇe kazˇdy´ budoucı´ uzˇivatel musı´ nejprve prˇedlozˇit pozˇadovany´ referencˇnı´ vzorek, ktery´ se ulozˇ´ı do databa´ze. Tomuto procesu se rˇ´ıka´ registrace. Biometricke´ syste´my lze rozdeˇlit na dva typy: verifikacˇnı´ a identifikacˇnı´. Verifikacˇnı´ biometricke´ syste´my porovna´vajı´ poskytnuty´ vzorek pouze s vzorky identity, vu˚cˇi ktere´ je testova´n. Identifikace musı´ zı´skanou biometriku porovnat se vsˇemi za´znami v databa´zi. 2.1.1 Za´kladnı´ vlastnosti biometricky´ch syste´mu˚ Kazˇdy´ biometricky´ syste´m se musı´ skla´dat ze cˇtyrˇ elementa´rnı´ch cˇa´stı´: •
Senzor pro akvizici biometricky´ch dat.
•
Modul pro zpracova´nı´ zajisˇt’ujı´cı´ extrakci hlavnı´ch rysu˚ ze zı´skany´ch dat.
•
Modul pro porovna´nı´, ktery´ hleda´ podobnosti s jizˇ registrovany´mi biometrikami v databa´zi.
•
Rozhodovacı´ modul, ktery´ na za´kladeˇ nastavenı´ citlivosti syste´mu bud’ potvrdı´, nebo zamı´tne autentizacˇnı´ proces. 4
2. BIOMETRIKY 2.1.2 Krite´ria pro vy´beˇr meˇrˇitelny´ch biometrik cˇloveˇka Jaka´koliv behaviora´lnı´ cˇi fyziologicka´ charakteristika jedince mu˚zˇe by´t pouzˇita jako autentizacˇnı´ krite´rium biometricke´ho syste´mu, pokud splnˇuje tyto vlastnosti: •
Univerza´lnost - kazˇdy´ ji musı´ mı´t
•
Rozlisˇitelnost - zˇa´dnı´ dva lide´ by ji neˇmeli mı´t stejnou
•
Nemeˇnnost - biometrika by meˇla by´t konstantnı´ po nejdelsˇ´ı mozˇnou dobu existence (nejle´pe dozˇivotneˇ)
•
Zı´skatenost - biometrika by meˇla by´t od uzˇivatele snadno zı´skatelna´
•
Sˇetrnost vu˚cˇi uzˇivateli
•
Robustnost proti zfalsˇova´nı´
Da´le mu˚zˇeme jeˇsˇteˇ uve´st spı´sˇe praktickou vlastnost, cozˇ je rea´lna´ pouzˇitelnost dane´ biometriky, kde bude za´lezˇet prˇedevsˇ´ım na financˇnı´ dostupnosti biometricke´ho syste´mu, jeho rychlosti a prˇesnosti. 2.1.3 Chybovost ”Nejvy´znameˇjsˇ´ı rozdı´l mezi biometricky´mi a tradicˇnı´mi technologiemi spocˇ´ıva´ ve tvaru odpoveˇdi na autentizacˇnı´ pozˇadavek”[3]. Standardnı´ zpu˚soby autentizace heslem nebo tokenem jsou typicky jednoznacˇne´ a rychle rozhodnutelne´. V biometricky´ch syste´mech dosta´va´me namı´sto bina´rnı´ odpoveˇdi pouze mı´ru pravdeˇpodobnosti. Fakt, zˇe nikdy neobdrzˇ´ıme stoprocentnı´ odpoveˇd, je da´n mnoha omezujı´cı´mi faktory, mezi ktere´ patrˇ´ı naprˇ´ıklad sˇpatne´ nastavenı´ snı´macˇe, deformace nebo absence snı´many´ch cˇa´stı´ teˇla (lide´ s postizˇenı´m), uzˇivatelska´ interakce (deˇti), sˇpatne´ okolnı´ podmı´nky, . . . Z toho plyne, zˇe biometricke´ syste´my musejı´ by´t do jiste´ mı´ry tolerantnı´ a musejı´ pocˇ´ıtat s urcˇitou variabilitou zı´skany´ch biometricky´ch dat. Pra´veˇ variabilita urcˇuje, do jake´ mı´ry je nutne´, aby biometricka´ data byla shodna´, aby proces prˇipusˇteˇnı´ do syste´mu u´speˇl. Nastavı´me-li nı´zkou variabilitu, bezpecˇnost cele´ho syste´mu se signifikantneˇ zvy´sˇ´ı. Prˇi interakci s biometricky´mi syste´my rozlisˇujeme dva druhy chyb.1 1. V idea´lnı´ch biometricky´ch syste´mech se s teˇmito fenome´ny nesetka´va´me. Opra´vneˇny´m uzˇivatelu˚m je vzˇdy udeˇlen prˇ´ıstup a naopak.
5
2. BIOMETRIKY •
Nespra´vne´ prˇijetı´ (False Acceptance) - u´speˇsˇna´ udeˇlenı´ prˇ´ıstupu neopra´vneˇne´mu uzˇivateli (syste´m povazˇuje prˇelozˇena´ data za dostatecˇneˇ shodna´ s registrovany´m vzorkem).
•
Nespra´vne´ odmı´tnutı´ (False Rejection) - odmı´tnutı´ opra´vneˇne´ho uzˇivatele (syste´m nepovazˇuje prˇelozˇena´ data za dostatecˇneˇ shodna´ s registrovany´m vzorkem).
Vy´sˇe uvedene´ chyby jsou prˇ´ımo za´visle´ na nastavenı´ variability.
”grafy funkcı´ FRR a FAR”- Obra´zek 1.1 2
2.2
Otisky prstu˚
Otisky prstu˚ jsou jedny z nejdu˚lezˇiteˇjsˇ´ıch a nejspolehliveˇjsˇ´ıch biometrik. Veˇdnı´ disciplı´na, ktera´ tuto problematiku detailneˇ studuje, se nazy´va´ daktyloskopie. Laicka´ verˇejnost si spojuje vyzˇitı´ prˇedevsˇ´ım s kriminalistikou. V poslednı´ dobeˇ se vsˇak sta´le vı´ce vyuzˇ´ıva´ jako virtua´lnı´ klı´cˇ naprˇ´ıklad prˇi kontrole opra´vneˇnosti vstupu naprˇ. na chra´neˇna´ pracovisˇteˇ.
2.3
Dalsˇ´ı cˇasto pouzˇ´ıvane´ biometriky
Na´sleduje kra´tky´ vy´cˇet nejpouzˇ´ıvaneˇjsˇ´ıch biometricky´ch metod identifikace a autentizace 2. Na obra´zku 1.1 je videˇt, zˇe mı´ra´ nespra´vne´ho odmı´tnutı´ je neprˇ´ımo u´meˇrna´ nespra´vne´mu prˇijetı´.
6
2. BIOMETRIKY Pach DNA Duhovka Podpis Hlas Sı´tnice Tva´rˇ
7
Kapitola 3
Pouzˇite´ knihovny Ve sve´ bakala´rˇske´ pra´ci jsem kromeˇ standardnı´ch knihoven jazyka C/C++ pouzˇ´ıval dalsˇ´ı specializovne´ biometricke´ knihovny. Prvnı´ z nich je Software Development Kit(SDK) od spolecˇnosti Cross Match Technologie, Inc., ktere´ zprostrˇedkova´va´ komunikaci s snı´macˇem otisku˚ prstu˚ Verifier 300 LC 2.0, a da´le knihovnu NIST Biometric Image Software(NBIS) umozˇnˇujı´cı´ meˇrˇenı´ kvality zı´skane´ho otisku.
3.1
Crossmatch USB SDK
Crossmatch USB SDK je knihovna funkcı´ urcˇena´ pro cˇtecˇky otisku˚ prstu˚ a cˇtecˇky cˇa´rovy´ch ko´du˚ od spolecˇnosti Cross Match Industries, Inc. Balı´k obsahuje podrobnou dokumentaci, uka´zkove´ aplikace v neˇkolika programovacı´ch jazycı´ch, hlavicˇkove´ soubory a prˇekompilovanou knihovnu. Znacˇne´ omezenı´ SDK je da´no jeho slabsˇ´ı kompaktibilitou. Je urcˇeno pouze c a to pouze od pro rodinu operacˇnı´ch syste´mu˚ Microsoft Windows , verze XP(vcˇetneˇ) a vysˇsˇ´ı. Pro spra´vne´ prˇelozˇenı´ zdrojovy´ch ko´du˚ je take´ silneˇ doporucˇen pouze Microsoft Visual C/C++ 6.0 Compiler. Kompletnı´ SDK vcˇetneˇ dokumentace a uka´zkovy´ch zdrojovy´ch ko´du˚ je mozˇne´ zı´skat na adrese http://www.crossmatch.com/DownloadSDK.php?file= USB_SDK.zip. 3.1.1 Inicializace snı´macˇe Pro zaha´jenı´ pra´ce se snı´macˇem je vzˇdy potrˇeba knihovnu na zacˇa´tku incializovat. K tomu slouzˇ´ı funkce USB Initialize. Argumenty jsou pozˇadovana´ vy´sˇka a sˇ´ırka snı´mane´ho otisku, ktere´ musı´ by´t deˇlitelne´ osmi a handler okna, do ktere´ho chceme otisk po zachycenı´ vykreslit. V prˇ´ıpadeˇ, zˇe nechceme automaticke´ vykreslovanı´, stacˇ´ı prˇedat jako trˇetı´ parametr makro NULL. Da´le je trˇeba zaregistrovat tzv. Callback funkce, ktere´ budou automaticky zavola´ny vzˇdy, kdyzˇ cˇtecˇku prˇipojı´me, cˇi odpojı´me. 8
3. POUZˇITE´ KNIHOVNY 3.1.2 Runtime zmeˇny nastavenı´ Po u´speˇsˇne´ inicializaci na´m SDK snı´macˇe dovoluje libovolneˇ meˇnit nastavenı´ souvisejı´cı´ s porˇizova´nı´m otisku. Kazˇda´ upravitelna´ vlastnost snı´macˇe je ovla´da´na pa´rem fukcı´. Jsou to metody Set* a Get* umozˇnˇujı´cı´ zı´skat nebo zmeˇnit nastavenı´ cˇtecˇky ulozˇene´ ve vnitrˇnı´ pameˇti EEPROM. Nastavitelne´ vlastnosti jsou na´sledujı´cı´: •
Rozmeˇry snı´mku – maxima´lnı´ rozmeˇry jsou 640 x 480 (individua´lnı´ pro ru˚zne´ cˇtecˇky).
•
Jas
•
Kontrast
•
Snı´ma´nı´ na vy´sˇku – prˇilozˇenı´ prstu vertika´lneˇ
•
Snı´ma´nı´ na sˇ´ırˇku – prˇilozˇenı´ prstu vertika´lneˇ
•
Gain“ faktor – mı´ra odra´zˇenı´ sveˇtla od plochy snı´macˇe ” Barevna´ inverze
• • •
3.2
Rotace – po smeˇru hodinovy´ch rucˇicˇek; obsahuje prˇipravena´ makra USB ROTATION 0, USB ROTATION 90, USB ROTATION 180, USB ROTATION 270 ”
Live“ mo´d – uzˇivatel vidı´, co pra´veˇ cˇtecˇka snı´ma´
NIST Biometric Image Software
NIST Biometric Image Software (NBIS) je komplexnı´ biometricka´ knihovna obsahujı´cı´ sadu funkcı´ a na´stroju˚ pro pra´ci nejen s digitalizovany´mi otisky prstu˚, ale i jiny´mi biometricky´mi daty. O jejı´ vy´voj a u´drzˇbu se stara´ americky´ National Institute of Standrards and Technology (NIST). Cela´ knihovna je rozdeˇlena do osmi logicky´ch celku˚, z nichzˇ kazˇdy´ poskytuje ucelenou funkcionalitu. Zdrojove´ ko´dy jsou napsa´ny pro rodinu operacˇnı´ch syste´mu˚ Unix v jazyce ANSI C, cozˇ zarucˇuje vysokou prˇenositelnost a efektivitu ko´du. Vzhledem k bezpecˇnostnı´m implikacı´m je knihovna distiribuova´na vy´hradneˇ fyzicky na kompaktnı´m disku, a to pouze vybrany´m institucı´m ve vybrany´ch zemı´ch sveˇta. V prakticke´ cˇa´sti me´ bakala´rˇske´ pra´ce pouzˇ´ıva´m prˇedevsˇ´ım cˇa´sti NFIQ pro analy´zu kvality zı´skane´ho otisku, MINDTCT pro nalezenı´, binarizaci a ohodnocenı´ makrant, a da´le IMGTOOLS pro prˇevod obra´zku otisku prstu do raw“(struktura obsahujı´cı´ pouze informace o jednolivy´ch pixelech bez ” forma´tova´nı´, cˇi komprimace) dat. 9
3. POUZˇITE´ KNIHOVNY 3.2.1 PCASYS Syste´m rozpozna´va´nı´ vzoru˚ v otiscı´ch prstu˚ pomocı´ neuronovy´ch sı´tı´ (neuronova´ sı´t’ je vy´pocˇetnı´ model pouzˇ´ıvany´ v umeˇle´ inteligenci. Neuronove´ sı´teˇ jsou inspirova´ny skutecˇny´mi biologicky´mi neurony. V modernı´ informatice jsou pouzˇ´ıva´ny prˇedevsˇ´ım pro distribuovane´ paralelnı´ zpracova´nı´ dat)1 . Doka´zˇe automaticky zarˇadit snı´mek otisku prstu do prˇ´ıslusˇne´ trˇ´ıdy rozkladu podle markant. V noveˇjsˇ´ıch verzı´ch knihovny je pouzˇita vylepsˇena´ neuronova´ sı´t’ - MLP(multi-layered perceptron). Dle oficia´lnı´ho vyja´drˇenı´ NIST se jedna´ o naprosto unika´tnı´ syste´m, ktery´ je jako jediny´ poskytova´n zdarma. 3.2.2 MINDTCT Toto oznacˇenı´ vyjadrˇuje detektor detailu˚, ktery´ automaticky rozpozna´va´ a ukla´da´ markanty na prˇedlozˇene´m biometricke´m snı´mku. Da´le tato cˇa´st poskytuje apara´t pro prˇideˇlenı´ kvalitativnı´ho hodnocenı´ dane´ho otisku dle zadany´ch krite´riı´. Tato cˇa´st knihovny nabı´zı´ take´ funkce pro export dat do ru˚zny´ch formatu˚. Stejneˇ jako prˇedchozı´, i tato cˇa´st knihovny je dle oficia´lnı´ho vyja´drˇenı´ NIST je takte´zˇ naprosto unika´tnı´. 3.2.3 NFIQ Spolu s dalsˇ´ımi trˇemi knihovnami FING2PAT, ZNORMDAT, ZNORMPAT tvorˇ´ı komplexnı´ na´stroj pro meˇrˇenı´ kvality otisku prstu˚. Po analy´ze prˇideˇluje algoritmus hodnocenı´ snı´mku, a to ve stupnici od jedne´ do peˇti, kde cˇ´ıslo jedna znacˇ´ı nejvysˇsˇ´ı mozˇnou kvalitu otisku. Organizace NIST da´le uva´dı´, zˇe kvalitneˇjsˇ´ı otisky jednak le´pe korespondujı´ s realitou, a za´rovenˇ signifikantneˇ minimalizujı´ cˇas potrˇebny´ pro jejich dalsˇ´ı zpracova´nı´ ostatnı´mi algoritmy knihovny NBIS. 3.2.4 AN2K Jedna´ se o referencˇnı´ implementaci funkcı´ standardu ANSI/NIST-ITL 12007 (”Data Format for the Interchange of Fingerprint, Facial, Scar Mark & Tattoo (SMT) Information”). Najdeme zde prˇedevsˇ´ım funkce a struktury navrzˇene´ pro pra´ci (cˇtenı´, za´pis, u´prava a dalsˇ´ı manipulace) se soubory a daty splnˇujı´cı´mi vy´sˇe uvedenou normu. Tato soucˇa´st knihovny podporuje a je plneˇ kompaktibilnı´ s nejnoveˇjsˇ´ı verzı´ standardu ANSI/NIST-ITL 1-2007. 1. http://en.wikipedia.org/wiki/Neural_network
10
3. POUZˇITE´ KNIHOVNY 3.2.5 IMGTOOLS Soucˇa´st knihovny obsahujı´cı´ mohutnou kolekci funkcı´ a na´stroju˚ urcˇeny´ch k zpracova´va´nı´ digitalizovany´ch otisku˚ prstu˚. Obsahuje prˇ´ımou podporu forma´tu˚ JPEG a WSQ (FBI’s Wavelet Scalar Quantization). Velkou cˇa´st knihovny IMGTOOLS tvorˇ´ı zdrojove´ ko´dy skupiny vystupujı´cı´ pod zkratkou IJG (Independent JPEG Group)2 , jejichzˇ knihovna splnˇuje vesˇkere´ ISO JPEG normy. Samozdrˇejmostı´ jsou metody pro ko´dova´nı´ a deko´dova´nı´ teˇchto obra´zku˚ na dalsˇ´ı rozsˇ´ırˇene´ forma´ty graficky´ch dat.
3.2.6 BOZORTH3 Za´kladnı´ algoritmus pro porovna´va´nı´ zı´skany´ch otisku˚ knihovnou MINDTCT, zalozˇeny´ na detailnı´ analy´ze markant otisku˚. Nabı´zı´ dveˇ mozˇnosti porovna´nı´. Jedna ku jedne´ nebo jedna ku n. Princip je jednoduchy´. Algoritmus extrahuje markanty a vytvorˇ´ı z nich sˇablony, pomocı´ ktery´ch posle´ze porovna´va´ prˇedlozˇene´ otisky.
3.2.7 NFSEG Je segmentacˇnı´ algoritmus pro zpracova´va´nı´ jednotlivy´ch otisku˚ prstu˚ nalezeny´ch na tzv. Fingerprint card“ (obr 4.1), cozˇ je formula´rˇ s kompletnı´mi ” otisky prstu˚ registrovane´ osoby. Pouzˇ´ıva´ se take´ pro orˇezanı´ bı´ly´ch mı´st z porˇ´ızeny´ch otisku˚.
2. http://www.ijg.org/
11
3. POUZˇITE´ KNIHOVNY
”Fingerprint card”- Obra´zek 2.1 3.2.8 SIVV Tato cˇa´st knihovny zava´dı´ validacˇnı´ a verifikacˇnı´ metriky pro digita´lneˇ porˇ´ızene´ otisky, hleda´ nejdominantneˇjsˇ´ı markanty, pokousˇ´ı se o aproximaci rychlosti vzorkova´nı´ pouzˇite´ cˇtecˇky a nabı´zı´ take´ meˇrˇenı´ kvality, ktere´ je ovsˇem vy´razneˇ me´neˇ prˇesneˇjsˇ´ı nezˇ drˇ´ıveˇ zminˇovany´ NFIQ. Detalnı´ popis te´to cˇa´sti se nacha´zı´ v technicke´ zpra´veˇ NISTIR 7599.
12
Kapitola 4
Implementace praktice´ cˇa´sti bakala´rˇske´ pra´ce V na´sledujı´cı´ kapitole se veˇnuji na´vrhu, implementaci a za´kladnı´m principu˚m funkcionality softwaru, ktery´ jsem nazval Fingerprint capture and evaluation application (da´le jen FCEA), cozˇ je biometricky´ software vytvorˇeny´ za u´cˇelem akvizice, evaluace a na´sledne´ registrace otisku prtsu˚. Mezi nejveˇtsˇ´ı prˇedosti vy´sˇe zminˇovane´ho produktu bezesporu patrˇ´ı velice jednoducha´ a intuitivnı´ obsluha, kvalitnı´ algoritmicke´ rˇesˇenı´, ktere´ poskytuje knihovna NBIS, nı´zka´ pameˇt’ova´ a procesorova´ na´rocˇnost. Zkompilovany´ program bez pouzˇitı´ optimalizacˇnı´ch na´stoju˚ a debugging informacı´ zabı´ra´ necely´ 1MB. Naopak prˇi maxima´lnı´ optimalizaci rychlosti a minimalizaci ko´du v release mo´du ma´ bina´rnı´ soubor pouze 280KB.
4.1
Analy´za a na´vrh aplikace
Kapitola se zaby´va´ zpracova´nı´m pozˇadavku˚ na funkcionalitu vyvı´jene´ aplikace, cozˇ volneˇ povede k jednoduche´mu datove´mu na´vrhu. Cela´ aplikace je urcˇena spı´sˇe pro koncove´ uzˇivatele, cozˇ implikuje mu˚j prˇ´ıstup k cele´mu na´vrhu. Nejvysˇsˇ´ı prioritu ma´ tudı´zˇ jednochost a prˇ´ıveˇtivost uzˇivatelske´ho rozhranı´, ktere´ se snazˇ´ı by´t intuitivnı´ a vy´stizˇne´. Dalsˇ´ım krite´riem je rychlost a flexibilita aplikace. Vzhledem k faktu, zˇe zı´ska´nı´ otisku prstu a na´sledny´ vy´pocˇet indexu kvality je velmi na´rocˇna´ u´loha pro procesor, bylo velmi du˚lezˇite´ zvolit vhodne´ datove´ struktury a algorimy s co nejnizˇsˇ´ı cˇasovou slozˇitostı´. Velky´ du˚raz byl take´ kladen na rychlou odezvu, cozˇ je zajisˇteˇno rozdeˇlenı´m aplikace do logicky´ch celku˚ spusˇteˇny´ch ve vı´ce vla´knove´m prostrˇedı´.
4.2
Implementacˇnı´ detaily a za´sady
4.2.1 Programovacı´ jazyk Cely´ program je vyvı´jen prˇeva´zˇneˇ v programovacı´m v jazyce C. Jazyk C++ byl pouzˇit pouze pro vytvorˇenı´ trˇ´ı pomocny´ch trˇ´ıd a jednoho jmenne´ho 13
4. IMPLEMENTACE PRAKTICE´ CˇA´STI BAKALA´RˇSKE´ PRA´CE prostoru. Pouzˇita´ norma je ANSI/ISO C++. 4.2.2 Platforma c Aplikace je urcˇena pro operacˇnı´ syste´my Microsoft Windows 4.2.3 Knihovny trˇetı´ch stran •
NBIS - engine pro vy´pocˇet indexu kvality otisku prstu, jehozˇ autorem je National Institute of Standards and Technology (NIST). Knihovna byla vytvorˇena pro Federal Bureau of Investigation (FBI) a Department of Homeland Security (DHS) a jejı´ zdrojove´ ko´dy nejsou verˇejneˇ dostupne´.
•
Crossmatch USB SDK – knihovna pro pra´ci s cˇtecˇkou otisku˚ prstu˚ spravovana´ spolecˇnostı´ Crossmatch Technologies. SDK je distribuova´na formou staticke´ knihovny s hlavicˇkovy´m souborem.
4.2.4 Pouzˇite´ programovacı´ konvence Na´zvy promeˇnny´ch Pojmenova´nı´ promeˇnny´ch jsem zvolil co nejvy´stizˇneˇji, neˇkdy bohuzˇel na u´kor jejich de´lky. Globa´lnı´ promeˇnne´ jsou v mad’arske´ notaci s prefixem g . Trˇ´ıdnı´ atributy jsou oznacˇeny prefixem m . Automatice´ promeˇnne´ na za´sobnı´ku vyuzˇ´ıvajı´ notace CamelCase1 , kde prvnı´ pı´smeno je vzˇdy male´. Konstany jsou pojmenova´ny velky´mi pı´smeny a jako oddeˇlovacˇ slov slouzˇ´ı. Prˇ´ıklady: •
Globa´lnı´ promeˇnne´ DWORD g_dwFoobar = 0;
•
Trˇ´ıdnı´ promeˇnne´ bool m_isFoobar = true;
•
Automaticke´ promeˇnne´ char someCharacter = ’a’;
•
Konstanty const int DEFAULT_FOOBAR = 123;
1. http://c2.com/cgi/wiki?CamelCase
14
4. IMPLEMENTACE PRAKTICE´ CˇA´STI BAKALA´RˇSKE´ PRA´CE Na´zvy funkcı´ Vsˇechny metody a ostatnı´ funkce v globa´lnı´m jmenne´m prostoru splnˇujı´ jednoduche´ sche´ma pojmenovanı´ CamelCase(viz vy´sˇe), kde prvnı´ pı´smeno je vzˇdy male´. Vsˇechny Windows API funkce jsou vzˇdy oznacˇeny ”cˇtyrˇtecˇkou(::)”, cozˇ zlepsˇuje cˇitelnost zdrojove´ho ko´du, a take´ zabranˇuje konflitku pojmenova´nı´ ve jmenny´ch prostorech.2 Naprˇ´ıklad: bool processSomeData(Data * d) { // great code goes in here } Na´zvy trˇ´ıd
Pojmenova´nı´ trˇ´ıd takte´zˇ dodrzˇuje notaci CamelCase.
Na´zvy souboru˚ Kazˇda´ trˇ´ıda je definovana´ v prˇ´ıslusˇne´m souboru nesoucı´m jejı´ jme´no a prˇ´ıponu .hpp. Naopak deklarace jsou umı´steˇny ve stejnojmenne´m souboru s prˇ´ıponou .cpp. Jedinou vy´jimku tvorˇ´ı soubor s funkcı´ WinMain, ktery´ je ulozˇen prˇ´ımo v korˇenove´m adresa´rˇi projektu. Cesta k .hpp souboru˚m: KORENOVY ADRESAR PROJEKTU/include/NAZEV TRIDY/ Cesta k .cpp souboru˚m: KORENOVY ADRESAR PROJEKTU/src/NAZEV TRIDY/
Ochrana proti vı´cena´sobne´mu vlozˇenı´ Kazˇdy´ hlavicˇkovy´ soubor obsahuje direktivy preprocesoru, ktere´ chranı´ prˇed vı´cena´sobny´m vlozˇenı´m prˇi pouzˇitı´ #include. Uka´zka definice trˇ´ıdy v souboru .hpp #ifndef _FOOCLASS_HPP_ #define _FOOCLASS_HPP_ class FooClass { private: // all data attributes and private methods! int m_fooNumber; protected: // all data attributes and method used in inherited objects! public: FooClass(const int n); 2. v C++ te´zˇ zna´me´ jako namespace
15
4. IMPLEMENTACE PRAKTICE´ CˇA´STI BAKALA´RˇSKE´ PRA´CE // class interface functions! }; #endif // _FOOCLASS_HPP_
Uka´zka deklarace trˇ´ıdy v souboru .cpp #include ”include\FooClass.hpp” FooClass::FooClass(const int n) : m_fooNumber(n) { // additional initialization here! }
Programovacı´ styl Pro udrzˇenı´ prˇehlednosti a cˇitelnosti zdrojove´ho ko´du jsem se rozhodl pouzˇ´ıvat na´sledujı´cı´ pravidla: •
Slozˇene´ za´vorky oznacˇujı´cı´ zacˇa´tek nove´ho bloku a jsou vzˇdy na stejne´m rˇa´dku jako funkce nebo klı´cˇove´ slovo, ke ktere´mu se vztahujı´.
•
Slozˇene´ za´vorky jsou vzˇdy pouzˇity i v prˇ´ıpadech, ve ktery´ch kompila´tor umozˇnˇuje jejich vynecha´nı´.
•
goto je prˇezˇitek z jazyka C. Jazyk C++ ma´ mnohem elegantneˇjsˇ´ı rˇesˇenı´ podmı´neˇny´ch skoku˚ v ko´du.
•
Tabula´tory majı´ vzˇdy prˇednost prˇed odsazova´nı´m textu pouhy´mi mezerami.
void doSomething { if (...) { return; } else if (...) { return; } else { return; } } 16
4. IMPLEMENTACE PRAKTICE´ CˇA´STI BAKALA´RˇSKE´ PRA´CE Komenta´rˇe “Good code is its own best documentation.”3 . V duchu tohoto motta se nese cely´ zdrojovy´ ko´d programu vytvorˇene´ho v prakticke´ cˇa´sti me´ bakala´rˇske´ pra´ce. Funkce a pra´ce s daty jsou obohaceny komenta´rˇem pouze u slozˇiteˇjsˇ´ıch, nebo na prvnı´ pohled nejasny´ch konstrukcı´. V ostatnı´ch prˇ´ıpadech jsou u´seky ko´du prˇehledne´, jednoduche´ a jednoznacˇne´.
3. Steve McConnell
17
Kapitola 5
Dokumentace zdrojovy´ch ko´du˚ a vy´sledne´ho programu Na´sledujı´cı´ kapitola se zaby´va´ dokumentacı´ jednotlivy´ch trˇ´ıd, metod a funkcı´. Vzhledem k faktu, zˇe nejsem autorem knihovny NFIQ, ponecha´m tedy studium teˇchto zdrojovy´ch ko´du˚ jako cvicˇenı´ pro prˇ´ıpadne´ za´jemce.
5.1
CrossmatchWrapper
class CrossmatchWrapper { public: static CrossmatchWrapper * instance(); void destroy(); bool init(); bool unInit(); bool isInitialized(); bool setLiveMode(bool liveMode); bool getLiveMode() const; void setDlgHwnd(HWND dialogHwnd); HWND getDlgHwnd(); }; CrossmatchWrapper slouzˇ´ı jako jednoduchy´ obal pro nı´zkou´rovnˇove´ funkce cˇtecˇky. Trˇ´ıda byla inspirova´na na´vrhovy´m vzorem Singleton, z cˇehozˇ plyne absence verˇejne´ho konstruktoru, cˇi destruktoru. Jedna´ se o implementaci, ktera´ nejle´pe vyhovuje potrˇeba´m tohoto projektu. Z du˚vodu konzistence inicializacˇnı´ a deinicializacˇnı´ logiky je vyzˇadova´na pouze jedina´ instance ovla´dajı´cı´ toto zarˇ´ızenı´. •
CrossmatchWrapper(); Priva´tnı´ konstruktor slouzˇ´ıcı´ k inicializaci cˇlensky´ch promeˇnny´ch, a prˇipravenı´ kriticke´ sekce. 18
5. DOKUMENTACE ZDROJOVY´CH KO´DU˚ A VY´SLEDNE´HO PROGRAMU •
∼CrossmatchWrapper(); Priva´tnı´ destruktor implicitneˇ vytvorˇeny´ kompila´torem prˇi prˇekladu.
•
static CrossmatchWrapper * instance(); Staticka´ metoda pro zı´ska´nı´ ukazatele na existujı´cı´ instanci trˇ´ıdy. Pokud instance trˇ´ıdy prˇed vola´nı´m te´to funkce neexistuje, je vytvorˇena priva´tnı´m kontruktorem. Touto cestou dosa´hneme vzˇdy pouze jedne´ instance trˇ´ıdy CrossmatchWrapper.
•
void destroy(); Metoda pro bezpecˇnou dealokaci pointeru, ukazujı´cı´ho na instanci trˇ´ıdy v pameˇti. Drˇ´ıve nezˇ je pameˇt uvolneˇna, metoda vola´ funkci unInit();.
•
bool init(); Metoda pro inicializaci cˇtecˇky, ktera´ musı´ by´t vzˇdy vola´na explicitneˇ na zacˇa´tku programu. Metoda je vla´knoveˇ bezpecˇna´, protozˇe cely´ incializacˇnı´ ko´d je uzamcˇen v kriticke´ sekci. Pokud funkce selzˇe, nema´ cenu da´le pokracˇovat ve vykona´va´nı´ programu.
•
bool unInit(); Metoda pro deinicializaci cˇtecˇky a uvolneˇnı´ prˇideˇleny´ch zdroju˚, ktera´ musı´ by´t vzˇdy vola´na explicitneˇ na konci programu. Metoda je vla´knoveˇ bezpecˇna´, protozˇe cely´ deincializacˇnı´ ko´d je uzamcˇen v kriticke´ sekci.
•
bool isInitialized() const; Inspektor slouzˇ´ıcı´ k zı´ska´nı´ stavu inicializace cˇtecˇky. Metoda je definova´na v hlavicˇkove´m souboru, takzˇe bude kompila´torem inlinova´na.
•
bool setLiveMode(bool liveMode); Mutator pro zapnutı´/vypnutı´ ¨ LiveModu ¨, ktery´ zajisˇt’uje snı´ma´nı´ otisku˚ v rea´lne´m cˇase.
•
bool getLiveMode() const; Inspektor slouzˇ´ıcı´ k zı´ska´nı´ stavu ¨ LiveModu ¨, ktery´ zajisˇt’uje snı´ma´nı´ otisku˚ v rea´lne´m cˇase.
•
void setDlgHwnd(HWND h); Mutator pro ulozˇenı´ HWND1 hlavnı´ho dialogu. Handle je pouzˇit pro zası´la´nı´ zpra´v hlavnı´mu dialogu pomocı´ funkce ::SendMessage(). Metoda je definova´na v hlavicˇkove´m souboru, takzˇe bude kompila´torem inlinova´na.
•
HWND getDlgHwnd(); Inspektor slouzˇ´ıcı´ k zı´ska´nı´ HWND hlavnı´ho dialogu. Metoda je definova´na v hlavicˇkove´m souboru, takzˇe bude kompila´torem inlinova´na.
1. Window’s handle - jednoznacˇny´ identifika´tor oken, dialogu˚ a ovla´dacı´ch prvku˚ ve WindowsAPI.
19
5. DOKUMENTACE ZDROJOVY´CH KO´DU˚ A VY´SLEDNE´HO PROGRAMU
5.2
GrayscaleBitmap
class GrayscaleBitmap { public: static GrayscaleBitmap * instance(); void destroy(); bool createBitmap(const char* inFilename, const unsigned char * iData, const int iWidth, const int iHeight ); }; GrayscaleBitmap je jednoducha´ trˇ´ıda reprezentujı´cı´ 8bitovou bitmapu v pameˇti, obsahujı´cı´ data u´speˇsˇneˇ zı´skane´ho otisku ze cˇtecˇky. Trˇ´ıda nejprve vytvorˇ´ı hlavicˇku souboru, pote´ hlavicˇku .bmp forma´tu korespondujı´cı´ s rozmeˇry, a ostatnı´mi atributy cı´love´ bitmapy, da´le vytvorˇ´ı paletu barev, ktera´ je povinna´ u bitmap s barevnou hloubkou mensˇ´ı, nebo rovnou osmi bitu˚m. Po u´speˇsˇne´m otevrˇenı´ souboru, jehozˇ jme´no a cestu uzˇivatel zvolı´ pomocı´ prˇedchystane´ho ”Save As”dialogu, jsou hlavicˇky, barevna´ paleta a pixely obra´zku zapsa´ny do souboru. •
GrayscaleBitmap(); Priva´tnı´ konstruktor slouzˇ´ıcı´ k vy´pocˇtu palety. Vzhledem k tomu, zˇe konstruktor te´to trˇ´ıdy je v me´m projektu vyvola´n pra´veˇ jednou, nenı´ potrˇeba mı´t paletu ulozˇenou jako konstantu v ko´du, prˇestozˇe by se jisteˇ jednalo o programa´torsky cˇistsˇ´ı formu.
•
∼GrayscaleBitmap(); Priva´tnı´ destruktor implicitneˇ vytvorˇeny´ kompila´torem prˇi prˇekladu.
•
static GrayscaleBitmap * instance(); Staticka´ metoda pro zı´ska´nı´ ukazatele na existujı´cı´ instanci trˇ´ıdy. Pokud instance trˇ´ıdy prˇed vola´nı´m te´to funkce neexistuje, je vytvorˇena priva´tnı´m kontruktorem. Touto cestou dosa´hneme vzˇdy pouze jedne´ instance trˇ´ıdy GrayscaleBitmap.
•
void destroy(); Metoda pro bezpecˇnou dealokaci pointeru, ukazujı´cı´ho na instanci trˇ´ıdy v pameˇti.
•
createBitmap(const char * inFilename, const unsigned char * iData, const int iWidth, const int iHeight ); 20
5. DOKUMENTACE ZDROJOVY´CH KO´DU˚ A VY´SLEDNE´HO PROGRAMU Metoda pozˇadujı´cı´ 4 parametry: cesta a jme´no vy´stupnı´ho souboru, jednotlive´ byty obra´zku, vy´sˇka a sˇ´ırˇka bitmapy. Tato metoda bezezbytku plnı´ pozˇadovanou funkcionalitu cele´ trˇ´ıdy, ktera´ je popsa´na vy´sˇe.
5.3
LimitSingleInstance
class LimitSingleInstance { public: LimitSingleInstance(TCHAR *strMutexName); ˜LimitSingleInstance(); }; LimitSingleInstance je jednoducha´ trˇ´ıda s jednı´m konstruktorem, destruktorem a atributem. Jejı´ jediny´ u´kol je pohlı´dat, aby v cele´m operacˇnı´m syste´mu beˇzˇela pouze jedina´ instance me´ vytvorˇene´ aplikace. Tohoto efektu jsem docı´lil vytvorˇenı´m pojmenovane´ho mutexu2 , ktery´ musı´ by´t z definice unika´tnı´. •
LimitSingleInstance(TCHAR3 *strMutexName); Verˇejny´ konstruktor slouzˇ´ıcı´ k inicializaci pojmenovane´ho mutexu. Jediny´m parametrem je rˇeteˇzec obsahujı´cı´ GUID4 , ktery´ plnı´ funkci jme´na dane´ho mutexu.
•
∼LimitSingleInstance(); Verˇejny´ destruktor, ktery´ pouze zrusˇ´ı (odemkne) mutex.
5.4
Ostatnı´ funkce
•
void updateProgressBarControl(int nfiqIndex); Funkce pro aktualizaci progress baru, ktery´ ukazuje aktua´lnı´ kvalitu otisku.
•
void drawImage(LPBITMAPINFO lpBMI); Funkce s jednı´m parametrem, ktery´m jsou pixely obra´zku. Funkce nedeˇla´ nic jine´ho, nezˇ zˇe vykresluje tyto data do zvolene´ho mı´sta v dialogu.
2. hojneˇ pouzˇ´ıvana´ zkratka pro mutual exclusion. 3. TCHAR je makro, ktere´ zvolı´ vhodny´ datovy´ typ pro ukla´da´nı´ znaku˚ v za´visloti na specifikovane´ znakove´ sadeˇ v dobeˇ prˇekladu. c 4. Globally unique identifier. Toto cˇ´ıslo je generova´no utilitou Microsoft Visual Studia , ktera´ zarucˇuje jeho jedinecˇnost na cele´m sveˇteˇ.
21
5. DOKUMENTACE ZDROJOVY´CH KO´DU˚ A VY´SLEDNE´HO PROGRAMU •
void invokeSaveAsDialog(char * fileName); Funkce vyvola´vajı´cı´ dialog pro vy´beˇr jme´na a mı´sta ulozˇenı´ obra´zku.
•
DWORD WINAPI capturingThreadFunction(LPVOID lpParam); Funkce vykona´vana´ vytvorˇeny´m vla´knem. Funkce nejprve zkontroluje, zda-li neobdrzˇela event znacˇ´ıcı´ ukoncˇenı´, pote´ zkontroluje, jestli je aplikace viditelna´, v prˇ´ıpadeˇ zˇe ne, uspı´ se. Hlavnı´ logika funkce spocˇ´ıva´ v akvizici obra´zku ze cˇtecˇky, vyvola´nı´ funkce void drawImage(LPBITMAPINFO lpBMI); a odesla´nı´ dat dalsˇ´ımu vla´knu ke zpracova´nı´.
•
DWORD WINAPI computingThreadFunction(LPVOID lpParam); Funkce vykona´vana´ vytvorˇeny´m vla´knem. Funkce nejprve zkontroluje, zda-li neobdrzˇela event znacˇ´ıcı´ ukoncˇenı´, pote´ zkontroluje, zda-li obdrzˇela nova´ data, vypocˇ´ıta´ nfiq index kvality, a v prˇ´ıpadeˇ zˇe vyhovuje, vyvola´ funkce void updateProgressBarControl(int nfiqIndex); a void invokeSaveAsDialog(char * fileName);.
•
bool createThreadsAndEvents(); Funkce vytvorˇ´ı nova´ vla´kna a eventy.
•
void initDialog(); Funkce vytvorˇ´ı dialog a inicializuje CrossmatchWrapper.
•
void initCleanUp(); Funkce pro uvolneˇnı´ ukazatelu˚, ukoncˇenı´ vla´ken a smaza´nı´ eventu˚. 22
5. DOKUMENTACE ZDROJOVY´CH KO´DU˚ A VY´SLEDNE´HO PROGRAMU
5.5
Popis GUI
23
Kapitola 6
Za´veˇr Cı´lem me´ bakala´rˇske´ pra´ce bylo vyvinout pocˇ´ıtacˇovy´ program, ktery´ by nebyl pouhou teoretickou uka´zkou, ale naopak se stal prakticky´m pomocnı´kem uzˇivatelu˚m, kterˇ´ı by s nı´m v budoucnu mohli pracovat. Proto jsem si zvolil te´ma, o ktere´m se domnı´va´m, zˇe bude v budoucnu pro spolecˇnost sta´le´ vı´ce du˚lezˇiteˇjsˇ´ı. Vytvorˇil jsem program, ktery´ slouzˇ´ı k snı´ma´nı´ biometricky´ch dat urcˇeny´ch k identifikaci osob. Protozˇe identifikace jednotlivce ve spolecˇnosti bude dle me´ho na´zoru velmi zˇa´dana´ a vy´znamna´ a to v sˇiroke´m spolecˇenske´m kontextu.
24
Literatura [1] John D. Woodward, Jr. and Nicholas M. Orlans and Peter T. Higgis. Biometrics. Berkley, California, USA: McGraw-Hill, 2003. 432 p. ISBN 0-07-222227-1. [2] Anil K. Jain and Patrick Flynn and Arun A. Ross. Handbook of biometrics. New York, NY 10013, USA: Springer Science+Business Media, LLC, 2008. 556 p. ISBN 978-0-387-71040-2. [3] Vasˇek Matya´sˇ and Jan Krhovja´k and kolektiv. Autorizace elektronicky´ch transakcı´ a autentizace dat i uzˇivatelu˚. Blansko: Tisk Reprocentrum, a. s., 2008. 125 p. ISBN 978-80-210-4556-9 [4] Kresimir Delac and Mislav Grgic. A survey of biometric recognition methods. 2004. Dostupne´ na http://citeseerx.ist.psu.edu/viewdoc/ download?doi=10.1.1.95.6440&rep=rep1&type=pdf. [5] Marshall Cline and Greg Lomow and Mike Girou. C++ FAQs, 2nd ed.. Inidianapolis, IN 46290, USA: Pearson Education Corporate Sales Division, 2002. 587 p. ISBN 0-201-30983-1 [6] Miroslav Virius. Pasti a propasti jazyka C++ Brno: CP Books, a. s., 2005. 375 p. ISBN 80-251-0509-1
25