20.09.2015 Views

IDENTYFIKACJA OSÓB NA PODSTAWIE ANALIZY GEOMETRII DŁONI

Identyfikacja osob na podstawie geometrii dloni.pdf - Wydział ...

Identyfikacja osob na podstawie geometrii dloni.pdf - Wydział ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

POLITECHNIKA POZ<strong>NA</strong>ŃSKA<br />

WYDZIAŁ ELEKTRONIKI I TELEKOMUNIKACJI<br />

KATEDRA TELEKOMUNIKACJI MULTIMEDIALNEJ<br />

I MIKROELEKTRONIKI<br />

INŻYNIERSKA PRACA DYPLOMOWA<br />

<strong>IDENTYFIKACJA</strong> <strong>OSÓB</strong> <strong>NA</strong> <strong>PODSTAWIE</strong><br />

A<strong>NA</strong>LIZY <strong>GEOMETRII</strong> <strong>DŁONI</strong><br />

Wojciech KAPSA<br />

Promotor:<br />

dr inż. Sławomir MAĆKOWIAK<br />

Poznań 2010


SPIS TREŚCI<br />

1. WSTĘP ................................................................................................................................... 3<br />

2. SYSTEM BIOMETRYCZNY ............................................................................................... 5<br />

2.1. Biometryki ....................................................................................................................... 5<br />

2.2. Ogólna budowa systemu biometrycznego ....................................................................... 6<br />

2.3. Systemy rozpoznawania osób na podstawie geometrii dłoni .......................................... 7<br />

2.4. Procesy biometryczne.................................................................................................... 10<br />

2.4.1. Rejestracja biometryczna ....................................................................................... 10<br />

2.4.2. Identyfikacja biometryczna .................................................................................... 11<br />

2.4.3. Weryfikacja biometryczna ..................................................................................... 12<br />

2.5. Analiza zgodności biometrycznej dłoni ........................................................................ 13<br />

3. PROJEKT SYSTEMU <strong>GEOMETRII</strong> <strong>DŁONI</strong> ..................................................................... 16<br />

3.1. Cel i założenia przy budowie systemu .......................................................................... 16<br />

3.2. Budowa stolika biometrycznego ................................................................................... 17<br />

3.3. Zbieranie biometryk ...................................................................................................... 19<br />

3.3.1. Przygotowania wstępne eksperymentu .................................................................. 19<br />

3.3.2. Przebieg pobierania próbek biometrycznych ......................................................... 21<br />

3.4. Program komputerowy .................................................................................................. 23<br />

3.4.1. Opis wykorzystanych narzędzi ............................................................................... 23<br />

3.4.2. Przetwarzanie wstępne ........................................................................................... 24<br />

3.4.3. Ekstrakcja cech biometrycznych ............................................................................ 27<br />

3.4.4. Baza danych ........................................................................................................... 36<br />

3.4.5. Komparator biometryczny ...................................................................................... 39<br />

3.4.6. Interfejs programu .................................................................................................. 41<br />

3.5. Transformata Hough ..................................................................................................... 43<br />

4. WYNIKI EKSPERYMENTÓW BIOMETRYCZNYCH .................................................... 47<br />

4.1. Testy identyfikacji biometrycznej ................................................................................. 47<br />

4.2. Testy weryfikacji biometrycznej ................................................................................... 49<br />

4.3. Testy optymalizujące wartość progową ........................................................................ 59<br />

5. PODSUMOWANIE I WNIOSKI ........................................................................................ 64<br />

BIBLIOGRAFIA ...................................................................................................................... 66


1. Wstęp<br />

1. WSTĘP<br />

W dzisiejszym świecie coraz większe znaczenie ma potwierdzanie i odnajdywanie<br />

tożsamości różnych osób. W tym celu używa się wszelakich kart identyfikacyjnych (np.<br />

dowód osobisty, karta płatnicza), kodów PIN czy też haseł dostępu. Dokumenty można<br />

bardzo łatwo zgubić, natomiast hasła mogą zostać szybko zapomniane. Bez nich, w pewnych<br />

sytuacjach, nie będzie możliwe potwierdzenie danej tożsamości.<br />

Mało powszechnym sposobem służącym do potwierdzania tożsamości jest biometria.<br />

Pozwala ona ustalić tożsamość osoby na podstawie jej cech szczególnych. Cechy te są<br />

niemożliwe do zgubienia, jak to może się zdarzyć w przypadku chociażby dokumentów. Nie<br />

można też ich ukraść. Do cech biometrycznych należą np. odciski palców, kształt twarzy,<br />

geometria dłoni, indywidualny sposób chodzenia, itp. Każdy człowiek ma niepowtarzalny<br />

zestaw cech biometrycznych przez co biometria ma prawo bytu i dalszego rozwoju. Jest to<br />

stosunkowo młoda dziedzina nauki. Początki biometrii sięgają ponad sto lat wstecz, gdy<br />

zaczęto badać pierwsze odciski palców. Dopiero z czasem, różne sposoby rozpoznawania<br />

cech specyficznych człowieka przekształciły się w biometrię.<br />

Ciekawymi sposobami identyfikacji osób są systemy biometryczne opierające swoje<br />

działanie na podstawie geometrii dłoni. Podczas działania identyfikują osobę na podstawie<br />

cech charakterystycznych dłoni takich jak: długości palców, szerokości palców lub szerokość<br />

dłoni. Bazują wyłącznie na kształcie dłoni. Obojętny jest kolor skóry czy charakterystyczne<br />

bruzdy palców.<br />

Niniejsza praca inżynierska dotyczy systemu rozpoznawania osób na podstawie<br />

geometrii dłoni. Celem pracy jest przedstawienie ogólnej charakterystyki systemów<br />

biometrycznych i omówienie ich właściwości, z położeniem nacisku na systemy<br />

wykorzystujące geometrię dłoni. Kolejnym zadaniem jest napisanie oprogramowania<br />

pozwalającego na znalezienie cech charakterystycznych dłoni. Program ma umożliwiać<br />

wykonywanie procesu identyfikacji osobniczej z wykorzystaniem odnalezionych cech.<br />

Ostatnim celem pracy jest przeprowadzenie eksperymentów dotyczących poprawności<br />

identyfikacji przy wykorzystaniu geometrii dłoni.<br />

Celem pracy nie jest zbudowanie kompletnego systemu działającego w oparciu<br />

o geometrię dłoni. Praca nie zakłada budowy stolika geometrii dłoni, ani zbierania próbek<br />

biometrycznych dłoni. Moduł programu, umożliwiający weryfikację biometryczną, wykracza<br />

poza zakres pracy, podobnie jak graficzny interfejs użytkownika czy baza danych<br />

zaimplementowana w programie. W komparatorze cech nie było wymagane<br />

3


1. Wstęp<br />

zaimplementowanie czterech różnych metryk odległościowych. Późniejsza analiza tych<br />

metryk i sposobu działania systemu w zależności od każdej z nich przekracza zakres pracy.<br />

W drugim rozdziale przedstawianej pracy inżynierskiej znajduje się omówienie<br />

systemu biometrycznego i jego charakterystyka. Przedstawione zostały pojęcia związane<br />

z biometrią i procesy biometryczne. Rozdział ten bardziej szczegółowo opisuje system<br />

geometrii dłoni.<br />

Trzeci rozdział opisuje budowę kompletnego systemu wykorzystującego geometrię<br />

dłoni. Pokazano tutaj poszczególne kroki wykonane przy budowie systemu. Kluczową częścią<br />

tego rozdziału jest omówienie kodu programu.<br />

Kolejny, czwarty rozdział prezentuje wyniki wykonanych testów identyfikacji<br />

biometrycznej oraz weryfikacji biometrycznej uzyskane z wykorzystaniem zbudowanego<br />

systemu geometrii dłoni.<br />

4


2. System biometryczny<br />

2. SYSTEM BIOMETRYCZNY<br />

2.1. Biometryki<br />

Biometryki są to fizjologiczne i behawioralne cechy osób, dzięki którym możliwe jest<br />

odróżnienie jednej osoby od drugiej. Biometria ma prawo bytu z tego względu, że nie ma<br />

dwóch identycznych biometryk. Największa trudność podczas badań biometrycznych polega<br />

na znalezieniu i odpowiedniej analizie różnic pomiędzy jedną biometryką a drugą. Różnice te<br />

są często bardzo małe i niedostrzegalne. Jak już wspomniano, występują dwa różne typy cech<br />

biometrycznych (biometryk): biometryki fizjologiczne i biometryki behawioralne [1].<br />

Biometryki fizjologiczne wiążą się z indywidualnymi cechami fizycznymi człowieka<br />

mierzonymi w danej chwili czasu. Biometrykami fizjologicznymi są np. odcisk palca,<br />

geometria dłoni czy obraz siatkówki oka. Natomiast biometryki behawioralne związane są<br />

z zachowaniem człowieka [11]. W tym przypadku wymagana informacja zbierana jest przez<br />

pewien okres czasu. Biometrykami behawioralnymi są np. sposób chodzenia, ruch ust, głos.<br />

Biometryki fizjologiczne nie wymagają zbierania informacji w czasie, w przeciwieństwie do<br />

biometryk behawioralnych. Jest tak, dlatego gdyż już jedna próbka niesie wystarczającą ilość<br />

potrzebnych informacji. Biometryki behawioralne potrzebują więcej próbek zbieranych, co<br />

pewien odstęp czasu. W tym przypadku informacja jest zależna od czasu i zmienia się wraz<br />

z nim, przez co zebranie i przeanalizowanie biometryki behawioralnej jest trudniejsze niż<br />

biometryki fizjologicznej. Przykładowe biometryki przedstawione są w tabeli 2.1.<br />

Tabela 2.1. Fizjologiczne i behawioralne cechy biometryczne. Biometryki zaznaczone pogrubioną czcionką są<br />

biometrykami mniej popularnymi i są na wczesnym etapie badań.<br />

Fizjologiczne<br />

Behawioralne<br />

Obraz twarzy<br />

Odciski palców<br />

Geometria dłoni<br />

Obraz tęczówki<br />

Podpis<br />

Głos<br />

D<strong>NA</strong><br />

Termogram<br />

Siatkówka oka<br />

Połysk skóry<br />

Chód<br />

Tempo pisania<br />

Ruch ust<br />

5


2. System biometryczny<br />

2.2. Ogólna budowa systemu biometrycznego<br />

System biometryczny w najprostszym ujęciu jest to zestaw urządzeń służących do<br />

pomiarów biometrycznych i przetwarzania informacji biometrycznej wraz z zestawem<br />

odpowiedniego oprogramowania. Rysunek 2.1 przedstawia uproszczony schemat systemu<br />

biometrycznego [1, 11].<br />

Rysunek 2.1. System biometryczny. Aby system umożliwiał weryfikację lub identyfikację biometryczną konieczna<br />

jest uprzednia rejestracja (przerywana strzałka).<br />

System biometryczny można podzielić na kilka podstawowych części:<br />

Czytniki biometryczne pozwalają na pobieranie próbek biometrycznych za pomocą<br />

czujników biometrycznych. Wygląd i cechy czytnika zależą od rejestrowanej cechy<br />

biometrycznej. Inaczej będzie wyglądał czytnik siatkówki oka, a inaczej czytnik<br />

geometrii dłoni. Typ czytnika wymusza odpowiedni sposób prezentacji próbki<br />

biometrycznej.<br />

Podsystem przetwarzania sygnałów za pomocą tego podsystemu wejściowe próbki<br />

są modyfikowane i przetwarzane. Jego częścią składową jest ekstraktor cech, który<br />

oblicza najważniejsze własności i cechy biometryczne. Dzięki przetworzeniu próbki<br />

wejściowej, jej reprezentacja w bazie danych jest optymalna pod względem<br />

zajmowanego miejsca jak i szybkości przeszukiwania bazy danych.<br />

Baza danych jest miejscem, gdzie przechowywane są zarejestrowane próbki<br />

biometryczne. Rekordy bazy danych oprócz biometryk zawierają dodatkowe<br />

6


2. System biometryczny<br />

informacje ułatwiające zarządzanie bazą i zarejestrowanymi podmiotami. Baza danych<br />

może być zarówno centralna jak i rozproszona.<br />

Centralna baza danych biometrycznych posiada informacje biometryczne<br />

o wszystkich zarejestrowanych użytkownikach. Nowo pobrana próbka biometryczna<br />

jest porównywana z szablonami znajdującymi się w bazie.<br />

Rozproszona baza danych nie musi posiadać informacji o wszystkich<br />

biometrykach. Informacje do takiej bazy dostarczane są np. na inteligentnych kartach<br />

zawierających szablon biometryczny. Biometryka wejściowa jest, w tym przypadku,<br />

porównywana z szablonem z karty inteligentnej.<br />

Komparator biometryczny odpowiada za porównywanie zbiorów cech<br />

biometrycznych. Dzięki niemu możliwe jest sprawdzenie zgodności dwóch biometryk<br />

przez ocenienie stopnia ich podobieństwa. Komparator biometryczny zasadę swego<br />

działania może opierać na punktacji. Zupełnie inną punktację otrzyma para podobnych<br />

biometryk, a inną para niezgodnych biometryk. Od komparatora może zależeć decyzja<br />

o dopuszczeniu użytkownika do systemu lub o jego odrzuceniu.<br />

2.3. Systemy rozpoznawania osób na podstawie geometrii dłoni<br />

Systemy rozpoznawania osób na podstawie geometrii dłoni bazują na budowie<br />

i unikalnym kształcie ludzkiej dłoni [1, 4, 8, 13]. Podczas analizy brane są pod uwagę takie<br />

cechy jak szerokości dłoni, wysokości dłoni, długości palców, szerokości palców, itp.<br />

Informacje te są wystarczające dla rozpoznawania osób. Nie osiągalna jest jednak 100%<br />

dokładność i skuteczność (podobnie jak we wszystkich innych systemach biometrycznych).<br />

Systemy oparte na geometrii dłoni, podczas analizy, nie wykorzystują odcisków palców czy<br />

koloru skóry. Nie zajmują się także wyodrębnianiem detali dłoni, jak chociażby różnych<br />

bruzd na skórze.<br />

Indywidualne cechy ludzkich dłoni są stosunkowo mało zróżnicowane. Przez co<br />

systemy geometrii dłoni cechuje duży współczynnik niesłusznych odrzuceń (FR – False<br />

Rejection) i niesłusznych akceptacji (FA – False Acceptance) [1 ,11]. System geometrii dłoni<br />

jest metodą mniej dokładną od systemów badających ludzkie oko czy odciski palców. Aby<br />

zwiększyć precyzję, a jednocześnie bezpieczeństwo systemu, można połączyć różne metody<br />

biometryczne (np. geometria dłoni i odciski palców). Wadą systemów hybrydowych jest<br />

jednak długi czas pobierania próbek i przetwarzania danych.<br />

Głównym powodem przemawiającym za systemem geometrii ludzkiej dłoni jest jego<br />

przyjazność dla użytkownika. Jego obsługa jest bardzo prosta i intuicyjna. Pobieranie<br />

7


2. System biometryczny<br />

i analiza biometryki zajmuje niewiele czasu. Dodatkowo, metoda pobierania próbki jest<br />

metodą nieinwazyjną, w przeciwieństwie do pomiarów tęczówki czy siatkówki. Budowa<br />

całego systemu nie jest też droga.<br />

Już pod koniec lat 60 powstawały pierwsze urządzenia mające na celu analizę kształtu<br />

ludzkiej dłoni. Wykorzystywały one wiele ciekawych pomysłów, opierając się głównie na<br />

urządzeniach mechanicznych i elektromechanicznych [7]. Na rysunku 2.2 przedstawiono<br />

jedne z pierwszych patentów [2, 3] wykorzystujących kształt dłoni. Lewy rysunek<br />

przedstawia wynalazek wykorzystujący sprężyny, które rozciągają się w zależności od<br />

szerokości i długości dłoni. Niedokładność urządzenia była spowodowana niewielką liczbą<br />

mierzonych cech. Wiele osób może mieć podobną wysokość i szerokość dłoni. Kolejne<br />

urządzenie (po prawej) stosuje elementy półprzewodnikowe i światłoczułe. Światło wpada<br />

przez otwory w stoliku na którym układa się dłoń. Przez to mniej bądź więcej fotoelementów<br />

jest naświetlonych. Budowa stolika pozwala na znalezienie długości czterech palców.<br />

Rysunek 2.2. Pionierskie patenty badające geometrię ludzkiej dłoni. Urządzenie po lewej stronie (opatentowane<br />

w roku 1971) wykorzystuje naprężenie sprężyn [2], urządzenie z prawej strony (opatentowane w roku 1972)<br />

opiera się na elementach światłoczułych [3].<br />

Bardzo ciekawymi prototypami są urządzenia wykorzystujące lustra odbijające<br />

krawędź dłoni [4, 10]. Lustra są skierowane pod kątem około 45 o w stosunku do stolika na<br />

którym umieszczona jest biometryka. Dzięki temu, możliwe jest zarejestrowanie za pomocą<br />

jednej kamery kilku płaszczyzn i uzyskanie obrazu trójwymiarowego. Przykłady takich<br />

urządzeń są przedstawione na rysunku 2.3 i na rysunku 2.4.<br />

Pierwszy z rysunków (rysunek 2.3) przedstawia urządzenie opatentowane w 1988<br />

roku przez Davida P. Sidlauskasa [10]. Wykorzystuje ono trzy zwierciadła odbijające dłoń.<br />

8


2. System biometryczny<br />

Zwierciadło oznaczone numerem 38 pozwala na sfotografowanie bocznej krawędzi dłoni.<br />

W lustrze odbija się jedynie pewna część dłoni od kości śródręcza do paliczków dalszych<br />

palca wskazującego i środkowego. Odbicie nie uwzględnia kciuka, dlatego też w stoliku nie<br />

zainstalowano kołka wymuszającego jego położenie. Cztery kołki zamontowano po to, aby<br />

wymusić prawidłowe ułożenie dłoni.<br />

Rysunek 2.3. Patent Sidlauskasa D.P. z 1988 roku [10]. Urządzenie wykorzystuje lustra w celu uzyskania<br />

trójwymiarowego profilu dłoni.<br />

Jedenaście lat później A.K. Jain i A. Ross zaprezentowali prototypowy system<br />

weryfikujący geometrię ludzkiej dłoni (rysunek.2.4) [4]. Jak łatwo zauważyć jest on bardzo<br />

podobny do patentu Sidlauskasa i również wykorzystuje trójwymiarowy profil dłoni.<br />

Rysunek 2.4. Prototypowy system opisany przez Jain A.K. w 1999 roku. Jest unowocześnioną wersją patentu<br />

z 1988 roku. Dodano piąty kołek wymuszający ułożenie dłoni, powiększono też lustro. Na zdjęciu z prawej strony<br />

pokazano szesnaście osi wzdłuż których wykrywane są poszczególne długości [4].<br />

