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ł ...
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