W systemie tym wprowadzono wiele ulepszeń i modyfikacji w stosunku do pierwowzoru.<br />

Dodano piąty kołek wymuszający ułożenie kciuka na stoliku. Dzięki takiemu posunięciu<br />

9


2. System biometryczny<br />

wyeliminowano błędy, w których nieprawidłowe położenie kciuka przysłaniało odbity obraz.<br />

Dodatkowo, umożliwiło to powiększenie lustra i w konsekwencji odbijana jest większa<br />

powierzchnia dłoni. Odbicie obejmuje początek kości nadgarstka aż do paliczków dalszych<br />

palców wskazującego i środkowego.<br />

W tym systemie wykrywane jest szesnaście odległości pokazanych na rysunku 2.4. Są<br />

to np. F3 – szerokość palca wskazującego w drugim paliczku, F10 – długość palca<br />

środkowego, F16 – grubość palców w trzecim paliczku. Zestaw takich cech tworzy wektor,<br />

który jest zapisywany i przetwarzany w bazie danych.<br />

2.4. Procesy biometryczne<br />

Posługując się systemem biometrycznym wykorzystuje się szereg procesów,<br />

umożliwiających jego działanie. Najważniejszymi procesami biometrycznymi są: rejestracja<br />

biometryczna, identyfikacja biometryczna i weryfikacja biometryczna.<br />

2.4.1. Rejestracja biometryczna<br />

Rejestracja biometryczna jest procesem odpowiedzialnym za zapisywanie rekordów<br />

wraz z biometrykami w bazie danych [1, 12]. Zostaną utworzone szablony z próbek<br />

biometrycznych, przy czym jeden szablon może zawierać kilka próbek biometrycznych. Jest<br />

to ważny proces z tego względu, że dobór biometryk wzorcowych ma wpływ na działanie<br />

całego systemu biometrycznego. Źle dobrane próbki biometryczne rzutują na niską<br />

skuteczność podczas procesów identyfikacji i weryfikacji biometrycznej. Rysunek 2.5<br />

przedstawia proces rejestracji biometrycznej.<br />

Rysunek 2.5. Rejestracja biometryczna. Wraz z biometryką podane są dodatkowe informacje. Dane te posłużą do<br />

zbudowania szablonu biometrycznego i późniejszego wydania karty inteligentnej.<br />

10


2. System biometryczny<br />

Istnieją dwa podstawowe typy rejestracji biometrycznej:<br />

Rejestracja pozytywna, podczas której tworzy się bazę danych uprawnionych<br />

użytkowników. Utworzona baza danych może być wykorzystywana podczas<br />

identyfikacji i weryfikacji pozytywnej.<br />

Rejestracja negatywna, ma na celu zbudowanie bazy danych nieuprawnionych<br />

użytkowników. Utworzona baza danych jest używana podczas identyfikacji<br />

negatywnej.<br />

Podczas tworzenia szablonów biometrycznych wraz z próbkami biometrycznymi są<br />

zapisywane dodatkowe informacje, jak np. imię, nazwisko, kod PIN. Niektóre z tych<br />

informacji mogą zostać przekazane użytkownikowi w postaci np. hasła dostępu albo karty<br />

inteligentnej.<br />

2.4.2. Identyfikacja biometryczna<br />

Identyfikacja biometryczna polega na znalezieniu określonej tożsamości, wyłącznie na<br />

podstawie przedstawionej biometryki [8, 11, 12]. Biometryka wejściowa jest porównywana<br />

z biometrykami wzorcowymi, znajdującymi się w bazie danych, w celu odnalezienia<br />

najbardziej podobnego wzorca. Podczas procesu identyfikacji przeszukiwane są wszystkie<br />

wzorce znajdujące się w bazie danych. Jest to porównanie 1 do N, gdzie N to liczba wzorców<br />

w bazie danych [1]. Proces identyfikacji przedstawia rysunek 2.6. Identyfikacja może być<br />

procesem długotrwałym w zależności od wielkości bazy danych.<br />

Rysunek 2.6. Identyfikacja biometryczna. Poszukiwana biometryka porównywana jest ze<br />

wszystkimi rekordami w bazie danych [1].<br />

11


2. System biometryczny<br />

Biometryczny system identyfikacji może być wykorzystywany w dwóch odmiennych<br />

trybach:<br />

Identyfikacji pozytywnej, polegającej na ustaleniu czy poszukiwana osoba znajduje<br />

się w bazie danych. Podczas tego scenariusza można popełnić błędy, takie jak<br />

niesłuszna akceptacja (FA – False Accept) i niesłuszne odrzucenie (FR– False Reject)<br />

[1, 11]. FA powoduje dostęp intruza do systemu, FR jest przyczyną odrzucenia<br />

prawowitego użytkownika. Błędy te występują również w systemach weryfikacji.<br />

Identyfikacji negatywnej (screening), polegającej na ustaleniu czy poszukiwana<br />

osoba nie znajduje się w bazie danych. W tym przypadku błędy jakie można popełnić<br />

to niesłuszna negacja (FN – False Negative) i niesłuszne potwierdzenie (FP – False<br />

Positive). FN to nie znalezienie zgodności, FP to błędne wykrycie zgodności.<br />

2.4.3. Weryfikacja biometryczna<br />

Weryfikacja biometryczna różni się od identyfikacji biometrycznej tym, że oprócz<br />

przedstawianej biometryki, okazuje się również dodatkową informacje (np. kod PIN) [8, 11].<br />

Ta dodatkowa informacja pozwala na jednoznaczne wskazanie biometrycznego szablonu<br />

przechowywanego w bazie danych. Dzięki temu nie jest konieczne przeszukiwanie całej bazy<br />

danych jak to miało miejsce w procesie identyfikacji. Wskazany szablon biometryczny jest<br />

następnie porównywany z przedstawioną, wejściową próbką biometryczną [1]. Weryfikacja<br />

biometryczna została przedstawiona na rysunku 2.7. Proces weryfikacji biometrycznej to<br />

porównanie 1 do 1, przez co jest to operacja szybka i wielkość bazy danych nie ma ujemnego<br />

wpływu na czas wykonania.<br />

Rysunek 2.7. Weryfikacja biometryczna. Weryfikacji podlega próbka wejściowa z jednym szablonem z bazy<br />

danych. Dodatkowa informacja pozwala na porównanie 1:1 [1].<br />

12


2. System biometryczny<br />

Podczas weryfikacji biometrycznej mogą wystąpić błędy niesłusznej akceptacji FA<br />

lub niesłusznego odrzucenia FR, tak jak to ma miejsce podczas pozytywnej identyfikacji<br />

biometrycznej. Weryfikacja biometryczna jest bezpieczniejsza aniżeli identyfikacja<br />

biometryczna z oczywistych względów. Podczas weryfikacji zawęża się liczba szablonów<br />

przy których można popełnić błąd do jednego. Minusem procesu weryfikacji biometrycznej<br />

jest konieczność posiadania szablonu biometrycznego na karcie inteligentnej i konieczność<br />

jego okazywania przed pobraniem nowej próbki biometrycznej.<br />

2.5. Analiza zgodności biometrycznej dłoni<br />

W celu zweryfikowania zgodności dłoni, porównuje się wektory otrzymane z próbek<br />

biometrycznych [11]. Pierwszy wektor jest obliczony na podstawie nowej biometryki, a drugi<br />

pobierany jest z bazy danych. W bazie danych często, jako jeden szablon, zapisane jest kilka<br />

biometryk. Na podstawie wektorów tych biometryk oblicza się średnią i w ten sposób<br />

powstaje nowy szablon (wektor z uśrednionych wartości).<br />

W systemach geometrii dłoni badano cztery różne metryki odległości [1, 4]:<br />

Odległość bezwzględna:<br />

d<br />

<br />

<br />

Odległość bezwzględna ważona:<br />

Odległość euklidesowa:<br />

j=1<br />

d<br />

j=1<br />

|q j<br />

− r j | < ε a<br />

|q j<br />

− r j |<br />

< ε wa<br />

σ j<br />

(2.1)<br />

(2.2)<br />

d<br />

j=1<br />

(q j<br />

− r j ) 2 < ε (2.3)<br />

e<br />

<br />

Odległość euklidesowa ważona:<br />

d<br />

(q j<br />

− r j ) 2<br />

2<br />

σ<br />

j=1 j<br />

< ε we<br />

(2.4)<br />

13


2. System biometryczny<br />

Pozostałe wzory:<br />

Wariancja j-tej cechy:<br />

σ 2 = 1 n<br />

Średnia arytmetyczna j-tej cechy:<br />

x = 1 n<br />

n<br />

i=1<br />

n<br />

x n<br />

i=1<br />

(x i − x) 2<br />

(2.5)<br />

(2.6)<br />

Oznaczenia:<br />

Q = (q1,q2,…,qd)<br />

R = (r1,r2,…,rd)<br />

d<br />

n<br />

σ 2<br />

x<br />

– wektor cech biometryk, których tożsamość jest weryfikowana.<br />

– wektor cech biometryk w bazie danych<br />

– liczba cech w wektorach<br />

– liczba biometryk składających się na jeden szablon w bazie<br />

danych<br />

– jest wariancją j-tej cechy dla wszystkich zarejestrowanych<br />

szablonów z bazy danych, obliczana jest za pomocą wzoru (2.5)<br />

– jest wartością średnią poszczególnych cech dla wszystkich<br />

biometryk w jednym szablonie (wzór 2.6)<br />

Weryfikacja osiągnie pozytywny wynik w momencie, gdy odległość pomiędzy R i Q będzie<br />

mniejsza od wartości progowej. Wartość progowa dla poszczególnych metryk odległości<br />

oznaczona jest symbolami: ε a , ε wa , ε e , ε we (wzory od (2.1) do (2.4)). W przypadku systemu<br />

geometrii dłoni [4] najlepsze wyniki uzyskano z wykorzystaniem ważonej metryki<br />

euklidesowej [1].<br />

Przedstawiona analiza zgodności opiera się na progu i wykorzystuje punktacje przy<br />

porównywaniu dwóch dłoni. Im mniejszy wynik punktowy, tym dwie biometryki są bardziej<br />

podobne do siebie. Osiągnięcie punktacji równej zeru oznaczałoby, że dwie dłonie są<br />

identyczne (identyczne w miejscach mierzonych cech). Teoretycznie taka sytuacja jest bardzo<br />

mało prawdopodobna. Może się jednak zdarzyć przy bardzo małej długości wektora<br />

mierzonych cech. Dlatego też, systemy biometryczne oparte na punktacji mierzą stosunkowo<br />

wiele cech (prototyp na rysunku 2.4 wykorzystuje szesnaście różnych cech). Osiągnięcie<br />

wysokiej punktacji oznacza, że dwie dłonie różnią się od siebie. Im większy wynik<br />

porównania, tym biometryki zawierają więcej różnic.<br />

14


2. System biometryczny<br />

Jak widać na rysunku 2.8 wektory cech biometryk oszustów posiadają większe<br />

odchylenie, niż wektory cech biometryk zarejestrowanych użytkowników. Obie gęstości<br />

prawdopodobieństwa nachodzą na siebie co jest przyczyną błędów biometrycznych [14].<br />

Rysunek 2.8. Wykres zależności gęstości prawdopodobieństwa w funkcji odchylenia między wektorami cech<br />

użytkownika zarejestrowanego i oszusta [14].<br />

Rozkłady gęstości prawdopodobieństwa dla systemu biometrycznego odzwierciedla<br />

krzywa Gaussa. Niewielki odsetek zarejestrowanych użytkowników będzie miał duże<br />

wartości odchylenia cech lub bardzo niskie wartości odchylenia tychże cech. Wartość średnia<br />

będzie mieściła się mniej więcej pośrodku, pomiędzy wartościami skrajnymi. Sytuacja jest<br />

bardzo podobna jeśli chodzi o oszustów z tą różnicą, że cały wykres zostaje przesunięty<br />

w kierunku większych wartości odchylenia cech.<br />

W systemie biometrycznym opartym na punktacji wykorzystuje się wszystkie<br />

powyższe właściwości, odpowiednio manipulując progiem (rysunek 2.8). Nisko ustawiony<br />

próg powoduje, że system jest bezpieczniejszy (mniejsza liczba intruzów zdoła dostać się do<br />

systemu). Wzrośnie jednak częstość niesłusznych odrzuceń FR czyli FRR (False Reject Rate).<br />

System będzie tak rygorystyczny, że niewielkie różnice w wektorach cech spowodują<br />

odrzucenie prawowitego użytkownika. Gdy próg ustawiony zostanie za wysoko, wzrośnie<br />

częstość niesłusznych akceptacji FA czyli FAR (False Accept Rate). Zaletą wysoko<br />

ustawionego progu jest to, że system biometryczny będzie szybszy [1].<br />

Każdy system biometryczny oparty na progu należy początkowo poddać różnym<br />

testom biometrycznym i określić pożądaną wartość progu. Podczas pracy systemu próg<br />

można zmieniać w zależności od tego czy chcemy uzyskać większe bezpieczeństwo systemu,<br />

czy większą szybkość działania.<br />

15


3. Projekt systemu geometrii dłoni<br />

3. PROJEKT SYSTEMU <strong>GEOMETRII</strong> <strong>DŁONI</strong><br />

Zadaniem niniejszej pracy inżynierskiej było napisanie programu, do określania cech<br />

charakterystycznych dłoni i identyfikacji osobniczej. Praca została jednak rozwinięta w takim<br />

stopniu, że powstał kompletny system biometryczny wykorzystujący geometrię dłoni. Oprócz<br />

samego programu, zaprojektowane i zbudowane zostały odpowiednie urządzenia na potrzeby<br />

przeprowadzanego eksperymentu biometrycznego. Zbudowany system składa się z kilku<br />

części składowych:<br />

Stolik biometryczny wymuszający odpowiednie ułożenie dłoni.<br />

Stanowisko z odpowiednim czytnikiem i oświetleniem, umożliwiające pobranie<br />

próbek biometrycznych.<br />

Program komputerowy, dzięki któremu zebrane biometryki zostały odpowiednio<br />

przetworzone i przeanalizowane. Program zawiera ekstraktor cech biometrycznych,<br />

bazę danych oraz komparator biometryczny.<br />

System, zaprezentowany w tym rozdziale, bazuje na systemach znanych z literatury<br />

i częściowo opisanych w poprzednim rozdziale [4, 10, 13]. Ze względu na bardzo niewielką<br />

ilość dostępnego piśmiennictwa dotyczącego geometrii dłoni, zbudowany system jest<br />

systemem prototypowym i eksperymentalnym.<br />

3.1. Cel i założenia przy budowie systemu<br />

Nadrzędnym celem zaprojektowanego i zbudowanego systemu było osiągnięcie jak<br />

najlepszych rezultatów w procesach biometrycznych: identyfikacji i weryfikacji<br />

biometrycznej. Dlatego też, wszystkie etapy budowy systemu musiały być przeprowadzane<br />

bardzo dokładnie, począwszy od budowy stolika biometrycznego, aż do napisania programu<br />

przetwarzającego biometryki. Krytycznym punktem całego eksperymentu było zbieranie<br />

próbek biometrycznych, które wymagało największej precyzji i uwagi. Było to o tyle trudne<br />

z tego względu, że próbki były zbierane od wielu osób. Bardzo ważna była, w późniejszym<br />

etapie pracy, odpowiednia kalibracja programu komputerowego ze stolikiem biometrycznym.<br />

Bez tego program nie działałby poprawnie (napisany program wykorzystuje cechy<br />

specyficzne stolika takie jak ułożenie kołków czy lusterka).<br />

Podsumowując powyższy akapit, aby osiągnąć jak najlepsze wyniki eksperymentów<br />

biometrycznych należy wykonać wszystkie kroki budowy systemu z dużą dokładnością.<br />

Dodatkowo, w taki sposób, aby każdy element systemu współpracował z pozostałymi i aby<br />

wszystkie tworzyły spójną całość.<br />

16


3. Projekt systemu geometrii dłoni<br />

3.2. Budowa stolika biometrycznego<br />

Stolik biometryczny, wykorzystujący geometrię dłoni, powstał w celu zebrania próbek<br />

biometrycznych dłoni. Był niezbędnym elementem systemu, przez swoją współpracę<br />

z czytnikiem biometrycznym i programem ekstrakcji cech biometrycznych. Został on<br />

wykonany własnoręcznie, „domowymi” sposobami (rysunek 3.1). Urządzenie składa się z:<br />

Podstawy o jasnym kolorze, na której układa się dłoń w celu zebrania biometryki.<br />

Sześciu metalowych kołków wymuszających prawidłowe ułożenie palców.<br />

Lusterka skierowanego pod kątem około 45 o do podstawy stolika.<br />

Ścianki bocznej w jasnym kolorze, takim samym jak podstawa stolika.<br />

Rysunek 3.1. Stolik biometryczny pozwalający zbierać próbki biometryczne geometrii dłoni. Urządzenie zostało<br />

wykonane z wykorzystaniem bardzo prostych narzędzi i środków. Koszt całego stolika nie przekroczył 10 PLN.<br />

Podstawa stolika, w miejscu ułożenia dłoni, ma 21 cm szerokości, 26 cm długości i 8,5<br />

cm wysokości (wysokość ścianki bocznej). Gabaryty stolika zostały dobrane na podstawie<br />

obserwacji wysokości i szerokości dłoni kilku osób. Ostatecznie, wszystkie wymiary<br />

dopasowano do największej zaobserwowanej dłoni, dodając kilka centymetrów zapasu.<br />

Ścianka boczna odbijająca się w lusterku jak i podstawa stolika mają kolor biały.<br />

Umożliwiło to wykonanie binaryzacji, podczas przetwarzania wstępnego biometryk. Program<br />

operuje na bitmapach, wykorzystując przestrzeń barw RGB (więcej na ten temat<br />

w rozdziale 3.4.2). Barwa biała jest skrajną wartością tej przestrzeni, przez co łatwiej ustawić<br />

próg binaryzacji tak, aby wynikowy obraz nie uwzględniał tła. Dłoń ma zupełnie inny kolor<br />

niż tło i podczas binaryzacji mieści się w granicach progu.<br />

W stoliku zainstalowano sześć metalowych kołków (wykonanych z przyciętych śrub)<br />

w celu wymuszenia prawidłowego ułożenia dłoni i palców podczas pobierania próbki. Kołki<br />

zostały przymocowane do stolika, przez wywiercenie otworów w podstawie i zespolenie<br />

17


3. Projekt systemu geometrii dłoni<br />

elementów klejem polimerowym. Ułożenie kołków przedstawia rysunek 3.2. Dwa kołki<br />

zaznaczone okręgiem można zamienić jednym dużym kołkiem. Jednak ostatecznie, nie udało<br />

się zdobyć odpowiedniego elementu.<br />

Rysunek 3.2. Stolik biometryczny (widok z góry) z kołkami pomiędzy którymi układa się palce. Na zdjęciu<br />

z prawej strony pokazano prawidłowe ułożenie dłoni i palców na stoliku.<br />

Układ kołków został dobrany na podstawie obserwacji dłoni różnych osób. Na kartce<br />

papieru odrysowano kontury dłoni o różnych gabarytach i uzyskany rysunek stał się podstawą<br />

do rozstawienia kołków. Przykładowe nałożenie zdjęć dłoni czterech różnych osób<br />

przedstawia rysunek 3.3.<br />

Rysunek 3.3. Nałożenie czterech różnych dłoni. Każda z dłoni zaznaczona jest innym kolorem (czerwony, zielony,<br />

niebieski i żółty). Trzy górne warstwy mają włączoną przezroczystość, aby pokazać pozostałe warstwy,<br />

umieszczone poniżej.<br />

Zadaniem lusterka widocznego na rysunkach 3.1, 3.2 i 3.3 jest odbicie bocznej<br />

krawędzi dłoni wprost w obiektyw aparatu (czytnik biometryczny). Lustro skierowane jest<br />

18


3. Projekt systemu geometrii dłoni<br />

pod kątem nieco większym niż 45 o do powierzchni stolika. Kąt nachylenia lustra jest większy<br />

z tego względu, że aparat robiący zdjęcia był ustawiony nad kołkami, a nie nad lusterkiem.<br />

Wielkość lusterka jest dopasowana do ścianki bocznej stolika w taki sposób, aby całe odbicie<br />

w lustrze było na białym tle ścianki bocznej.<br />

3.3. Zbieranie biometryk<br />

Zebranie bazy próbek biometrycznych nie jest zadaniem łatwym. Ważne jest, aby<br />

próbki były zebrane dokładnie, co umożliwi późniejsze skonstruowanie poprawnej bazy<br />

danych w procesie rejestracji biometrycznej (rozdział 2.4.1).<br />

Docelowo planowano zebranie 500 próbek biometrycznych dłoni, po 10 próbek od<br />

każdej z 50 osób. W ostatecznym rozrachunku, zebrano 520 próbek dłoni, od 52 osób, po 10<br />

próbek od każdej osoby.<br />

3.3.1. Przygotowania wstępne eksperymentu<br />

Przed przeprowadzeniem procedury zbierania biometryk należało przygotować<br />

stanowisko pomiarowe. W tym celu przymocowano stół do podłogi i do ścian za pomocą<br />

dwustronnej taśmy klejącej. Na stole umieszczono stolik biometryczny, przyklejając go taśmą<br />

i dodatkowo mocując ściskami stolarskimi. Początkowa postać stanowiska pokazana jest na<br />

zdjęciu 3.4, a kompletne stanowisko ilustruje zdjęcie 3.5.<br />

Rysunek 3.4. Wstępne przygotowania stanowiska do zbierania biometryk. Na zdjęciu widać etap centrowania<br />

lustrzanki cyfrowej nad miejscem zbierania próbek. Elementy konstrukcji nie są jeszcze przymocowane na stałe<br />

taśmą klejącą ani ściskami stolarskimi.<br />

Jako czytnika biometrycznego użyto lustrzanki cyfrowej EOS 40D firmy Canon.<br />

Ogromną zaletą tej lustrzanki jest to, że można ją wyzwalać z komputera podłączonego przez<br />

19


3. Projekt systemu geometrii dłoni<br />

gniazdo USB (Universal Serial Bus). Dzięki temu, nie zmieniała się pozycja aparatu i zebrane<br />

zdjęcia były fotografowane z tego samego miejsca. Ręczne wyzwalanie lustrzanki, poprzez<br />

przycisk na obudowie, powodowałoby każdorazowe przesunięcie aparatu.<br />

Lustrzanka, podłączona kablem USB do komputera, została zamocowana na statywie.<br />

Statyw uprzednio przymocowano taśmą klejącą do stołu. Obiektyw skierowano w dół,<br />

centralnie nad kołki stolika biometrycznego.<br />

Bardzo ważnym aspektem podczas eksperymentu okazało się prawidłowe naświetlenie<br />

stolika geometrii dłoni. Jak się okazało, był to jeden z najdłuższych etapów wstępnych<br />

przygotowań (trwał prawie dwie godziny). Cienie powstawały przez zainstalowane kołki<br />

i dłonie układane na stoliku. Prawidłowe naświetlenie stolika, miało na celu wyeliminowanie<br />

padających cieni i zlikwidowanie błędów procesu binaryzacji. Cienie na obrazach próbek<br />

tworzyły zakłamania poprzez powiększanie powierzchni dłoni (rysunek 3.6 i 3.7).<br />

Naświetlając instalację wykorzystano sześć źródeł światła (rysunek 3.5). Dwa z nich odegrały<br />

Rysunek 3.5. Kompletne stanowisko do pobierania biometryk kształtu dłoni. Wszystkie elementy są nieruchome<br />

i przymocowane na stałe. Stolik oświetlony został sześcioma źródłami światła.<br />

kluczową rolę, dzięki białej barwie światła jaką świeciły. Taka barwa, w połączeniu z białym<br />

kolorem stolika, najlepiej usuwała powstające cienie. Źródła światła barwy żółtej dużo gorzej<br />

naświetlały stolik biometryczny i słabiej usuwały zacienione obszary. Cała trudność podczas<br />

ustawiania światła polegała na tym, że źródła światła były stosunkowo słabe i ich<br />

niepoprawne ustawienie zamiast usuwać cienie dodawało nowe. Problemem było też, dobre<br />

20


3. Projekt systemu geometrii dłoni<br />

doświetlenie podstawy stolika przy jednoczesnym, dobrym naświetleniu ścianki bocznej.<br />

Przykłady prawidłowo i nieprawidłowo naświetlonych próbek zdjęć dłoni ukazane są na<br />

rysunkach numer 3.6 i 3.7.<br />

Rysunek 3.6. Dłoń ułożona na stoliku biometrycznym i jej obraz po binaryzacji. Naświetlenie stolika jest<br />

prawidłowe, gdyż uzyskany obraz binarny posiada czytelne i nierozmazane kontury ukazujące kształt dłoni.<br />

Biometryka zebrana prawidłowo.<br />

Rysunek 3.7. Dłoń ułożona na stoliku biometrycznym i jej obraz po binaryzacji. Tym razem naświetlenie stolika<br />

jest nieprawidłowe gdyż powstało wiele niepożądanych cieni. Przez to, na obrazie binarnym nie da się<br />

wyodrębnić kształtu dłoni. Jest to niepoprawnie zebrana biometryka.<br />

3.3.2. Przebieg pobierania próbek biometrycznych<br />

Pobranie całego zestawu 520 próbek zdjęć dłoni odbyło się jednego dnia, w takich<br />

samych warunkach (opisywana faza eksperymentu trwała około siedmiu godzin). Zarówno<br />

oświetlenie jak i konfiguracja ustawień aparatu i stolika biometrycznego nie uległy zmianie<br />

podczas trwania eksperymentu. Po ustawieniu i przymocowaniu wszystkich elementów<br />

stanowiska pomiarowego, podłączono lustrzankę cyfrową do komputera w celu pobrania<br />

zdjęć próbnych. Próbne zdjęcia pokazały, że należy skorygować ostrość aparatu i subtelnie<br />

poprawić oświetlenie całego fotografowanego otoczenia.<br />

21


3. Projekt systemu geometrii dłoni<br />

Gdy już wszystko było gotowe, zaczęto pobieranie zestawu dziesięciu próbek<br />

biometrycznych od każdej osoby (rysunek 3.8). Każda z 52 osób została poproszona<br />

o wykonanie następującej procedury pobierania próbki:<br />

Zajęcie miejsca na stabilnym krześle przy stanowisku pomiarowym. Podczas odczytu<br />

próbki nadgarstek był wyprostowany. Powodowało to, jednakowy nacisk podczas<br />

układania dłoni na powierzchni stolika (niezależnie od wzrostu badanej osoby).<br />

Ułożenie rozluźnionej dłoni na stolik biometryczny z umieszczeniem palców<br />

pomiędzy kołkami. Palce powinny leżeć płasko na stoliku, dotykając w całości jego<br />

powierzchni. Gdy palce są zgięte, nastąpi błędnie zebranie biometryki, przez<br />

przekłamanie długości palców, jak i wysokości całej dłoni (odbicie w lustrze).<br />

Dosunięcie poszczególnych palców do wszystkich kołków stolika. Podczas tej<br />

czynności nie było wymagane użycie siły, które mogło (zależnie od nacisku)<br />

nieznacznie zmieniać kształt dłoni.<br />

Podniesienie ręki ze stolika i rozluźnienie mięśni dłoni przez poruszanie palcami<br />

i nadgarstkiem. Miało to symulować niezależność ułożeń ręki na stoliku podczas<br />

kolejnych pomiarów.<br />

Cała powyższa procedura (z wyjątkiem powtórnego siadania na krześle) była powtarzana<br />

dziesięć razy przez każdą z badanych osób. Podczas eksperymentu, zdarzyło się kilka<br />

nieprawidłowo zebranych biometryk. Było to powodem do powtórnego pobrania próbek.<br />

Rysunek 3.8. Pobieranie próbki biometrycznej. Należało uważać, aby nie poruszyć żadnego z elementów<br />

stanowiska biometrycznego. Przesunięcie jakiejkolwiek części mogła doprowadzić do konieczności ponownej<br />

korekty ustawień oświetlenia i aparatu fotograficznego.<br />

Pomimo dołożenia wszelkiej uwagi podczas procedury pobierania próbek geometrii<br />

dłoni, w zebranej bazie danych, znalazły się próbki nieprawidłowe. Błędy wynikają<br />

z niepoprawnego ułożenia palców przy kołkach i na powierzchni stolika (zdjęcie 3.9).<br />

22


3. Projekt systemu geometrii dłoni<br />

Rysunek 3.9. Przykład błędnego ułożenia dłoni. Palce nie są dosunięte do kołków zainstalowanych w podstawie<br />

stolika. Przedstawione na zdjęciu ułożenie dłoni celowo wyolbrzymia błąd. Błędne biometryki, zebranej bazy<br />

danych zawierają dużo mniejsze pomyłki.<br />

3.4. Program komputerowy<br />

Napisany program służy do rozpoznawania cech szczególnych dłoni, poprzez<br />

odnajdywanie zestawu dziewiętnastu długości specyfikujących daną dłoń. Zestaw ten tworzy<br />

wektor zapisany i przetwarzany w bazie danych programu. Stworzona baza danych pozwala<br />

na wykonywanie operacji weryfikacji i identyfikacji biometrycznej. Aplikacja złożona jest<br />

z kilku części składowych:<br />

<br />

<br />

Ekstraktor cech, współpracujący z opisanym we wcześniejszym rozdziale stolikiem<br />

geometrii dłoni (rozdział 3.2). Zadaniem ekstraktora jest odnalezienie dziewiętnastu<br />

długości charakteryzujących dłoń.<br />

Baza danych próbek biometrycznych, przechowuje wyniki pracy ekstraktora cech<br />

w postaci wektorów. Rekordy bazy danych zawierają wiele dodatkowych informacji<br />

ułatwiających procedury zarządzania bazą.<br />

Komparator biometryczny, który operuje na wzorach i właściwościach<br />

przedstawionych w rozdziale 2.5 w celu porównania odpowiednich wektorów z bazy.<br />

Wynik porównania biometryk jest podstawą do wydawania decyzji o zgodności<br />

biometrycznej próbek.<br />

Dla łatwości obsługi program posiada graficzny interfejs użytkownika, umożliwiający<br />

uzyskanie podstawowych wyników identyfikacji i weryfikacji biometrycznej. Bardziej<br />

zaawansowane wyniki w formie pliku, zapisywane są na dysku.<br />

3.4.1. Opis wykorzystanych narzędzi<br />

Program Geometrii dłoni został napisany w języku C# za pomocą środowiska<br />

Microsoft Visual Studio 2008 Professional Edition. Program został pobrany ze strony<br />

23


3. Projekt systemu geometrii dłoni<br />

MSD<strong>NA</strong>A dla wydziału Elektroniki i Telekomunikacji i jest wersją studencką. Język C#<br />

został wybrany ze względu na:<br />

Wbudowaną możliwość operacji na bitmapach. W C# zostały zaimplementowane<br />

odpowiednie klasy (np. System.Drawing.Imaging) i metody (np. SetPixel())<br />

pozwalające na łatwe odczytywanie, modyfikowanie i zapisywanie obrazów<br />

graficznych.<br />

Proste zarządzanie pamięcią za pomocą Garbage Collectora. Ma to ogromne znaczenie<br />

podczas budowania bazy danych zawierającej dużą liczbę plików graficznych.<br />

Serializację danych dzięki której, możliwe jest łatwe zapisanie całej bazy danych i jej<br />

powtórne otworzenie. Wszystkie rekordy bazy danych są wspólnie zapisywane do<br />

pliku niezależnie od ich formatu.<br />

Prostotę w budowaniu graficznego interfejsu użytkownika. C# zawiera gotowe<br />

elementy umożliwiające wyświetlanie grafik, tworzenie przycisków czy pól<br />

tekstowych.<br />

Jeśli chodzi o wybór środowiska MS Visual Studio 2008 to zostało ono wybrane, przede<br />

wszystkim ze względu na obsługę języka C#. Jest to też środowisko darmowe na licencji<br />

studenckiej. Ogromną zaletą MS Visual Studio jest rozbudowany moduł umożliwiający<br />

debugowanie programów w czasie ich działania.<br />

Podczas pobierania próbek biometrycznych wykorzystano oprogramowanie dołączone<br />

do zastosowanej lustrzanki firmy Canon. Umożliwiało ono zdalne wyzwalanie aparatu.<br />

Po zebraniu bazy próbek biometrycznych, przetworzono wszystkie dzięki operacjom<br />

wsadowym zaimplementowanym w programie IrfanView 4.25. Jest to darmowy program<br />

z wyłączeniem zastosowań komercyjnych.<br />

3.4.2. Przetwarzanie wstępne<br />

Pierwszym krokiem jaki należało wykonać po zebraniu bazy 520 próbek<br />

biometrycznych było ich przycięcie, obrócenie i skompresowanie. Obrazy uzyskane z aparatu<br />

fotograficznego miały rozmiar 2816 na 1880 punktów obrazu. Poprawna analiza obrazów<br />

dłoni nie wymaga tak dużej rozdzielczości, dlatego też obrazy zmniejszono do rozmiarów<br />

1000 na 900 punktów obrazu. Dokonano tego przez docięcie obrazu i jego późniejsze<br />

przeskalowanie. Wynikowy obraz dłoni, dla celów estetycznych, przekręcono o 180 o (dłoń<br />

jest wtedy skierowana palcami ku górze). Obraz przed przetworzeniem i obraz wynikowy<br />

widoczne są na rysunku 3.10. Przed modyfikacją zdjęć jeden obraz zajmował około 1,30–1,40<br />

MB po dodatkowej kompresji formatu JPEG pojedyncze obrazki zajmują około 130– 140 KB,<br />

24


3. Projekt systemu geometrii dłoni<br />

czyli 10 razy mniej. Do powyższych operacji użyto programu IrfanView w wersji 4.25.<br />

Pozwalał on na zautomatyzowane przetworzenie wszystkich 520 zdjęć.<br />

Rysunek 3.10. Obraz uzyskany z aparatu fotograficznego (po lewej) o rozdzielczości 2816 na 1880 punktów<br />

obrazu i obraz po przetworzeniu do rozdzielczości 1000 na 900 punktów obrazu. Oba obrazy zapisane są<br />

w formacie JPEG jednak drugi poddany jest większej kompresji.<br />

Kolejnym krokiem, przed ekstrakcją cech biometrycznych, jest binaryzacja obrazu.<br />

Obraz binarny (czarno – biały) jest wystarczający podczas odnajdywania cech geometrii<br />

dłoni. W trakcie analizy biometryki interesujący jest wyłącznie jej kształt. Jak już wcześniej<br />

wspomniano w rozdziale 2.3, podczas analizy geometrii dłoni nie wykorzystuje się ani barwy<br />

skóry, ani bruzd czy innych cech szczególnych dłoni. Ważne są jedynie poszczególne<br />

długości uzyskiwane podczas pomiarów (szczegółowo opisane w rozdziale 3.4.3). Po<br />

binaryzacji, dłoń jest reprezentowana przez czarne punkty obrazu, a jej otoczenie przez białe<br />

punkty. Przykład na rysunku 3.6 (prawa strona).<br />

Rysunek 3.11. Sześcian kolorów RGB (Red - Green - Blue). Konkretna barwa powstaje przez mieszanie trzech<br />

barw składowych: czerwonej (R), zielonej (G) i niebieskiej (B) w określonych proporcjach [16].<br />

Program Geometrii Dłoni operuje na bitmapach w przestrzeni barw RGB (Red - Green<br />

- Blue) pokazanej na rysunku 3.11. W programie, w przetwarzanych obrazach, stosowany jest<br />

24 bitowy zapis koloru po 8 bitów na każdą z barw składowych. Dzięki temu, każda składowa<br />

może przyjmować wartości od 0 do 255. Barwa biała powstaje poprzez zmieszanie kolorów<br />

25


3. Projekt systemu geometrii dłoni<br />

czerwonego, zielonego i niebieskiego z maksymalnymi wartościami równymi 255 (na<br />

rysunku oznaczone przez 1). Barwa czarna jest uzyskiwana przez zmieszanie wszystkich<br />

trzech barw składowych z wartościami równymi 0.<br />

Reprezentacja barw RGB została wykorzystana w procesie binaryzacji obrazu.<br />

Binaryzacja zredukowała reprezentację kolorów do dwóch: czarnego reprezentowanego przez<br />

0 i białego reprezentowanego przez 1. Fragment kodu programu odpowiedzialnego za<br />

binaryzację, przedstawia listing 3.1.<br />

unsafe<br />

{<br />

}<br />

//znajduje poczatek tablicy w pamieci<br />

byte* ptr = (byte*)obraz_w_pamieci.Scan0;<br />

byte prog = 145;<br />

//prog binaryzacji<br />

for (int y = 0; y < obraz.Height; y++)<br />

{<br />

for (int x = 0; x < obraz.Width; x++)<br />

{<br />

//porownanie z progiem<br />

if ((ptr[0] + ptr[1] + ptr[2]) / 3 > prog)<br />

//kolor bialy<br />

ptr[0] = ptr[1] = ptr[2] = 255;<br />

else<br />

//kolor czarny<br />

ptr[0] = ptr[1] = ptr[2] = 0;<br />

//przesunięcie wskaznika<br />

ptr += 3;<br />

}<br />

}<br />

Listing 3.1. Fragment kodu odpowiedzialny za binaryzację obrazu. W programie, próg o wartości 145 został<br />

dobrany na podstawie obserwacji obrazów wynikowych przy różnych wartościach progu.<br />

Kod z listingu 3.1 działa z wykorzystaniem wskaźników. Aby było to możliwe<br />

w języku C#, należało wskazać miejsce wykorzystania wskaźników słowem kluczowym<br />

unsafe. Wskaźnik ptr jest ustawiany na początek tablicy w pamięci, w której znajduje się<br />

przetwarzany obraz, poleceniem Scan0. Następnie, przesuwany jest po wszystkich punktach<br />

obrazu w dwóch pętlach for(). Informacja o pojedynczym kolorze składowym przestrzeni<br />

barw RGB jest przechowywana na 8 bitach (rysunek 3.12). W jednym punkcie obrazu istnieją<br />

trzy kolory składowe RGB. Dlatego też, wskaźnik ptr przesuwa się co 3 bajty, powodując<br />

przejście do kolejnego punktu obrazu. Wskaźnik z odpowiednim indeksem ptr[0], ptr[1],<br />

ptr[2] wskazuje na poszczególną składową RGB, odpowiednio: R, G, B. Dopełnienie<br />

widoczne na rysunku 3.12 jest konieczne, gdy pojedynczy wiersz danych nie jest<br />

26


3. Projekt systemu geometrii dłoni<br />

wielokrotnością czterech bajtów [15]. W instrukcji warunkowej if() listingu 3.1 następuje<br />

sprawdzenie czy wartość średnia trzech składowych RGB, jest większa od zadanego progu.<br />

Jeśli tak, to wszystkie składowe RGB przyjmują wartość 255 co w rezultacie da kolor biały.<br />

W przeciwnym wypadku składowe RGB uzyskują wartość 0, czego wynikiem będzie kolor<br />

czarny. Przykładowe wartości obrazów po binaryzacji przy różnych wartościach progu<br />

przedstawia rysunek 3.13.<br />

Rysunek 3.12. Wektorowa reprezentacja próbek w obrazie 24 bitowym. Jedna próbka obrazu reprezentowana<br />

jest przez trzy składowe RGB. Jedna składowa RGB zajmuje jeden bajt pamięci [15].<br />

Rysunek 3.13. Ten sam obraz po procesie binaryzacji, przy różnych wartościach progu. Pierwszy obraz z lewej<br />

został poddany binaryzacji przy progu równym 90, środkowy przy 145 a prawy przy 180. Z binarnych obrazów<br />

po lewej i prawej stronie nie udało się uzyskać kształtu dłoni. Poprawny jest obraz środkowy zbinaryzowany przy<br />

progu 90.<br />

3.4.3. Ekstrakcja cech biometrycznych<br />

Zasadniczą częścią stworzonego programu geometrii dłoni jest ekstrakcja cech<br />

biometrycznych. Ekstraktor cech posługuje się obrazami binarnymi opisanymi w rozdziale<br />

3.4.2. Kształt dłoni jest identyfikowany w programie dzięki czarnym punktom obrazu<br />

binarnego. Celem działania ekstraktora cech jest znalezienie i obliczenie dziewiętnastu<br />

27


3. Projekt systemu geometrii dłoni<br />

długości wymienionych w tabeli 3.1 i przedstawionych na rysunku 3.14. Jednostką długości<br />

podczas obliczeń jest punkt obrazu.<br />

Tabela 3.1. Zbiór cech dłoni, odnajdywanych przez ekstraktor cech programu geometrii dłoni. Niektóre<br />

z wymienionych poniżej cech, przy pewnych specyficznych biometrykach dłoni, odnajdywane są w innych<br />

miejscach niż w opisie.<br />

Numer cechy Badana cecha dłoni<br />

1 Długość palca wskazującego<br />

2 Długość palca środkowego<br />

3 Długość palca serdecznego<br />

4 Długość palca małego<br />

5 Szerokość dłoni bliżej podstawy palców<br />

6 Szerokość dłoni bliżej nadgarstka<br />

7 Szerokość palca wskazującego w paliczku dalszym<br />

8 Szerokość palca wskazującego w paliczku środkowym<br />

9 Szerokość palca wskazującego w paliczku bliższym<br />

10 Szerokość palca środkowego w paliczku dalszym<br />

11 Szerokość palca środkowego w paliczku środkowym<br />

12 Szerokość palca środkowego w paliczku bliższym<br />

13 Szerokość palca serdecznego w paliczku dalszym<br />

14 Szerokość palca serdecznego w paliczku środkowym<br />

15 Szerokość palca małego w paliczku dalszym<br />

16 Szerokość palca małego w paliczku środkowym<br />

17 Szerokość kciuka pomiędzy paliczkami dalszym a środkowym<br />

18 Grubość palców bliżej paliczka dalszego<br />

19 Grubość palców bliżej paliczka środkowego<br />

Rysunek 3.14. Biometryka dłoni po ekstrakcji 19 cech opisanych w tabeli 3.1 (lewa strona). Z prawej strony<br />

ukazane jest zdjęcie rentgenowskie [5] dłoni, na której widać badane przez ekstraktor paliczki palców. Paliczki<br />

to kości wchodzące w skład palców. Palce, za wyjątkiem kciuka, mają po trzy paliczki: bliższy, środkowy<br />

i dalszy. Kciuk nie ma paliczka środkowego [6].<br />

28


3. Projekt systemu geometrii dłoni<br />

Ekstrakcja cech pojedynczej dłoni jest operacja szybką, czas jej wykonania jest<br />

mniejszy od 300 ms. Przykładowe czasy dla różnych dłoni to: 263 ms, 177 ms, 182 ms<br />

i 185 ms. Gdyby cała operacja została wykonywana za pomocą wskaźników, to czasy<br />

działania byłyby niższe, ze względu na większą szybkość operacji wskaźnikowych. Jednak<br />

w programie nie jest wymagana, aż tak duża szybkość. Ostatecznie wybrano prostsze<br />

rozwiązania implementacyjne.<br />

Dla poprawnego działania, stworzonego ekstraktora cech, wymagane jest podanie<br />

pozycji kołków. Dzięki temu, w znaczącym stopniu, ograniczony zostaje obszar poszukiwań<br />

konkretnych palców. Wiadomo po której stronie danego kołka, znajduje się szukana część<br />

dłoni. Początek kodu ekstraktora cech przedstawia listing 3.2. Kołki stolika geometrii dłoni<br />

zostały ponumerowane w sposób przedstawiony na rysunku 3.15. Wartości w nawiasach to<br />

odpowiednio współrzędne x i y obrazka z biometryką.<br />

public void Ekstrakcja_cech()<br />

{<br />

int sizeX = obraz.Width;<br />

//szerokosc obrazka<br />

int sizeY = obraz.Height; //wysokosc obrazka<br />

//pozycje kolkow sa stale i nalezy je ustalic przed<br />

uruchomieniem algorytmu<br />

//pozycje srodkow kolkow<br />

Point kolek1 = new Point(528, 438);<br />

Point kolek2 = new Point(468, 294);<br />

Point kolek3 = new Point(544, 294);<br />

Point kolek4 = new Point(690, 294);<br />

Point kolek5 = new Point(802, 414);<br />

Point kolek6 = new Point(342, 558);<br />

Point START = new Point();<br />

Point KONIEC = new Point();<br />

(…)<br />

}<br />

Listing 3.2. Początek kodu ekstrakcji cech. Jest to ważny fragment ze względu na konieczność dokładnej<br />

deklaracji pozycji środków kołków. Położenie kołków optymalizuje procedury poszukiwania palców.<br />

Rysunek 3.15. Rozmieszczenie kołków na stoliku biometrycznym i przypisana im numeracja wykorzystywana<br />

w programie. Rysunek jest wycinkiem całości. Dodatkową informacją są współrzędne kołków (x,y). Punkt (0,0)<br />

znajduje się w lewym górnym rogu obrazka, a punkt (1000,900) w prawym dolnym rogu (koniec obrazka).<br />

29


3. Projekt systemu geometrii dłoni<br />

Głównym pomysłem wykorzystywanym w procesie poszukiwania długości<br />

wymienionych w tabeli 3.1 i przedstawionych na rysunku 3.14, jest zastosowanie równania<br />

funkcji liniowej (wzór 3.1). Użycie tej funkcji, podczas ekstrakcji cech, ograniczyło obszar<br />

poszukiwań kształtu dłoni do punktów znajdujących się na prostej. Punkty znajdujące się<br />

wokół prostej, nie są brane pod uwagę. Jest to powodem znacznego przyspieszenia<br />

poszukiwań, gdyż nie trzeba analizować wszystkich punktów obrazu danej biometryki (jedno<br />

zdjęcie z próbką biometryczną posiada 1000 na 900 punktów obrazu).<br />

<br />

<br />

<br />

Oznaczenia:<br />

Równanie prostej w postaci kierunkowej:<br />

Równanie na długość odcinka:<br />

Współrzędne środka odcinka:<br />

A = x A , y A , B = (x B , y B )<br />

a<br />

b<br />

y = ax + b (3.1)<br />

AB = x B − x A 2 + y B − y A 2 (3.2)<br />

x A + x B<br />

2<br />

, y A + y B<br />

2<br />

– punkty końców odcinka<br />

(3.3)<br />

– współczynnik kierunkowy równy tangensowi konta<br />

nachylenia prostej od osi OX<br />

– wyraz wolny, rzędna punktu przecięcia się wykresu<br />

funkcji z osią OY<br />

W programie zaimplementowano funkcję szukaj(). Służy ona do poruszania się<br />

wzdłuż prostej opisanej funkcją liniową (listing 3.3), wykorzystując wzór 3.1.<br />

public Point szukaj(Point pkt, double a, double b, kierunek kierunek)<br />

{<br />

switch (kierunek)<br />

{<br />

case kierunek.PRAWO:<br />

{<br />

//odnajdzie czarny obszar, szuka w prawo<br />

while (obraz_bin_odczyt.GetPixel(pkt.X, pkt.Y).G == 255)<br />

{<br />

pkt.X++; //na prawo<br />

pkt.Y = (int)(a * pkt.X + b); //rownanie prostej<br />

obraz_bin_zapis.SetPixel(pkt.X, pkt.Y, Color.Red);<br />

}<br />

}<br />

break;<br />

case kierunek.LEWO:<br />

30


3. Projekt systemu geometrii dłoni<br />

}<br />

{<br />

//odnajdzie czarny obszar, szuka w lewo<br />

while (obraz_bin_odczyt.GetPixel(pkt.X, pkt.Y).G == 255)<br />

{<br />

pkt.X--; //na lewo<br />

pkt.Y = (int)(a * pkt.X + b);<br />

obraz_bin_zapis.SetPixel(pkt.X, pkt.Y, Color.Red);<br />

}<br />

}<br />

break;<br />

case kierunek.DOL_START:<br />

{<br />

//odnajdzie czarny obszar, szuka w dol<br />

while (obraz_bin_odczyt.GetPixel(pkt.X, pkt.Y).G == 255)<br />

{<br />

pkt.Y++; //w dol = (int)(a * pkt_.X + b);<br />

pkt.X = (int)((pkt.Y - b) / a);<br />

obraz_bin_zapis.SetPixel(pkt.X, pkt.Y, Color.Red);<br />

}<br />

}<br />

break;<br />

}<br />

return pkt;<br />

Listing 3.3. Funkcja szukaj() programu geometrii dłoni. Korzysta ona z równania funkcji liniowej. Współpracuje<br />

ze zmiennymi wyliczeniowymi typu enum (PRAWO, LEWO, DOL_START) dla łatwiejszej obsługi. Metoda<br />

Set.Pixel() wyrysowuje czerwone kreski w miejscach poszukiwań.<br />

Funkcja szukaj() ma na celu odnalezienie pierwszego czarnego punktu obrazu,<br />

wskazującego brzeg dłoni. Sprawdzenie, czy punkt obrazu ma kolor biały (czy jedna ze<br />

składowych RGB jest równa 255) dokonywane jest w instrukcji while. Wynikowe punkty<br />

zwracane przez szukaj(), przypisywane są zmiennym START i KONIEC (listing 3.2),<br />

reprezentującym punkty początku i końca poszukiwanego odcinka. Dzięki tym dwóm<br />

zmiennym, obliczana jest długość odcinka z wykorzystaniem funkcji dl_odcinka()<br />

pokazanej w listingu 3.4 (korzysta ona ze wzoru 3.2 na długość odcinka). Wejściem funkcji<br />

szukaj() są: punkt od którego zacznie się poszukiwanie (zmienna pkt), współczynnik<br />

kierunkowy a, wyraz wolny b oraz kierunek poszukiwań sterujący instrukcją switch().<br />

Poszukiwanie w dół, w przeciwieństwie do poszukiwań w prawo i w lewo, najpierw zmienia<br />

wartość współrzędnej Y, a później X. Ma to na celu uniknięcie błędu w przypadku prostej<br />

pionowej.<br />

public double dl_odcinka(Point a, Point b) //liczy dlugosc odcinka<br />

{<br />

double dl;<br />

dl = Math.Sqrt(Math.Pow(a.X - b.X, 2) + Math.Pow(a.Y - b.Y, 2));<br />

return dl;<br />

}<br />

Listing 3.4. Funkcja obliczająca długość odcinka po podaniu dwóch punktów leżących na jego końcach.<br />

31


3. Projekt systemu geometrii dłoni<br />

Aby funkcja szukaj() spełniła swoje zadanie i odnalazła krawędź dłoni, należy<br />

odpowiednio wyznaczyć miejsce rozpoczęcia poszukiwań. Pomocne w tym zadaniu są kołki<br />

o znanych współrzędnych. Przykładem zastosowania funkcji szukaj() będzie odnalezienie<br />

szerokości dłoni bliżej podstawy palców (numer 5 w tabeli 3.1 i na rysunku 3.14):<br />

Znana jest pozycja kołka numer 6 (listing 3.2 i rysunek 3.15). Wiadomo też, że na<br />

prawo od tego kołka znajduje się poszukiwana szerokość dłoni. Funkcja szukaj(), zacznie<br />

szukać w prawą stronę (od kołka numer 6), a wynik poszukiwań przypisze zmiennej START<br />

(początek odcinka). Poszukiwanie drugiego końca szerokości dłoni, rozpocznie się od prawej<br />

krawędzi zdjęcia (rysunek 3.16). Tym razem wynik działania funkcji szukaj(),<br />

poruszającej się w lewą stronę, zostanie przypisany pod zmienna KONIEC. Ostatecznie<br />

zmienne START i KONIEC pozwolą na obliczenie długości poszukiwanego odcinka<br />

(listing 3.4).<br />

Kolejny przykład ilustruje odnalezienie szerokości palca wskazującego w paliczku<br />

środkowym (numerem 8 tabela 3.1 i rysunek 3.14). Palec wskazujący powinien znajdować się<br />

na lewo od kołka 2. Współrzędne kołka są znane. Dodatkowo wiadomo, że prawidłowo<br />

ułożony palec styka się z tym kołkiem. Pozwala to na ustawienie punktu START w miejscu<br />

styku. Poszukiwanie punktu KONIEC zacznie się tuż za miejscem odbicia dłoni w lusterku<br />

(wartość współrzędnej x wynosi 300). Funkcja szukaj() będzie poruszała się w prawą<br />

stronę w kierunku palca wskazującego, aż do odnalezienia krawędzie dłoni.<br />

Rysunek 3.16. Szczegółowy wydruk działania ekstraktora cech. Cienkie czerwone kreski spoza obszaru dłoni<br />

pokazują, użyty zakres poszukiwań cech dłoni. Niebieskie kreski ukazują proste o różnych współczynnikach a,<br />

poprowadzone do jednego punktu wspólnego.<br />

W analogiczny sposób poszukiwane są długości o numerach: 5, 6, 8, 9, 11, 12, 14, 16,<br />

17, 18, 19 (tabela 3.1). W pierwszej kolejności ustalany jest początek poszukiwań i jego<br />

kierunek dla funkcji szukaj(). Pozwala to na przypisanie zmiennym START i KONIEC<br />

32


3. Projekt systemu geometrii dłoni<br />

odpowiednich punktów, określających końce odcinka. Mając końce odcinka można obliczyć<br />

jego długość.<br />

Podczas stosowania funkcji szukaj() wymagane jest, oprócz podania punktu<br />

startowego i kierunku poszukiwań, podanie współczynnika kierunkowego prostej, wzdłuż<br />

której odbędzie się poszukiwanie. Aby wyznaczyć optymalny współczynnik używana jest<br />

funkcja optymal_a() z listingu 3.5. Pozwala ona na znalezienie takiego współczynnika<br />

kierunkowego a, przy którym odcinek jest najkrótszy. Optymal_a() współpracuje<br />

z funkcją szukaj().<br />

public double optymal_a(…)<br />

{<br />

(…)<br />

for (int i = 0; i < zakres; i++)<br />

{<br />

//odnajdzie czarny obszar<br />

while(obraz_bin_odczyt.GetPixel(pkt_koniec.X, pkt_koniec.Y).G == 255)<br />

{<br />

if (kierunek == kierunek.LEWO)<br />

pkt_koniec.X--; //w lewo<br />

else<br />

pkt_koniec.X++;<br />

pkt_koniec.Y = (int)(a * pkt_koniec.X + b);<br />

obraz_bin_zapis.SetPixel(pkt_koniec.X, pkt_koniec.Y, Color.Blue);<br />

}<br />

dl = dl_odcinka(pkt_start, pkt_koniec);<br />

if (dl < min_dl)<br />

//zapamieta min dlugosc i wsp a<br />

{<br />

min_dl = dl;<br />

wyn_a = a;<br />

}<br />

pkt_koniec = pkt_koniec_copy; //zmiana dla kolejnego odcinka<br />

if (kierunek == kierunek.LEWO)<br />

a += krok;<br />

//zmiana nachylenia prostej<br />

else<br />

a -= krok;<br />

b = wspB(pkt_start, a);<br />

//atualizacja wyrazu wolnego<br />

}<br />

return wyn_a;<br />

}<br />

Listing 3.5. Fragment funkcji optymal_a() za pomocą której odnajdywane są osie palców i oś reprezentująca<br />

szerokość dłoni. Zmienna krok, modyfikująca współczynnik a, odpowiada za zmianę nachylenia prostych. Jej<br />

wartość została dobrana eksperymentalnie. Zakres mówi o liczbie badanych prostych.<br />

Po znalezieniu początkowego punktu szukanego odcinka (jako przykład zielone kółko<br />

na rysunku 3.16), mierzy się długości prostych, poprowadzonych z różnymi wartościami<br />

współczynnika kierunkowego a (zielone kreski). Punkty końca (końce zielonych kresek na<br />

rysunku 3.16) znajduje się za pomocą funkcji szukaj() z zadanym współczynnikiem<br />

kierunkowym a (niebieskie kreski na rysunku 3.16 to różne przebiegi funkcji szukaj()).<br />

33


3. Projekt systemu geometrii dłoni<br />

Zakłada się, że znalezienie najkrótszego odcinka będzie równoznaczne ze znalezieniem osi<br />

palców czy dłoni.<br />

Kod z listingu 3.5 wykonywany jest w pętli for() z parametrem zakres. Parametr<br />

ten, oznacza liczbę prostych jakie zostaną zbadane. W instrukcji while() poszukiwany jest<br />

pierwszy czarny punkt obrazu w kierunku lewym bądź prawym (kierunek określa jeden<br />

z argumentów wejściowych funkcji optymal_a()). Dalej, obliczana jest długość odcinka,<br />

od znalezionego punktu, aż do punktu podanego jako argument wejściowy funkcji. Obliczona<br />

długość zostanie porównana z poprzednią długością i jeśli nowa wielkość będzie mniejsza to<br />

zostanie zapamiętana wraz ze współczynnikiem kierunkowym. Na końcu następują zmiany<br />

współczynnika nachylenia, wyrazu wolnego i punktu startu poszukiwań w celu<br />

przeprowadzenia kolejnego kroku iteracji pętli for(), dla nowego odcinka.<br />

W przedstawiony sposób, z wykorzystaniem funkcji optymal_a(), poszukiwane są<br />

współczynniki kierunkowe dla cech o numerach 5, 8, 11, 14, 16, 17 (rysunki 3.14 i 3.16).<br />

Pozostałe szerokości palców i druga szerokość dłoni (numer 6), wykorzystują znalezione<br />

współczynniki kierunkowe sąsiadów.<br />

Osie przechodzące wzdłuż wszystkich czterech palców (numery 1, 2, 3 i 4 z tabeli 3.1)<br />

wykorzystują proste prostopadłe do osi wyznaczających grubość palca. Dwie proste są<br />

prostopadłe do siebie, gdy iloczyn ich współczynników kierunkowych jest równy -1. Czubki<br />

palców szukane są od góry obrazka, aż do znalezienia pierwszego czarnego punktu obrazu za<br />

pomocą funkcji szukaj(). Jak widać na rysunku 3.16, przedstawiona metoda<br />

z powodzeniem odnajduje osie przecięcia palców i oś dłoni.<br />

Dla odnalezienia długości numer 7, 10, 13, 15 wykorzystuje się funkcję<br />

szukaj_zakres() (listing 3.6), która jest zmodyfikowaną odmianą funkcji szukaj().<br />

Jako wejście, podaje się punkt środka odcinka pomiędzy znalezionym czubkiem palca,<br />

a miejscem przecięcia osi długości palca z osią szerokości palca przy kołku (współrzędne<br />

środka odcinka liczone są za pomocą wzoru 3.3). Punkt wejściowy oznaczony jest żółtymi<br />

kropkami na rysunku 3.16. Współczynnik kierunkowy a jest taki sam jak dla odcinka<br />

sąsiedniego, znalezionego przy kołku. Funkcja poszukuje i zapamiętuje ostatni czarny punkt<br />

wzdłuż zadanej prostej liniowej. Poszukiwanie zaczyna się wewnątrz ciemnego pola obrazu<br />

binarnego, oznaczającego dłoń, i kończy na białym polu tegoż obrazu. Ostatni czarny punkt<br />

obrazu jest krawędzią dłoni. Funkcja szukaj_zakres(), dzięki przedstawionej metodzie<br />

działania, jest odporna na błędy binaryzacji. Przyczyną takich błędów może być np. biały<br />

paznokieć czy jasny fragment skóry. Po binaryzacji zamiast czarnego obszaru w tych<br />

34


3. Projekt systemu geometrii dłoni<br />

miejscach, zostanie utworzony biały obszar i będzie interpretowany jako tło, a nie jako dłoń.<br />

Z powodu występowania przedstawionych błędów wszystkie inne długości korzystające<br />

z funkcji szukaj(), nie uwzględniającej błędów binaryzacji, przechodzą z białego obszaru<br />

(tło) szukając obszaru czarnego (dłoń). Poszukiwanie odbywa się w odwrotnie, niż ma to<br />

miejsce w szukaj_zakres(). Widać to w listingach obu funkcji, gdzie w pętli while<br />

(listing 3.3) i warunku if() (listing 3.6) sprawdzane są różne kolory 255 (biały) i 0 (czarny).<br />

public Point szukaj_zakres(Point pkt, double a, double b, kierunek<br />

kierunek, int zakres)<br />

{<br />

Point tmp = new Point();<br />

for (int i = 0; i < zakres; i++)<br />

{<br />

if (kierunek == kierunek.PRAWO)<br />

pkt.X++; //w prawo<br />

else<br />

pkt.X--;<br />

pkt.Y = (int)(a * pkt.X + b);<br />

obraz_bin_zapis.SetPixel(pkt.X, pkt.Y, Color.Red);<br />

//odnajdzie ostatni czarny punkt obrazu<br />

if (obraz_bin_odczyt.GetPixel(pkt.X, pkt.Y).G == 0)<br />

{<br />

tmp = pkt;<br />

}<br />

}<br />

pkt = tmp; //wynik<br />

return pkt;<br />

}<br />

Listing 3.6. Funkcja szukaj_zakres(), która jest zmodyfikowaną wersją funkcji szukaj(). Zakres poszukiwań jest<br />

jednym z argumentów wejściowych a jego wartość wyznacza koniec działania funkcji.<br />

Funkcja z listingu 3.6, wykorzystywana jest też z tego względu, że trudno określić<br />

punkty początkowe dla funkcji szukaj(). Łatwo natomiast określić punkt poszukiwań dla<br />

funkcji szukaj_zakres() (żółte kropki rysunek 3.16). Działanie i obszar poszukiwań tej<br />

funkcji, są widoczne na rysunku 3.16 przy długościach 7, 10, 13, 15 z rysunku 3.14 (cienka<br />

czerwona kreska).<br />

Podczas wykorzystywania wszystkich funkcji opisywanych w tym podrozdziale<br />

należało obliczać wyraz wolny b równania liniowego. Do tego celu służył kod przedstawiony<br />

w listingu 3.7.<br />

public double wspB(Point poczatek, double a)<br />

{<br />

double b;<br />

b = poczatek.Y - (a * poczatek.X);<br />

return b;<br />

}<br />

Listing 3.7. Przedstawiona funkcja służy do obliczania wyrazu wolnego b przez podanie, jako argumenty<br />

wejściowe, punktu na prostej i współczynnika kierunkowego a.<br />

35


3. Projekt systemu geometrii dłoni<br />

3.4.4. Baza danych<br />

Baza danych jest strukturą, wewnątrz której przechowywane są wszystkie<br />

przetwarzane biometryki wraz z wynikami pracy ekstraktora cech, oraz informacjami<br />

dodatkowymi. Uproszczony schemat używanej bazy danych znajduje się na rysunku 3.17.<br />

Wewnątrz bazy danych, na pierwszym poziomie, znajdują się dwie listy z obiektami<br />

reprezentującymi poszczególne osoby. Pierwsza reprezentuje osoby wzorcowe, których<br />

dłonie są szablonami biometrycznymi. Druga, zawiera osoby, których biometryki będą<br />

porównywane względem szablonów.<br />

Rysunek 3.17. Uproszczony schemat przedstawiający bazę danych programu. W bazie zawarte są informacje<br />

o konkretnych osobach i dłoniach poszczególnych osób. Każda z X dłoni jest opisana przez Y długości.<br />

Każda osoba posiada listę obiektów typu dłoń, zawierającą próbki biometryczne dłoni.<br />

Dłonie poszczególnych osób posiadają numery PIN zgodne z numerami PIN właściciela. Jest<br />

to wykorzystywane podczas weryfikacji biometrycznej, oraz dla sprawdzenia poprawności<br />

identyfikacji biometrycznej. Obiekt dłoń, jest pojedynczą biometryką. Reprezentowana jest za<br />

pomocą bitmapy, kodu PIN, oraz wektora cech opisujących Y długości. Bitmapa jest<br />

zdjęciem uzyskanym w sposób opisany w rozdziale 3.3 z wykorzystaniem stolika i czytnika<br />

36


3. Projekt systemu geometrii dłoni<br />

biometrycznego. Natomiast wektor cech, jest wynikiem pracy ekstraktora biometrycznego.<br />

W stworzonym systemie geometrii dłoni liczba cech Y wynosi 19 i odpowiada ona tabeli 3.1<br />

i rysunkowi 3.14.<br />

Zaimplementowana baza danych posiada funkcję umożliwiającą wczytywanie,<br />

odpowiednio sformatowanych zdjęć, z plików znajdujących się na dysku twardym. Pliki<br />

poddane są obróbce (rozdział 3.4.2) i ekstrakcji cech (rozdział 3.4.3), aby ostatecznie można<br />

było je zapisać jako rekordy bazy danych.<br />

public baza_danych wczytaj_zdjecia() //wczyta zdjecia z plikow<br />

{<br />

(…)<br />

//jeden katalog to jedna osoba<br />

foreach (DirectoryInfo katalog in katalogi_nizej)<br />

{<br />

Moja_Osoba = Moja_Baza.dodaj_osobe (…); //dodanie nowej osoby<br />

pliki = katalog.GetFiles("*jpg", SearchOption.TopDirectoryOnly);<br />

foreach (FileInfo plik in pliki)<br />

//poszczegolne zdjecia<br />

{<br />

//dodaje tylko sciezke ze zdjeciem<br />

using (dlon reka = Moja_Osoba.dodaj_dlon(plik.FullName))<br />

{<br />

reka.czytaj_ze_sciezki();<br />

reka.Ekstrakcja_cech();<br />

}<br />

//automatyczne wywolanie dispose()<br />

}<br />

(…)<br />

}<br />

GC.Collect();<br />

GC.WaitForPendingFinalizers();<br />

}<br />

Listing 3.8. Funkcja wczytaj_zdjecia() zawarta w bazie danych programu. Przedstawiona wersja jest wersją<br />

skróconą i uproszczoną w stosunku do zawartej w kodzie źródłowym programu. Zamieszczone tutaj uproszczenie<br />

ma na celu pokazanie idei działania.<br />

Aby możliwe było poprawne wczytanie zdjęć z dysku twardego do bazy danych,<br />

muszą być one odpowiednio rozlokowane w folderach (rysunek 3.18).<br />

Rysunek 3.18. Przykładowa struktura katalogów pozwalająca na poprawne wczytanie zdjęć do bazy danych.<br />

Z lewej strony rozwinięty folder wzorce. Z prawej strony rozwinięty folder badane.<br />

37


3. Projekt systemu geometrii dłoni<br />

W pierwszej kolejności należy utworzyć folder główny o dowolnej nazwie i umieścić w nim<br />

dwa podkatalogi (przykład na rysunku 3.18). Jeden o nazwie wzorce, a drugi o dowolnej<br />

nazwie. Wewnątrz tych dwóch podkatalogów trzeba stworzyć tyle folderów ile jest różnych<br />

osób. Nazwy folderów muszą być liczbami. W programie, zostaną one wykorzystane jako<br />

numery PIN osób i przynależnych jej dłoni. Zdjęcia jednej osoby należy porozdzielać<br />

pomiędzy katalogi wzorce i badane (nazwa badane użyta z przykładu na rysunku 3.18),<br />

uwzgędniając odpowiednie numery w podkatalogach.<br />

Funkcja wczytaj_zdjecia() wykorzystuje opisaną powyżej strukturę<br />

katalogową. W listingu 3.8 znajduje się fragment, odpowiedzialny za stworzenie jednej listy<br />

osób bazy danych (lista badanych bądź lista wzorców z rysuneku 3.17). Kod przechodzi<br />

kolejno przez wszystkie katalogi dzięki pierwszej pętli foreach(). Każdy katalog<br />

(z numerem PIN) to nowa osoba, która jest kreowana funkcją dodaj_osobe(). Każdy plik<br />

ze zdjęciem w katalogu to jedna biometryka przed chwilą utworzonej osoby. Wszystkie<br />

zdjęcia przeglądane są w drugiej pętli foreach() i dodawane funkcją dodaj_dlon().<br />

Do bazy danych nie jest zapisywane zdjęcie biometryki tylko ścieżka dostępu do tego<br />

zdjęcia. Jest tak ze względu na duże zapotrzebowanie zdjęć na pamięć operacyjną. Jedno<br />

zdjęcie zapisane w bazie danych potrzebowałoby ponad 4 MB pamięci (wynik podczas badań<br />

i testowania programu). Jeden rekord z biometryką operuje na trzech kopiach zdjęcia:<br />

oryginale, zdjęciu binarnym i zdjęciu po ekstrakcji cech. Jeśli wziąć pod uwagę liczbę<br />

zebranych próbek biometrycznych (520 próbek) i operacje na trzech kopiach, wymagana ilość<br />

pamięci operacyjnej przekroczyłaby 6 GB. Dlatego zdjęcia przechowywane są tylko<br />

chwilowo na potrzeby ekstraktora cech i podczas wyświetlania. Ścieżka dostępu do pliku ze<br />

zdjęciem pozwala na szybkie wczytanie obrazka biometryki. Dzięki użyciu słowa kluczowego<br />

using (listing 3.8), pamięć zajęta przez operacje na bitmapach zostanie zwolniona.<br />

W omawianym kodzie widać, że funkcja dodaj_dlon() korzysta tylko ze ścieżki do pliku.<br />

Następnie na podstawie ścieżki dostępu zdjęcie jest, chwilowo wczytywane przez funkcję<br />

czytaj_ze_sciezki() i analizowane w ekstraktorze cech. Zaraz za klamrą, zamykającą<br />

obszar using, pamięć jest odznaczona jako gotowa do zwolnienia. Właściwe zwolnienie<br />

pamięci, odbywa się dzięki Garbage Collectorowi (GC) tuż za pętlą foreach(). Garbage<br />

Collector jest modułem zarządzającym pamięcią i zwalniającym niepotrzebną pamięć<br />

w języku C#.<br />

38


3. Projekt systemu geometrii dłoni<br />

3.4.5. Komparator biometryczny<br />

Komparator biometryczny służy do porównywania dwóch próbek biometrycznych. Wersja<br />

zaimplementowana w programie opiera się na punktacji. Podczas porównywania dwóch<br />

biometryk obliczana jest punktacja zgodności i na tej podstawie podejmowana jest decyzja.<br />

W stworzonym komparatorze cech wykorzystano cztery różne metryki odległościowe,<br />

służące do obliczania punktacji zgodności: bezwzględną, bezwzględną ważoną, euklidesową<br />

oraz euklidesową ważoną. Do obliczenia wymienionych metryk wykorzystywane są wzory:<br />

od 2.1 do 2.6. Kod zaimplementowany w programie obliczający ważoną metrykę euklidesową<br />

przedstawiony jest w listingach 3.9, 3.10 i 3.11.<br />

Pierwszym krokiem koniecznym dla uzyskania punktacji, jest obliczenie wektora ze<br />

średnimi długościami cech (tabela 3.1). Obliczenie to wykonywane jest, dla szablonów<br />

wzorcowych w bazie danych, zaraz po wczytaniu nowych zdjęć do bazy. Podczas tej operacji<br />

wykorzystany jest kod z listingu 3.9. Dzieje się to za pomocą dwóch pętli for(), gdzie jedna<br />

przechodzi po 19 cechach (odnalezionych przez ekstraktor cech), a druga po liczbie dłoni<br />

danej osoby. Jako wynik, stworzony zostanie wektor, średnich długości cech dłoni jednej<br />

osoby. Podczas późniejszego porównywania i wystawiania punktacji korzysta się<br />

z obliczonych średnich. W ten sposób, jeden szablon biometryczny, jest w stanie<br />

wykorzystywać wiele biometryk wzorcowych.<br />

//zwroci srednie wartosci dlugosci dloni jednego rekordu (jedna osoba)<br />

public double[] Srednia(osoba Osoba)<br />

{<br />

int ile_dl = 19;<br />

double []srednia = new double [ile_dl];<br />

int dzielnik = Osoba.l_dlonie.Count(); //ile dloni danej osoby<br />

for (int i = 0; i < dzielnik; i++) //licznik po dloniach<br />

{<br />

for (int j = 0; j < ile_dl; j++) //licznik po dlugosciach<br />

{<br />

srednia[j] += (Osoba.l_dlonie[i].l_odcinki[j].dlugosc /<br />

dzielnik);<br />

//wzor na srednia arytmetyczna<br />

}<br />

}<br />

return srednia;<br />

}<br />

Listing 3.9. Funkcja obliczająca średnią arytmetyczną (wzór 2.6) wszystkich wektorów cech dłoni jednej osoby.<br />

Wariancja wykorzystywana we wzorze 2.4 jest miarą ważności j-tej cechy. Większy<br />

wynik wariancji wpłynie na mniejszą punktacje (szablon cech ma większy rozrzut próbek<br />

biometrycznych). Z kolei mniejszy wynik wariancji spowoduje, że punktacja będzie wyższa<br />

(szablon cech ma mniejszy rozrzut próbek biometrycznych), przez co system będzie bardziej<br />

rygorystyczny. Odpowiednie dobranie próbek biometrycznych dla pojedynczego szablonu,<br />

39


3. Projekt systemu geometrii dłoni<br />

wpłynie na tolerancję systemu podczas interpretacji nowych biometryk z biometrykami<br />

wzorcowymi. Wariancja, podobnie jak średnia, jest obliczana dla wszystkich szablonów<br />

zarejestrowanych w bazie danych. Dla obliczenia wariancji wymagane jest wcześniejsze<br />

obliczenie średnich. Sposób liczenia wariancji z listingu 3.10 jest analogiczny do sposobu<br />

policzenia średniej (listing 3.9).<br />

//liczy wariancje dlugosci dloni jednej osoby (osoba musi miec obliczone<br />

srednie)<br />

public double[] Wariancja(osoba Osoba)<br />

{<br />

int ile_dl = 19;<br />

double[] wariancja = new double[ile_dl];<br />

int dzielnik = Osoba.l_dlonie.Count(); //ile dloni danej osoby<br />

for (int i = 0; i < dzielnik; i++) //licznik po dloniach<br />

{<br />

for (int j = 0; j < ile_dl; j++) //licznik po dlugosciach<br />

{<br />

}<br />

}<br />

return wariancja;<br />

wariancja[j] +=<br />

(Math.Pow((Osoba.l_dlonie[i].l_odcinki[j].dlugosc -<br />

Osoba.l_srednie[j]), 2)/dzielnik); //wzor na wariancje<br />

}<br />

Listing 3.10. Funkcja obliczająca wektor wariancji (wzór 2.5) 19 cech biometrycznych, obliczany względem<br />

wszystkich zarejestrowanych szablonów.<br />

Ważona odległość euklidesowa pozwala na określenie miary podobieństwa dwóch<br />

próbek biometrycznych. Im dwie porównywane próbki są bardziej podobne do siebie, tym<br />

wynik ważonej odległości euklidesowej będzie niższy. Analogicznie, jeśli dwie biometryki<br />

posiadają znaczące różnice to uzyskany wynik będzie wysoki (rozdział 2.5). Kod z listingu<br />

3.11 do poprawnego działania wymaga obliczenia wariancji. Wykonywane jest to za pomocą<br />

funkcji Wariancja(), i obliczana jest dla próbek osoby wzorcowej (argument funkcji<br />

zBazy). Główna pętla przechodzi po wszystkich 19 długościach cech, porównując cechy<br />

szablonu w bazie z cechami biometryki przedstawianej z zewnątrz.<br />

//zwroci wartosc wazonej metryki euklidesowej<br />

public double Euklides _waga(osoba zBazy, dlon zZewnatrz)<br />

{<br />

double wynik = 0;<br />

//punktacja<br />

int ile_dl = 19;<br />

//ilosc dlugosci<br />

double []wariancja = new double[ile_dl];<br />

wariancja = Wariancja(zBazy); //obliczy wariancje zdjec z bazy<br />

for (int i = 0; i < ile_dl; i++)<br />

{<br />

if (wariancja[i] != 0)<br />

wynik += (Math.Pow(zZewnatrz.l_odcinki[i].dlugosc -<br />

zBazy.l_srednie[i], 2) / wariancja[i]); //glowny wzor<br />

40


3. Projekt systemu geometrii dłoni<br />

}<br />

}<br />

wynik = Math.Sqrt(wynik);<br />

return wynik;<br />

Listing 3.11. Funkcja obliczająca ważoną odległość Euklidesową (wzór 2.4). Wykorzystuje obliczone wcześniej<br />

średnią i wariancję. Wynikiem powyższej funkcji jest miara punktowa, określająca zgodność dwóch próbek<br />

biometrycznych.<br />

Kolejnym przykładem będzie kod wykorzystany do obliczenia bezwzględnej metryki<br />

odległościowej w listingu 3.12. Algorytm przechodzi po wszystkich długościach cech dłoni,<br />

wyliczając wartość bezwględną różnicy odległości biometryki z zewnątrz i wzorca.<br />

W ostatecznym rezultacie wszystkie poszczególne wyniki są sumowane. Otrzymana liczba<br />

jest wartością punktacji zgodności.<br />

public double Bezwzgledna(osoba zBazy, dlon zZewnatrz)<br />

metryki bezwzglednej<br />

{<br />

double wynik = 0;<br />

//punktacja<br />

int ile_dl = 19;<br />

//ilosc dlugosci<br />

//zwroci wartosc<br />

}<br />

for (int i = 0; i < ile_dl; i++)<br />

{<br />

wynik += Math.Abs(zZewnatrz.l_odcinki[i].dlugosc -<br />

zBazy.l_srednie[i]);<br />

}<br />

return wynik;<br />

Listing 3.12. Funkcja obliczająca punktację zgodności na podstawie bezwzględnej metryki odległościowej.<br />

Pozostałe dwie metryki odległościowe: euklidesowa i bezwzględna ważona, obliczane<br />

są w analogicznie do sposobów przedstawionych w listingach od 3.9 do 3.12.<br />

3.4.6. Interfejs programu<br />

W programie geometrii dłoni, dla ułatwienia operacji na bazie danych i w celu<br />

wizualizacji wyników, wprowadzono graficzny interfejs użytkownika. Przedstawiono go na<br />

rysunku 3.19. Wszystkie operacje zaimplementowane w programie są dostępne poprzez ten<br />

interfejs.<br />

Okno programu zostało podzielone na kilka części, zaznaczonych numerami od 1 do 6<br />

(białe kółka z numerami na rysunku 3.19). Opis poszczególnych części:<br />

1) Baza biometryk z zewnątrz. Reprezentuje dłonie niezarejestrowane w bazie<br />

danych jako szablon. Przedstawiane tutaj biometryki będą poddawane analizie.<br />

Podczas wyświetlania biometryka zostaje pobrana przy pomocy ścieżki dostępu.<br />

41


3. Projekt systemu geometrii dłoni<br />

2) Baza biometryk wewnątrz. Reprezentuje szablony biometryczne poszczególnych<br />

osób, stworzone z zarejestrowanych dłoni. Podczas porównywania zgodności<br />

biometrycznej, brany jest pod uwagę cały szablon danej osoby, a nie pojedyncza<br />

próbka biometryczna.<br />

Rysunek 3.19. Graficzny interfejs użytkownika z przykładowymi ustawieniami bazy wzorców i bazy osób<br />

badanych.<br />

3) Okienko statusu na którym wyświetlane są wyniki przeprowadzanych analiz.<br />

4) Opcje pozwalające na: wczytanie odpowiednio sformatowanych zdjęć (wczytaj<br />

zdjęcia), zapis stworzonej bazy danych do pliku oraz otworzenie bazy z pliku.<br />

Dodatkowo znajduje się tam pomoc dla programu geometrii dłoni.<br />

5) Informacje na temat bazy wewnętrznej i ID aktualnie wyświetlanej biometryki.<br />

Obok znajdują się przyciski pozwalające na przeglądanie bazy osób i zdjęć danej<br />

osoby. Powyżej jest przycisk wyświetlający długości 19 cech aktualnej<br />

biometryki. Analogiczne pola umieszczone są dla próbek w bazie osób z zewnątrz<br />

(oznaczonej numerem 1).<br />

6) Przyciski dzięki którym, możliwe są operacje identyfikacji i weryfikacji<br />

biometrycznej. Dostępne są operacje ręczne działające na pojedynczych próbkach<br />

wejściowych, oraz operacje automatyczne wykorzystujące wszystkie próbki<br />

42


3. Projekt systemu geometrii dłoni<br />

wejściowe. Podczas operacji ręcznych wyniki wyświetlone są w polu statusu. Po<br />

wykonaniu operacji automatycznej, dodatkowy wynik zapisany jest w pliku na<br />

dysku (w katalogu z programem geometrii dłoni).<br />

7) Wybór, wykorzystywanej w programie, metryki odległościowej.<br />

Zasady obsługi aplikacji przedstawione są w pliku pomocy programu. Jest on<br />

dostępny z interfejsu użytkownika i pokrótce omawia działanie poszczególnych przycisków<br />

oraz wykorzystywanych procedur biometrycznych.<br />

3.5. Transformata Hough<br />

Transformata Hough była wykorzystywana w początkowej fazie pisania programu.<br />

Miała ona posłużyć do znalezienia osi palców podczas ekstrakcji cech. Ostatecznie jednak nie<br />

udało się uzyskać zadowalających wyników i wprowadzono inne procedury wykrywania osi.<br />

Niemałą zaletą transformaty Hough jest to, że podczas wykrywania osi palców nie potrzeba<br />

informacji o pozycji kołków stolika. Natomiast sporą trudnością jest poprawna implementacja<br />

algorytmu dla poprawnego wykrywania poszczególnych osi. Transformata Hough mogłaby<br />

być wykorzystana jako ulepszenie algorytmu wykrywania cech biometrycznych, niezależnie<br />

od sposobu ułożenia dłoni.<br />

Transformacja Hough zamienia współrzędne kartezjańskie na współrzędne biegunowe<br />

za pomocą wzoru 3.4, przez co punkty o współrzędnych x, y są reprezentowane przez<br />

współrzędne: r i θ [9].<br />

<br />

<br />

Zależność współrzędnych kartezjańskich i współrzędnych biegunowych:<br />

Zakres promienia wodzącego:<br />

r = x cos θ + y sin⁡(θ) (3.4)<br />

− N 1 2 + N 2 2 ≤ r ≤ N 1 2 + N 2<br />

2 (3.5)<br />

<br />

Zakres kąta θ:<br />

− π 2 ≤ θ < π 2<br />

(3.6)<br />

Oznaczenia:<br />

N 1 , N 2<br />

r , θ<br />

– wymiary obrazka<br />

– współrzędne polarne<br />

43


3. Projekt systemu geometrii dłoni<br />

Transformata Hough wykorzystuje obrazy dwubitowe po procesie binaryzacji.<br />

W algorytmie transformacji Hough, zaimplementowana jest tablica P, początkowo<br />

wypełniona zerami. Indeksy tej tablicy odpowiadają współrzędnym biegunowym (r , θ). Dla<br />

każdego czarnego punktu obrazu (lub białego, w zależności od implementacji), we<br />

współrzędnych kartezjańskich, obliczane są współrzędne polarne za pomocą wzoru 3.4.<br />

Następnie, w obliczonych miejscach w tablicy P, wartości licznika zwiększane są o 1<br />

(odbywa się to wzdłuż całej szerokości tablicy, odpowiadającej kątowi θ). Wstawione punkty<br />

odzwierciedlają część sinusoidy. Po przeanalizowaniu wszystkich punktów wejściowego<br />

obrazu binarnego w tablicy P powstanie zbiór sinusoid nałożonych na siebie (rysunek 3.20<br />

z prawej) i zapisanych za pomocą cyfr [9]. Większe wartości tablicy P oznaczają miejsca<br />

przecięcia sinusoid (jaśniejsze punkty na rysunku 3.20 z prawej).<br />

Rysunek 3.20. Przykładowy rysunek we współrzędnych kartezjańskich (z lewej) i jego transformata we<br />

współrzędnych biegunowych. Transformata jest zbiorem sinusoid. Jaśniejsze miejsca w obrazie są<br />

zagęszczeniem sinusoid [17].<br />

Rysunek 3.21. Przykładowy rysunek we współrzędnych kartezjańskich i jego transformata we współrzędnych<br />

biegunowych. Na obrazie transformaty zaznaczono miejsca przecięć sinusoid. Odwrotna transformata Hough<br />

zaznaczonych punktów, pozwoli na uzyskanie żółtych prostych z po lewej (współrzędne kartezjańskie) [17].<br />

W celu znalezienia krawędzi obrazka wejściowego, wartości tablicy P poddaje się<br />

progowaniu. Dzięki takiej operacji pozostaną wyłącznie punkty zagęszczeń sinusoid (miejsca<br />

oznaczone zielonymi kwadratami z rysunku 3.21). W kolejnym kroku zmodyfikowane<br />

44


3. Projekt systemu geometrii dłoni<br />

wartości tablicy P poddawane są odwrotnej transformacie Hough. W rezultacie powstaną linie<br />

odzwierciedlające krawędzie obrazka (żółte linie na rysunku 3.21).<br />

Przykładowe linie proste uzyskane podczas testowania transformaty Hough znajdują<br />

się na rysunkach 3.22 i 3.23. Podczas testów modyfikowano wartość progową oraz rozmiary<br />

(n, m) tablicy P, odpowiadające współrzędnym biegunowym (r , θ). Obrazem wejściowym,<br />

służącym do testów, był binarny obraz dłoni. Na obrazku nie ma kołków.<br />

Rysunek 3.22. Przykładowe zastosowania transformaty Hough. Obraz wejściowy to czarna dłoń. Czerwone<br />

kreski to wynik odwrotnej transformaty Hough. Rozmiary n i m tablicy P wynoszą 100. Wartości progu<br />

począwszy od rysunku z lewej wynoszą: 12000, 11000 i 10000.<br />

Jak pokazuje rysunek 3.22, zwiększenie wartości progowej usunie więcej punktów<br />

z tablicy P i w rezultacie odwrotna transformata Hough wyrysuje mniejszą liczbę prostych.<br />

Wymiary tablicy P mają również wpływ na liczbę prostych wydrukowanych przez odwrotną<br />

transformatę Hough. Przykład na rysunku 3.23.<br />

Rysunek 3.23. Przykładowe zastosowania transformaty Hough. Obraz wejściowy to czarna dłoń. Czerwone<br />

kreski to wynik odwrotnej transformaty Hough. Rozmiary n wynosi 10, m wynosi 100. Wartość progu to 10000.<br />

Dużą trudnością jest odpowiedni dobór parametrów transformaty Hough pozwalający<br />

na wyodrębnienie interesujących krawędzi i osi dłoni. Sporą wadą transformaty Hough jest<br />

45


3. Projekt systemu geometrii dłoni<br />

też duża złożoność obliczeniowa. Podczas przetwarzania, badany i modyfikowany jest każdy<br />

wejściowy punkt obrazu o odpowiednim kolorze. Jest to rozwiązanie nie optymalne, jeśli<br />

weźmie się po uwagę szybkość działania algorytmu.<br />

Implementacje algorytmów transformaty Hough jak i odwrotnej transformaty Hough<br />

załączone są jako dodatki na płycie.<br />

46


4. Wyniki eksperymentów biometrycznych<br />

4. WYNIKI EKSPERYMENTÓW BIOMETRYCZNYCH<br />

Analizowany system biometryczny geometrii dłoni może zostać wykorzystany do<br />

identyfikacji i weryfikacji biometrycznej. Skuteczność i poprawność działania tych dwóch<br />

procedur została sprawdzona w niniejszym rozdziale. Dodatkowo przeprowadzono test<br />

pozwalający znaleźć optymalne wartości progów.<br />

Podczas testów wykorzystano biometryki dłoni zebrane od 52 osób, po 10 próbek od<br />

każdej. Całą bazę 520 biometryk rozdzielono na biometryki budujące szablony biometryczne<br />

(rozdział 2.4.1), i na biometryki analizowane, przychodzące z zewnątrz (nie zawarte<br />

w szablonach). Sposób podziału opisano w rozdziale 3.4.4. Wszystkie testy identyfikacji<br />

i weryfikacji wykonano dla stałej liczby 312 próbek wejściowych (52 osoby po 6 biometryk).<br />

Modyfikowano wyłącznie liczbę biometryk przypadających na pojedynczy szablon<br />

biometryczny poszczególnych osób. W eksperymencie używano szablonów składających się<br />

z 2, 3 i 4 próbek biometrycznych (jeden szablon odzwierciedla jedną osobę).<br />

Doświadczenia zostały przeprowadzone dla czterech różnych metryk odległościowych,<br />

przedstawionych w rozdziale 2.5. Wszystkie zostały zaimplementowane w komparatorze cech<br />

biometrycznych opisanym w rozdziale 3.4.5.<br />

4.1. Testy identyfikacji biometrycznej<br />

Pierwszym testem jaki został przeprowadzony był test identyfikacji biometrycznej.<br />

Każdą próbkę wejściową porównano ze wszystkimi wzorcami bazy danych w celu<br />

znalezienia najlepszego odpowiednika (schemat 4.1) o najmniejszym wyniku punktowym (im<br />

mniejszy wynik punktowy tym większe podobieństwo dwóch próbek). Podczas procedury<br />

identyfikacji decyzja, o wyborze pasującego szablonu, podejmowana jest wyłącznie na<br />

podstawie przedstawionej biometryki. Aby możliwe było zweryfikowanie czy pojedyncza<br />

identyfikacja biometryczna przebiegła prawidłowo, porównuje się numer ID dłoni z zewnątrz<br />

z numerem ID szablonu w bazie danych. W przypadku zgodności zwiększa się licznik<br />

poprawna identyfikacja, a w przypadku błędu zwiększa się licznik niepoprawna identyfikacja<br />

(schemat 4.1). Test kończy się po przejrzeniu wszystkich biometryk wejściowych z zewnątrz.<br />

W tabeli 4.1 i na wykresie 4.1 przedstawiono wyniki poprawności identyfikacji<br />

biometrycznej w zależności od liczby biometryk przypadających na jeden wzorzec<br />

biometryczny przy różnych metrykach odległości. Analiza tabeli i wykresu pokazuje, że wraz<br />

ze wzrostem liczby próbek we wzorcu rośnie liczba poprawnych identyfikacji dla wszystkich<br />

czterech metryk odległości. Pojedyncza poprawnie zidentyfikowana biometryka wejściowa<br />

zwiększa wynik o 0,32% (wynik uzyskany po obliczeniu: 1 / 312 * 100%).<br />

47


4. Wyniki eksperymentów biometrycznych<br />

Schemat 4.1. Schemat blokowy procesu identyfikacji automatycznej. Sprawdzenie ID dopasowanych dłoni<br />

pozwala na zliczenie liczby poprawnych i niepoprawnych identyfikacji.<br />

Tabela 4.1. Wyniki testów poprawności identyfikacji biometrycznej. Pierwsza cyfra wskazuje liczbę<br />

prawidłowych identyfikacji, druga całkowitą liczbę analizowanych biometryk. W nawiasie przedstawiono wynik<br />

procentowy. Metryki przedstawiono w rozdziałach 2.5 i 3.4.5.<br />

Metryka odległości<br />

Liczba biometryk<br />

we wzorcu<br />

Euklidesowa<br />

2 277 / 312<br />

(88,78)%<br />

3 287 / 312<br />

(91,99)%<br />

4 288 / 312<br />

(92,31)%<br />

Euklidesowa<br />

ważona<br />

180 / 312<br />

(57,69)%<br />

242 / 312<br />

(77,56)%<br />

298 / 312<br />

(95,51)%<br />

Bezwzględna<br />

286 / 312<br />

(91,67)%<br />

292 / 312<br />

(93,59)%<br />

296 / 312<br />

(94,87)%<br />

Bezwzględna<br />

ważona<br />

219 / 312<br />

(70,19)%<br />

269 / 312<br />

(86,22)%<br />

304 / 312<br />

(97,44)%<br />

48


Poprawna identyfikacjia [%]<br />

4. Wyniki eksperymentów biometrycznych<br />

Zastosowanie metryki euklidesowej oraz metryki bezwzględnej, przy dwóch<br />

biometrykach w<br />

szablonie, pozwoliło na uzyskanie wysokiego wyniku poprawnej<br />

identyfikacji (odpowiednio 88,78% i 91,67). Był on, w tym przypadku, dużo wyższy niż dla<br />

metryk: euklidesowej ważonej i bezwzględnej ważonej (odpowiednio 57,69% i 70,19%).<br />

Zastosowanie ważonej metryki euklidesowej przy niewielkiej liczbie próbek w szablonie dało<br />

najsłabszy rezultat poprawnej identyfikacji (57,69%).<br />

Wykres 4.1. Procentowy rezultat poprawnej identyfikacji biometrycznej dla czterech różnych metryk odległości.<br />

Na wykresie widać<br />

100,00%<br />

90,00%<br />

80,00%<br />

70,00%<br />

60,00%<br />

50,00%<br />

40,00%<br />

30,00%<br />

20,00%<br />

10,00%<br />

0,00%<br />

2 3 4<br />

Liczba biometryk na jeden wzorzec biometryczny<br />

euklidesowa<br />

euklidesowa ważona<br />

bezwzględna<br />

bezwzględna ważona<br />

Dopiero po stworzeniu szablonów składających się z czterech próbek biometrycznych<br />

wyniki poprawnej identyfikacji z wykorzystaniem ważonej metryki euklidesowej i ważonej<br />

metryki bezwzględnej znacząco wzrosły (odpowiednio 95,51% i 97,44%). Wynik 97,44% jest<br />

najwyższym rezultatem poprawnej identyfikacji przy zakładanych warunkach testu.<br />

Wyniki poprawnej identyfikacji, wraz ze wzrostem próbek biometrycznych we<br />

wzorcu, pozostawały na podobnym poziomie dla metryki euklidesowej oraz metryki<br />

bezwzględnej (wykres 4.1). Natomiast, dla metryk: ważonej euklidesowej i ważonej<br />

bezwzględnej wyniki gwałtownie wzrastały wraz ze wzrostem liczby biometryk<br />

w pojedynczym wzorcu.<br />

4.2. Testy weryfikacji biometrycznej<br />

Podczas testu weryfikacji biometrycznej (rozdział 2.4.3) wszystkie biometryki<br />

wejściowe zostały poddane procesowi weryfikacji z każdym z 52 szablonów biometrycznych<br />

(schemat 4.2). Liczba biometryk wejściowych wynosi 312 (po 6 próbek od 52 osób). W bazie<br />

49


4. Wyniki eksperymentów biometrycznych<br />

znajdują się 52 szablony. Na jeden szablon składają się 2, 3 bądź 4 próbki biometryczne.<br />

Próbki w szablonach są rozłożone równomiernie, w takiej samej liczbie. Łączna liczba<br />

porównań w teście dla jednej wartości progowej to 52 ∗ 312 = 16224.<br />

Schemat 4.2. Schemat blokowy procesu weryfikacji automatycznej. Wszystkie wejściowe biometryki są<br />

porównywane z każdym ze wzorców w bazie danych. Procedura powtarza się dla różnych wartości progu.<br />

W procesie weryfikacji możliwe są cztery różne decyzje biometryczne, przy czym dwie z nich mówią o błędach<br />

procesu weryfikacji (czerwony kolor).<br />

50


4. Wyniki eksperymentów biometrycznych<br />

Po przeprowadzeniu wszystkich porównań wartość progu zwiększana jest o 1. Wartość<br />

progowa jest to graniczna liczba, poniżej której wejściowa biometryka o danej punktacji<br />

zgodności (uzyskanej z porównania ze wzorcem) zostanie wpuszczona do systemu. Jeśli<br />

wynik porównania biometryki ze wzorcem będzie wyższy od wartości progowej, to próbka<br />

nie zostanie dopuszczona do systemu. Porównanie wykonywane jest w ekstraktorze cech,<br />

korzystającym z czterech metryk odległości (rozdział 2.5). Gdy biometryka posiada mniejsze<br />

odchylenie wartości cech od wzorca (szablon w bazie), to uzyskany wynik metryki odległości<br />

będzie niższy. Analogicznie większe odchylenie wartości cech skutkuje większym wynikiem.<br />

Możliwe są cztery różne rezultaty weryfikacji biometrycznej: poprawna akceptacja,<br />

poprawne odrzucenie, niepoprawna akceptacja i niepoprawne odrzucenie (schemat 4.2).<br />

Zależą one od wyniku uzyskanego z komparatora biometrycznego, wartości progu, a także od<br />

zgodności numerów ID próbki wejściowej i szablonu.<br />

Wyniki działania weryfikacji biometrycznej zaprojektowanego systemu zostały<br />

przedstawione na wykresach od 4.2 do 4.13. Narysowano cztery typy wykresów:<br />

liczba poprawnych akceptacji w zależności od progu (wykresy 4.2, 4.3 i 4.4),<br />

liczba poprawnych odrzuceń w zależności od progu (wykresy 4.5, 4.6 i 4.7),<br />

liczba niepoprawnych akceptacji w zależności od progu (wykresy 4.8, 4.9 i 4.10),<br />

liczba niepoprawnych odrzuceń w zależności od progu (wykresy 4.11, 4.12 i 4.13).<br />

Dodatkowo, wykresy zmieniają się zależnie od użytej metryki odległościowej, jak<br />

i w zależności od liczby próbek w szablonie biometrycznym.<br />

Z wykresów od 4.2 do 4.4 widać, że wraz ze wzrostem wartości progowej wzrasta<br />

liczba poprawnych akceptacji. Dzieje się to z różną szybkością zależnie od użytej metryki.<br />

Liczba poprawnych akceptacji stabilizuje się na poziomie 312 (przy odpowiednio dużym<br />

progu). Wartość 312 jest maksymalnym, możliwym do uzyskania w eksperymencie,<br />

wynikiem popranych akceptacji (schemat 4.2).<br />

Wraz ze wzrostem liczby biometryk w szablonie wykresy poprawnych akceptacji<br />

przesuwają się w kierunku mniejszych wartości progu. W rezultacie, system poprawnie<br />

akceptuje więcej biometryk przy niższych wartościach progu. Najszybciej zmienia się to przy<br />

użyciu ważonej metryki euklidesowej oraz dla ważonej metryki bezwzględnej. Pozostałe dwie<br />

metryki mają mniejszy wpływ na uzyskane wykresy. Początkowo, dla dwóch próbek w bazie,<br />

metryka euklidesowa daje największą liczbę poprawnych akceptacji. Przy czterech próbkach<br />

w szablonie, lepszą okazuje się ważona metryka euklidesowa.<br />

51


Liczba poprawnych akceptacji<br />

Liczba poprawnych akceptacji<br />

Liczba poprawnych akceptacji<br />

4. Wyniki eksperymentów biometrycznych<br />

<br />

Wykresy liczby poprawnych akceptacji w zależności od progu:<br />

350<br />

300<br />

250<br />

200<br />

150<br />

100<br />

50<br />

0<br />

0 50 100 150 200<br />

Wartośd progu<br />

euklidesowa<br />

euklidesowa ważona<br />

bezwzględna<br />

bezwzględna ważona<br />

Wykres 4.2. Liczba poprawnych akceptacji w zależności od progu dla 2 biometryk w szablonie.<br />

350<br />

300<br />

250<br />

200<br />

150<br />

100<br />

50<br />

0<br />

0 50 100 150 200<br />

Wartośd progu<br />

euklidesowa<br />

euklidesowa ważona<br />

bezwzględna<br />

bezwzględna ważona<br />

Wykres 4.3. Liczba poprawnych akceptacji w zależności od progu dla 3 biometryk w szablonie.<br />

350<br />

300<br />

250<br />

200<br />

150<br />

100<br />

50<br />

0<br />

0 50 100 150 200<br />

Wartośd progu<br />

euklidesowa<br />

euklidesowa ważona<br />

bezwzględna<br />

bezwzględna ważona<br />

Wykres 4.4. Liczba poprawnych akceptacji w zależności od progu dla 4 biometryk w szablonie.<br />

52


4. Wyniki eksperymentów biometrycznych<br />

Wykresy FRR od 4.5 do 4.7 pokazują jak zmienia się liczba niesłusznych odrzuceń<br />

wraz ze wzrostem progu dla różnych metryk odległości i przy różnej liczbie próbek<br />

biometrycznych w pojedynczym szablonie. Błąd FR występuje w przypadku gdy ID<br />

biometryki wejściowej i wzorca są zgodne, jednak wartość progowa jest na tyle niska, że nie<br />

dopuszcza użytkownika do systemu.<br />

Początkowo przy niskich wartościach progu występuje duża liczba niesłusznych<br />

odrzuceń. Dla wartości progu równej 0 i wartości bliskich 0, współczynnik FRR jest<br />

największy i wynosi 312 (jest to liczba maksymalna, uzyskana podobnie jak w przypadku<br />

poprawnych akceptacji). FRR ma bezpośredni wpływ na szybkość systemu. Przy wysokim<br />

FRR wymagana będzie dokładniejsza procedura pobierania biometryk i bardziej szczegółowa<br />

ekstrakcja cech. Użytkownik systemu będzie wielokrotnie odrzucany. Podczas okazywania<br />

biometryki zaistnieje konieczność kilkukrotnego powtarzania pomiarów aż do uzyskania<br />

dostępu. System będzie bardzo rygorystyczny. Przy małym FRR użytkownicy będą w stanie<br />

dostać się do systemu, nawet przy mnie dokładnym okazaniu biometryk.<br />

Przy dwóch próbkach w szablonie biometrycznym metryka euklidesowa już przy<br />

progu, nieznacznie wyższym od 50, pozwoliła na uzyskanie zerowego współczynnika FRR.<br />

Najgorszy rezultat osiągnięto po zastosowaniu metryki bezwzględnej ważonej. Przy czterech<br />

próbkach w jednym szablonie biometrycznym najlepiej spisywała się ważona metryka<br />

euklidesowa, gdzie zerowy FRR wystąpił już poniżej wartości 50.<br />

Wyniki FRR, uzyskane przy pomocy ważonej metryki bezwzględnej i ważonej<br />

metryki euklidesowej poprawiły się, w znaczącym stopniu, przy zwiększeniu liczby próbek<br />

w szablonie. W obu przypadkach FRR równe 0 uzyskano już przy wartościach progu bliskich<br />

50, a nie jak to miało miejsce poprzednio (przy dwóch próbkach na szablon) przy wartościach<br />

progu powyżej 200. Zysk ten jest dużo większy niż przy wykorzystaniu metryki euklidesowej<br />

i bezwzględnej.<br />

Wykresy FRR są powiązane z wykresami poprawnych akceptacji. Gdy rośnie liczba<br />

poprawnych akceptacji to maleje liczba niesłusznych odrzuceń i odwrotnie.<br />

53


FRR<br />

FRR<br />

FRR<br />

4. Wyniki eksperymentów biometrycznych<br />

<br />

Wykresy niesłusznych odrzuceń w zależności od progu:<br />

350<br />

300<br />

250<br />

200<br />

150<br />

100<br />

50<br />

0<br />

0 50 100 150 200<br />

Wartośd progu<br />

euklidesowa<br />

euklidesowa ważona<br />

bezwzględna<br />

bezwzględna ważona<br />

Wykres 4.5. FRR w zależności od progu dla 2 biometryk w szablonie.<br />

350<br />

300<br />

250<br />

200<br />

150<br />

100<br />

50<br />

0<br />

0 50 100 150 200<br />

Wartośd progu<br />

euklidesowa<br />

euklidesowa ważona<br />

bezwzględna<br />

bezwzględna ważona<br />

Wykres 4.6. FRR w zależności od progu dla 3 biometryk w szablonie.<br />

350<br />

300<br />

250<br />

200<br />

150<br />

100<br />

50<br />

0<br />

0 50 100 150 200<br />

Wartośd progu<br />

euklidesowa<br />

euklidesowa ważona<br />

bezwzględna<br />

bezwzględna ważona<br />

Wykres 4.7. FRR w zależności od progu dla 4 biometryk w szablonie.<br />

54


4. Wyniki eksperymentów biometrycznych<br />

Wykresy od 4.8 do 4.10 przedstawiają liczbę poprawnych odrzuceń. Maksymalna<br />

liczba poprawnych odrzuceń jaka może zostać osiągnięta to 51 ∗ 312 = 15912. Wynika ona<br />

z porównania wszystkich 312 biometryk wejściowych ze wszystkimi szablonami w bazie<br />

(schemat 4.2). Przy czym 312 biometryk będzie miało zgodne ID z numerem ID szablonu.<br />

Biometryka jest poprawnie odrzucona gdy jej ID nie jest zgodne z ID szablonu w bazie, oraz<br />

punktacja zgodności po porównaniu biometryki i szablonu jest powyżej wartości progu.<br />

Jak widać na wykresach, przy niskim progu system jest bezpieczniejszy i poprawnie<br />

odrzuca wszystkich 15912 intruzów. Wraz ze wzrostem progu maleje liczba poprawnych<br />

odrzuceń. Przy dwóch biometrykach w szablonie liczba poprawnych odrzuceń najszybciej<br />

maleje do zera dla metryki euklidesowej. Jest to najgorszy przypadek, gdyż już przy progu<br />

niewiele powyżej 200 liczba poprawnych odrzuceń spadła do 0. Najlepszy wynik uzyskano<br />

z wykorzystaniem ważonej metryki bezwzględnej (przy wartości 200 odrzucono poprawnie<br />

prawie 14000 intruzów).<br />

Przy czterech próbkach biometrycznych w jednym szablonie najgorszą okazuje się<br />

ważona metryka euklidesowa a najlepszą metryka bezwzględna (wykres 4.10).<br />

Wykresy o numerach 4.11, 4.12 i 4.13 przedstawiają FAR w zależności od progu.<br />

Wyniki te są zależne od współczynnika poprawnych odrzuceń. Im mniejsza jest liczba<br />

poprawnych odrzuceń, wraz ze wzrostem progu, tym większy staje się współczynnik FAR.<br />

System staje się mniej bezpieczny, ponieważ łatwiej intruzom podszyć się pod inną osobę<br />

zarejestrowaną w bazie systemowej przez uzyskanie wymaganej punktacji zgodności.<br />

Natomiast, nisko ustawiony próg sprawia, że system jest bezpieczniejszy. Trudniej intruzom<br />

przedostać się do systemu, gdyż wymagana jest niższa punktacja zgodności (większe<br />

podobieństwo dwóch biometryk).<br />

Na wykresie 4.11 najgorszą metryką, przy której FAR rośnie najszybciej, okazała się<br />

metryka euklidesowa. Najbezpieczniejsza jest ważona metryka bezwzględna, przy której FAR<br />

jest najniższe<br />

Wraz ze wzrostem próbek biometrycznych w szablonie uzyskano gorsze wyniki FAR<br />

dla ważonej metryki euklidesowej oraz dla ważonej metryki bezwzględnej. Wykorzystanie<br />

metryki euklidesowej jak i metryki bezwzględnej nieznacznie zmieniło kształty uzyskanych<br />

wykresów.<br />

55


Liczba poprawnych odrzuceń<br />

Liczba poprawnych odrzuceń<br />

Liczba poprawnych odrzuceń<br />

4. Wyniki eksperymentów biometrycznych<br />

<br />

Wykresy liczby poprawnych odrzuceń w zależności od progu:<br />

18000<br />

16000<br />

14000<br />

12000<br />

10000<br />

8000<br />

6000<br />

4000<br />

2000<br />

0<br />

0 50 100 150 200<br />

Wartośd progu<br />

euklidesowa<br />

euklidesowa ważona<br />

bezwzględna<br />

bezwzględna ważona<br />

Wykres 4.8. Poprawne odrzucenia w zależności od progu dla 2 biometryk w szablonie.<br />

18000<br />

16000<br />

14000<br />

12000<br />

10000<br />

8000<br />

6000<br />

4000<br />

2000<br />

0<br />

0 50 100 150 200<br />

Wartośd progu<br />

euklidesowa<br />

euklidesowa ważona<br />

bezwzględna<br />

bezwzględna ważona<br />

Wykres 4.9. Poprawne odrzucenia w zależności od progu dla 3 biometryk w szablonie.<br />

18000<br />

16000<br />

14000<br />

12000<br />

10000<br />

8000<br />

6000<br />

4000<br />

2000<br />

0<br />

0 50 100 150 200<br />

Wartośd progu<br />

euklidesowa<br />

euklidesowa ważona<br />

bezwzględna<br />

bezwzględna ważona<br />

Wykres 4.10 Poprawne odrzucenia w zależności od progu dla 4 biometryk w szablonie.<br />

56


FAR<br />

FAR<br />

FAR<br />

4. Wyniki eksperymentów biometrycznych<br />

<br />

Wykresy niesłusznych akceptacji w zależności od progu:<br />

18000<br />

16000<br />

14000<br />

12000<br />

10000<br />

8000<br />

6000<br />

4000<br />

2000<br />

0<br />

0 50 100 150 200<br />

Wartośd progu<br />

euklidesowa<br />

euklidesowa ważona<br />

bezwzględna<br />

bezwzględna ważona<br />

Wykres 4.11. FAR w zależności od progu dla 2 biometryk w szablonie.<br />

18000<br />

16000<br />

14000<br />

12000<br />

10000<br />

8000<br />

6000<br />

4000<br />

2000<br />

0<br />

0 50 100 150 200<br />

Wartośd progu<br />

euklidesowa<br />

euklidesowa ważona<br />

bezwzględna<br />

bezwzględna ważona<br />

Wykres 4.12. FAR w zależności od progu dla 3 biometryk w szablonie.<br />

18000<br />

16000<br />

14000<br />

12000<br />

10000<br />

8000<br />

6000<br />

4000<br />

2000<br />

0<br />

0 50 100 150 200<br />

Wartośd progu<br />

euklidesowa<br />

euklidesowa ważona<br />

bezwzględna<br />

bezwzględna ważona<br />

Wykres 4.13. FAR w zależności od progu dla 4 biometryk w szablonie.<br />

57


FAR linie przerywane. FRR linie ciągłe.<br />

4. Wyniki eksperymentów biometrycznych<br />

Odpowiednie wykresy poprawnych akceptacji i FRR są do siebie symetryczne.<br />

Podobnie jest z odpowiednimi wykresami poprawnych odrzuceń i FAR. Wynika to<br />

z porównania wszystkich próbek wejściowych ze wszystkimi szablonami w bazie danych. Co<br />

było założeniem testu i przedstawione jest na schemacie 4.2. Podczas działania systemu<br />

w normalnych (nie doświadczalnych) warunkach pracy przedstawione wykresy stracą swoją<br />

symetrię. Będzie tak dlatego, że nie jest znana liczba osób jakie będą próbowały dostać się do<br />

systemu. Nie wiadomo też nic o liczbie potencjalnych intruzów. Zależnie od warunków pracy,<br />

zbierane biometryki mogą się znacząco różnić od siebie lub być bardzo podobne. W takim<br />

systemie próg decyzyjny będzie ustawiony na pewnym poziomie w zależności czy ważne jest<br />

bezpieczeństwo czy szybkość systemu. To ustawienie zadecyduje o typie podejmowanych<br />

decyzji.<br />

800<br />

700<br />

600<br />

500<br />

400<br />

300<br />

200<br />

100<br />

0<br />

0 50 100 150<br />

Wartośd progu<br />

FRR (4próbki)<br />

FAR (4 próbki)<br />

FRR (2 próbki)<br />

FAR (2 próbki)<br />

Wykres 4.14. FAR i FRR w zależności od progu dla 4 biometryk w szablonie (kolor niebieski) i dla 2 biometryk<br />

w szablonie (kolor czerwony) w przypadku użycia ważonej metryki euklidesowej. Powiększenie.<br />

Analiza zbiorcza wszystkich wykresów od 4.2 do 4.13 pozwala na wyciągnięcie kilku<br />

wniosków:<br />

Nie możliwe jest jednoczesne osiągnięcie dużej szybkości systemu przy dużym<br />

poziomie bezpieczeństwa. Zwiększenie liczby poprawnych akceptacji i poprawa<br />

współczynnika FRR (zwiększenie szybkości) wiąże się ze zwiększeniem<br />

współczynnika FAR (zmniejszenie bezpieczeństwa) wraz ze zmaleniem liczby<br />

poprawnych odrzuceń.<br />

Użycie metryki bezwzględnej i metryki euklidesowej w niewielkim stopniu poprawia<br />

działanie systemu przy zwiększaniu liczby próbek biometrycznych w jednym wzorcu<br />

biometrycznym.<br />

58


4. Wyniki eksperymentów biometrycznych<br />

<br />

<br />

Metryki, euklidesowa ważona oraz bezwzględna ważona, znacząco zmieniły uzyskane<br />

wyniki wraz ze wzrostem liczby próbek biometrycznych w jednym wzorcu<br />

biometrycznym. Przy zwiększeniu liczby próbek w szablonie z 2 do 4, zerowe<br />

wartości FRR i FAR przesunęły się w stronę niższych wartości progu. Przesunięcie<br />

FRR w lewo jest pożądanym skutkiem ze względu na zwiększenie szybkości systemu.<br />

Przemieszczenie wykresu FAR w lewo jest niepożądane ze względów<br />

bezpieczeństwa. Jednak, takie jednoczesne przesunięcie obu krzywych poprawiło<br />

wyniki. Obszar wspólny błędów FAR i FRR zmniejszył się. Przedstawiono to na<br />

wykresie 4.14.<br />

Zależnie od liczby biometryk w szablonie różne metryki odległości dawały<br />

różnorodne rezultaty. Przez co, nie ma jednej uniwersalnej metryki odległościowej.<br />

Podczas projektowania systemu należy uwzględnić działanie danej metryki<br />

w zależności od progu.<br />

4.3. Testy optymalizujące wartość progową<br />

Podczas optymalizacji wartości progowej wyznaczono częstość trafień zgodnych<br />

i częstość trafień niezgodnych w zależności od punktacji. W przykładzie zastosowano ważoną<br />

metrykę bezwzględną. Przez punktację należy rozumieć wynik porównania (uzyskany<br />

w komparatorze cech) próbki biometrycznej wejściowej z szablonem w bazie danych. Jednak<br />

punktacja z wykresów nie odzwierciedla idealnie rzeczywistej punktacji zgodności. Jest tak<br />

dlatego, że narysowane wykresy są w rzeczywistości histogramami z przedziałami co 10<br />

punktów. Wykres trafień zgodnych odzwierciedla częstość uzyskiwania określonej punktacji<br />

dla tożsamości „oryginalnej”. Analogicznie wykres trafień niezgodnych mówi o częstości<br />

uzyskiwania danej punktacji przez „intruza” (rozdział 2.5, rysunek 2.8).<br />

Opisywany test został przeprowadzony przez porównanie wszystkich 312 próbek<br />

wejściowych ze wszystkimi 52 wzorcami bazy danych. Podczas każdorazowego porównania<br />

wypisywano wynik punktowy uzyskany z komparatora cech. Aby rozdzielić biometryki<br />

„intruzów” od biometryk „oryginalnych” porównywano ID i próbki posegregowano na dwie<br />

grupy. W ostatnim kroku narysowano histogramy dla obu grup.<br />

Dzięki uzyskanym wykresom możliwe jest wyznaczenie optymalnej wartości progu<br />

przy której system będzie szybki bądź bezpieczny. Wykresy 4.15 i 4.16 przedstawiają<br />

częstości trafień zgodnych i niezgodnych dla ważonej metryki bezwzględnej w przypadku<br />

zastosowania dwóch próbek biometrycznych w jednym szablonie. Wykresy 4.17 i 4.18<br />

używają tej samej metryki lecz przy czterech próbkach w szablonie.<br />

59


Częstośd trafień<br />

Częstośd trafień<br />

Częstośd trafień<br />

4. Wyniki eksperymentów biometrycznych<br />

400<br />

350<br />

300<br />

250<br />

200<br />

150<br />

100<br />

50<br />

0<br />

0 200 400 600 800 1000<br />

Punktacja<br />

trafienia zgodne<br />

trafienia niezgodne<br />

Wykres 4.15. Częstość trafień zgodnych i niezgodnych w zależności od punktacji przy zastosowaniu ważonej<br />

metryki bezwzględnej. Na szablon biometryczny przypadają 2 próbki.<br />

50<br />

40<br />

30<br />

20<br />

10<br />

0<br />

0 50 100 150 200<br />

Punktacja<br />

trafienia zgodne<br />

trafienia niezgodne<br />

Wykres 4.16. Częstość trafień zgodnych i niezgodnych w zależności od punktacji przy zastosowaniu ważonej<br />

metryki bezwzględnej. Na szablon biometryczny przypadają 2 próbki. Powiększenie wykresu 4.15.<br />

900<br />

800<br />

700<br />

600<br />

500<br />

400<br />

300<br />

200<br />

100<br />

0<br />

0 200 400 600 800 1000<br />

Punktacja<br />

trafienia zgodne<br />

trafienia niezgodne<br />

Wykres 4.17. Częstość trafień zgodnych i niezgodnych w zależności od punktacji przy zastosowaniu ważonej<br />

metryki bezwzględnej. Na szablon biometryczny przypadają 4 próbki.<br />

60


Częstośd trafień<br />

4. Wyniki eksperymentów biometrycznych<br />

200<br />

150<br />

100<br />

50<br />

0<br />

0 20 40 60 80 100 120 140<br />

Punktacja<br />

trafienia zgodne<br />

trafienia niezgodne<br />

Wykres 4.18. Częstość trafień zgodnych i niezgodnych w zależności od punktacji przy zastosowaniu ważonej<br />

metryki bezwzględnej. Na szablon biometryczny przypadają 4 próbki. Powiększenie wykresu 4.17.<br />

Na wykresach widać, że trafienia zgodne mają swoje maksima blisko zera i nie<br />

pokrywają się z maksimami trafień niezgodnych, które są znacznie oddalone od zera.<br />

Uzyskiwane punktacje trafień zgodnych są też niższe od punktacji trafień niezgodnych (tabele<br />

4.2 i 4.3). To właśnie dzięki tym relacjom możliwe jest działanie zaproponowanego systemu<br />

geometrii dłoni (wykorzystującego punktację).<br />

Błędy biometryczne powstają w miejscach w których charakterystyka trafień<br />

zgodnych i charakterystyka trafień niezgodnych nachodzą na siebie. W zależności od<br />

ustawionego progu powstają błędy FR lub FA (rozdział 2.5). Ważne jest aby obie<br />

charakterystyki były jak najbardziej oddalone od siebie (maksima obu funkcji także powinny<br />

być od siebie oddalone).<br />

Wykresy 4.16 i 4.18 pokazują, że zależnie od stopnia nałożenia charakterystyk trafień<br />

zgodnych i trafień niezgodnych system będzie wymagał ustawienia progu decyzyjnego<br />

w różnych miejscach. Zależne jest to od tego czy kluczowe jest bezpieczeństwo czy szybkość<br />

działania. Przykładowe ustawienie progu dla ważonej metryki bezwzględnej w punkcie<br />

o wartości 26 (wykres 4.18) będzie skutkowało dużym bezpieczeństwem systemu przez<br />

spadek FAR do zera (wykres 4.13). Powstaną jednak dość liczne błędy FR (wykres 4.7),<br />

przez co zarejestrowanemu użytkownikowi trudniej będzie się dostać do systemu. Podczas<br />

eksperymentu dla progu o wartości 26, FR wyniosło 125. Ustawienie progu o wartości 50<br />

zminimalizuje błędy FR (13 błędów), wpływając automatycznie na wzrost błędów FA (113<br />

błędów).<br />

Podczas ustawiania progowej wartości decyzji należy wziąć pod uwagę to, że spadek<br />

FRR wiąże się ze wzrostem FAR. Wartość punktacji przy której oba błędy występują z taką<br />

61


4. Wyniki eksperymentów biometrycznych<br />

samą częstotliwością wyznacza punkt EER (Equal Error Rate). Jest to miejsce przecięcia się<br />

charakterystyki trafień zgodnych z charakterystyką trafień niezgodnych. Przykładowo, dla<br />

ważonej metryki bezwzględnej EER wynosi około 40, dla metryki bezwzględnej 74, dla<br />

metryki euklidesowej 23 a dla ważonej metryki euklidesowej około 13 (dane uzyskane<br />

podczas eksperymentu).<br />

Metryka euklidesowa podobnie jak metryka bezwzględna (co pokazano w rozdziałach<br />

4.1 i 4.2) w bardzo niewielkim stopniu zwiększa poprawność działania systemu przy wzroście<br />

liczby próbek w szablonie biometrycznym. Podobnie, wykresy trafień zgodnych<br />

i trafień niezgodnych dla tych metryk niewiele się zmieniają przy wzroście próbek. Dopiero<br />

zastosowanie ważonych metryk znacząco zmieniło uzyskane kształty wykresów. Jako<br />

przykład wyrysowano trafienia poprawne dla ważonej metryki bezwzględnej przy zmianie<br />

liczby próbek w szablonie (wykres 4.19).<br />

Tabela 4.2. Charakterystyka trafień zgodnych uzyskana z wykorzystaniem ważonej metryki bezwzględnej przy<br />

zmianie liczby próbek w szablonie biometrycznym. Wykresy numer 4.17 i 4.18 są dla 4 próbek we wzorcu,<br />

natomiast wykresy 4.15 i 4.16 dla 2 próbek.<br />

Liczba próbek<br />

Punktacje zgodności<br />

we wzorcu<br />

min.<br />

punktacja<br />

max.<br />

punktacja<br />

zakres punktacji<br />

(max - min)<br />

2 17,23 1280,35 1263,13<br />

3 12,99 367,99 355,00<br />

4 11,06 170,21 159,15<br />

Tabela 4.3. Charakterystyka punktacji niezgodności uzyskana z wykorzystaniem ważonej metryki bezwzględnej<br />

przy zmianie liczby próbek w szablonie biometrycznym. Wykresy numer 4.17 i 4.18 są dla 4 próbek we wzorcu,<br />

natomiast wykresy 4.15 i 4.16 dla 2 próbek.<br />

Liczba próbek<br />

Punktacje niezgodności<br />

we wzorcu<br />

min.<br />

punktacja<br />

max.<br />

punktacja<br />

zakres punktacji<br />

(max - min)<br />

2 51,68 9160,27 9108,59<br />

3 35,38 9673,26 9637,88<br />

4 29,65 1179,72 1150,07<br />

62


Częstośd trafień<br />

4. Wyniki eksperymentów biometrycznych<br />

140<br />

120<br />

100<br />

80<br />

60<br />

40<br />

20<br />

0<br />

0 20 40 60 80 100 120 140<br />

Punktacja<br />

trafienia zgodne (2 próbki w szablonie)<br />

trafienia zgodne (4 próbki w szablonie)<br />

trafienia niezgodne (2 próbki w szablonie)<br />

trafienia niezgodne (4 próbki w szablonie)<br />

Wykres 4.19. Trafienia zgodne i trafienia niezgodne w zależności od punktacji dla 4 biometryk w szablonie<br />

(kolor czerwony) i dla 2 biometryk w szablonie (kolor niebieski) w przypadku użycia ważonej metryki<br />

bezwzględnej. Powiększenie i nałożenie wykresów 4.15 i 4.17.<br />

Na wykresie 4.19 widać, że wraz ze wzrostem liczby biometryk przypadających na<br />

wzorzec biometryczny wykresy trafień zgodnych i wykresy trafień niezgodnych znacząco<br />

oddalają się od siebie. Nadal oba rozkłady prawdopodobieństwa pokrywają się w pewnym<br />

stopniu, jednak obszar wspólny obu wykresów jest dużo mniejszy. Co więcej, uzyskane<br />

wykresy stały się węższe (tabele 4.2 i 4.3). Spada zarówno liczba błędów FA jak i FR. Jest to<br />

pożądany efekt optymalizujący działanie systemu.<br />

63


5. Podsumowanie<br />

5. PODSUMOWANIE I WNIOSKI<br />

Przedstawiona praca pokazuje, że możliwe jest własnoręczne zaprojektowanie<br />

i zbudowanie kompletnego systemu działającego w oparciu o geometrię dłoni. Stworzony<br />

system nie wymagał dużych nakładów finansowych ani specjalistycznych urządzeń<br />

wykorzystanych podczas budowy. Wymagana jest jednak pewna specjalistyczna wiedza na<br />

temat zagadnień biometrycznych, bez której uzyskiwane wyniki byłyby gorsze i trudniejsze<br />

do przeanalizowania.<br />

Zadaniem postawionym w pracy było napisanie oprogramowania identyfikującego<br />

cechy szczególne dłoni. Program rozszerzono o możliwość weryfikacji biometryczne<br />

i dodano trzy kolejne metryki odległościowe, jakimi może posługiwać się komparator cech.<br />

Stworzono graficzny interfejs użytkownika ułatwiający obsługę programu. W programie<br />

zaimplementowano prostą bazę danych umożliwiającą operacje na biometrykach.<br />

W początkowej fazie pisania oprogramowania korzystano z transformaty Hough.<br />

Napotkano spore trudności z jej skutecznym wykorzystaniem do celów ekstrakcji cech. Może<br />

ona jednak posłużyć podczas dalszych prac rozwojowych systemu bazującego na geometrii<br />

dłoni.<br />

Praca nie zakładała budowy całego systemu geometrii dłoni. Jednak w późniejszym<br />

etapie działań zbudowano stolik biometryczny pozwalający zbierać biometryki dłoni. Dzięki<br />

takiemu posunięciu stało się możliwe własnoręczne zebranie bazy danych próbek zdjęć dłoni.<br />

Zbudowano bazę składającą się z 520 zdjęć, po 10 zdjęć od każdej z 52 osób. Na podstawie<br />

zebranej bazy biometryk przeprowadzono eksperymenty biometryczne. Podczas budowy bazy<br />

powstało wiele trudności, jak chociażby problem z odpowiednim naświetleniem podczas<br />

pobierania próbek (rozdział 3.3).<br />

Wyniki uzyskane podczas procesu identyfikacji biometrycznej, opisane szczegółowo<br />

w rozdziale 4.1, przerosły oczekiwania. Udało się uzyskać poprawną identyfikację<br />

biometryczną, dla 312 biometryk wejściowych, na poziomie powyżej 90%. Najwyższym<br />

otrzymanym wynikiem było 97,44%. Co więcej, podczas tego procesu zauważono różnice<br />

w wynikach przy wykorzystaniu różnych czterech metryk odległościowych. Zależnie od<br />

liczby próbek w jednym szablonie biometrycznym, różne metryki wykazywały różne wyniki<br />

poprawnych porównań.<br />

W testach weryfikacji biometrycznej z rozdziału 4.2 pokazano wpływ błędów FA i FR<br />

na poprawność działania systemu. Udowodniono, że nie możliwe jest jednoczesne<br />

zapewnienie dużego bezpieczeństwa przy zadowalającym poziomie szybkości działania<br />

64


5. Podsumowanie<br />

systemu. Wskazano, w jaki sposób uzyskane wyniki weryfikacji biometrycznej zmieniają się,<br />

wraz ze wzrostem liczby próbek w szablonie, dla różnych metryk odległości. Udało się, przy<br />

zastosowaniu ważonych metryk odległości (euklidesowej i bezwzględnej), zmniejszyć<br />

wspólny obszar krzywych FAR i FRR. Poprawiło to jednocześnie szybkość systemu i jego<br />

bezpieczeństwo.<br />

Podczas testu porównano wszystkie biometryki ze wszystkimi szablonami w bazie<br />

danych biometrycznych, przez co uzyskane wykresy poprawnych akceptacji i FRR są<br />

symetryczne (podobnie jak wykresy poprawnych odrzuceń i FAR). Nie odzwierciedla to<br />

pracy systemu w normalnych warunkach przy nieznanej liczbie różnych użytkowników.<br />

Podczas testu wyszukiwania optymalnej wartości progowej narysowano histogramy<br />

częstości trafień (wyników porównania z komparatora cech) w zależności od punktacji.<br />

Rezultaty podzielono na trafienia zgodne i trafienia niezgodne. Pokazano, że wykresy trafień<br />

zgodnych i wykresy trafień niezgodnych nachodzą na siebie powodując błędy. Ważne jest<br />

poprawne ustawienie wartości progowej w celu zwiększenia bezpieczeństwa lub szybkości.<br />

Stopień nałożenia uzyskanych wykresów rzutuje na wyniki identyfikacji biometrycznej<br />

i weryfikacji biometrycznej.<br />

Zbudowany własnoręcznie stolik biometryczny, wykorzystywany podczas<br />

eksperymentów, przekazuje na własność Politechnice Poznańskiej.<br />

65


6. Bibliografia<br />

BIBLIOGRAFIA<br />

[1] Bolle R.M., Connell J.H., Pankanti S., Ratha N.K., Senior A.W., Biometria,<br />

Wydawnictwo Naukowo-Techniczne, Warszawa 2008<br />

[2] Ernst R.H., Hand ID system, US Patent No. 3,576,537. 1971<br />

[3] Jacoby I.H., Giordano A.J., Fioretti W.H., Personal Identfication Apparatus, US<br />

Patent No. 3,648,240. 1972<br />

[4] Jain A.K., Ross A., Pankanti S., A prototype hand geometry-based verification system,<br />

2nd Internationel Conference on Audio- and Video-based Biometric Person<br />

Authentication (AVBPA), Washington 1999<br />

[5] Kӧpf-Maier P., Atlas anatomii człowieka, Wydawnictwo Lekarskie PZWL, Warszawa<br />

2002<br />

[6] Marecki B., Anatomia funkcjonalna w zakresie studiów wychowania fizycznego i<br />

fizjoterapii, AWF, Poznań 2004<br />

[7] Miller R.P., Finger dimension comparison identification system, US Patent No.<br />

3,576,538<br />

[8] Nanavati S., Thieme M., Nanavati R., Biometrics Identity Verification in a Networked<br />

World: A Wiley Tech Brief, John Wiley & Sons, Inc., USA 2002<br />

[9] Pitas I., Digital image processing algorithms and applications, John Wiley & Sons,<br />

Inc., NY, USA 2000<br />

[10] Sidlauskas D.P., 3D hand profile identyfication apparatus. US Patent No. 4,736,203.<br />

1988<br />

[11] Waymam J., Jain A., Davide M., Maio D., Biometric Systems, Springer, UK 2005<br />

[12] Wechsler H., Reliable Fae Recognition Methods, Springer, USA 2007<br />

[13] Zunkel R.L., Hand geometry based verification, Recognition Systems Inc., Campbell,<br />

USA<br />

[14] http://www.biometricfuture.com/index.php<br />

[15] http://www.bobpowell.net/lockingbits.htm<br />

[16] http://www.multimedia.edu.pl/mmLab/MultimediaPL/mm_1_4.htm<br />

[17] http://www.rob.cs.tu-bs.de/content/04-teaching/06-interactive/HNF.html<br />

66

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!