1
WYDZIAŁ ELEKTROTECHNIKI, AUTOMATYKI,
INFORMATYKI I INŻYNIERII BIOMEDYCZNEJ
Praca dyplomowa inżynierska
Biometryczny system weryfikacji tożsamości na podstawie zdjęcia
dłoni
Biometric identity verification based on human's palm image
Autor: Paulina Zasada
Kierunek studiów: Inżynieria Biomedyczna
Opiekun pracy: dr inż. Jakub Gałka
Kraków, 2014
2
Oświadczam, świadoma odpowiedzialności karnej za poświadczenie nieprawdy, że
niniejszą pracę dyplomową wykonałam osobiście i samodzielnie i że nie korzystałam ze
źródeł innych niż wymienione w pracy.
3
Spis treści
1. Wstęp 5
2. Biometria i rodzaje systemów biometrycznych 7
2.1 Bezpieczeństwo systemów opartych na technikach biometrycznych 7
2.2 Rodzaje systemów biometrycznych 10
3. Wymagania systemowe i oprogramowanie użyte do stworzenia aplikacji
analizującej i pozyskującej obraz 13
3.1 Cel stworzenia aplikacji 13
3.2 System android 13
3.3 Testowanie aplikacji 17
4. Algorytm działania systemu weryfikacji tożsamości na podstawie zdjęcia dłoni 19
4.1 Ogólny schemat algorytmu 19
4.2 Pobranie próbki 19
4.3 Analiza zdjęcia 20
4.4 Wyznaczanie współczynników potrzebnych do procesu weryfikacji użytkownika 31
4.5 Działanie modułu porównującego 32
4.6 Potencjalne zastosowanie systemu 33
5. Istniejące rozwiązania 35
6. Podsumowanie i Wnioski 39
Bibliografia i załączniki 41
Literatura 41
Prace naukowe 41
Źródła internetowe 42
Załączniki 42
4
5
1. Wstęp
W dzisiejszych czasach coraz większe znaczenie zyskują zagadnienia bezpieczeństwa
danych oraz ochrony mienia. Co za tym idzie, są również głównym obszarem zainteresowania
firm informatycznych oraz kryptograficznych na całym świecie. Niezależni twórcy
oprogramowania i sprzętu prześcigają się w projektowaniu i wprowadzaniu na rynek coraz to
bardziej skomplikowanych i niezawodnych systemów zabezpieczających, zawierających
wymagające obliczeniowo algorytmy czy też wykorzystujących zaawansowaną technologię.
Niezależnie jednak od stopnia zaawansowania systemu kryptograficznego, oraz od wagi
przykładanej do ochrony hasła, zawsze istnieje prawdopodobieństwo złamania zabezpieczeń
czy też przechwycenia hasła użytkownika przez osoby trzecie. Wszystkie systemy ochrony
danych dążą do ustalenia ze 100-procentowym prawdopodobieństwem tożsamości osoby
logującej się do systemu lub próbującej wejść do chronionego pomieszczenia.
Rozwiązaniem tego problemu może być prężnie rozwijający się dział kryptografii
jakim jest biometria. Systemy oparte na odczytywaniu i porównywaniu cech osobniczych
niezmiennych w czasie i jednocześnie unikalnych, takich jak linie papilarne czy wzór
tęczówki oka, stają się coraz bardziej popularną metodą zabezpieczania danych i dóbr
materialnych. Do ich licznych zalet można zaliczyć np. blisko zerowe prawdopodobieństwo
zgubienia lub zapomnienia hasła, jakim jest jedna z cech biologicznych lub anatomicznych
naszego organizmu, czy też zupełna unikalność danej cechy. Początki ustalania tożsamości
na podstawie cech biometrycznych sięgają jeszcze analogowych metod pobierania odcisków
palców osób podejrzanych o przestępstwa.
Celem pracy jest stworzenie systemu biometrycznego, opierającego się na analizie
cech geometrycznych dłoni, uzyskanych na podstawie jej zdjęcia. Założeniem koncepcyjnym
pracy jest, aby system ten był zaprojektowany w sposób umożliwiający wykorzystanie go
jako aplikacji mobilnej, pozwalającej na rozpoznanie tożsamości w dowolnym miejscu i
czasie.
6
7
2. Biometria i rodzaje systemów biometrycznych
Z podstawowej definicji biometria oznacza badania i ocenę zmienności badanych cech
w danej populacji. Chodzi tutaj zarówno o cechy biologiczne ludzi jak i roślin
(wykorzystywane np. w rolnictwie). Jednak w nowoczesnym ujęciu biometria oznacza
akwizycję, analizę oraz weryfikację lub identyfikację tożsamości badanej osoby na podstawie
cech biologicznych lub fizjologicznych. Wpływ na wzrost popularności tego drugiego
znaczenia miał szybki rozwój urządzeń rejestrujących sygnały biologiczne takich jak aparaty
fotograficzne, czytniki odcisków palców, urządzenia rejestrujące dźwięk czy też np.
dynamikę podpisu oraz znaczny wzrost mocy obliczeniowej komputerów i urządzeń
odpowiedzialnych za analizę i obróbkę pobranych sygnałów. Duże znaczenie w popularyzacji
biometrycznych metod weryfikacji tożsamości miał również fakt, że metody te mają znaczącą
przewagę w kwestii wygody i bezpieczeństwa chronionych przez nie danych.
Przykładowo, jeśli wybrano odpowiednio unikalną cechę fizjologiczną lub biologiczną
oraz obrano odpowiednio wysoki próg dyskryminacji, to istnieje bardzo małe
prawdopodobieństwo, że cecha ta zostanie powtórzona u innego osobnika, i poufne dane, lub
dostęp do konta bankowego dostanie się w niepowołane ręce.
Kolejną wielką zaletą systemów biometrycznej weryfikacji tożsamości, jest fakt, że
„klucz dostępu” do systemu jest zawsze obecny przy użytkowniku. Owszem, istnieje
prawdopodobieństwo nagłej zmiany lub utraty cechy wykorzystywanej w systemie, ale jest
nieporównywalnie mniejsze niż np. zgubienie hasła do logowania, albo klucza do drzwi. Jeśli
pominiemy w analizie takie wypadki losowe jak utrata kończyny lub palca, czy też
uszkodzenie strun głosowych, możemy być pewni dobrze zabezpieczonych danych.
W ramach pracy stworzono aplikację do pozyskiwania i analizy obrazu dłoni, oraz
autorski projekt systemu weryfikacji tożsamości na podstawie uzyskanych zdjęć.
2.1 Bezpieczeństwo systemów opartych na technikach biometrycznych
Jakość systemu biometrycznego nierozerwalnie wiąże się z jego efektywnością. W
literaturze dotyczącej zagadnienia systemów biometrycznych wyróżniono szereg błędów
które mają duży wpływ na pogorszenie efektywności takiego systemu, a co za tym idzie na
zmniejszenie bezpieczeństwa użytkowania go. Błędy te zostały przedstawione na Rysunku 1
Rysunek 1 Podział błędów systemów biometrycznych [rysunek własny]
8
W ocenie bezpieczeństwa systemu opartego na technikach biometrycznych używa się
najczęściej trzech wskaźników. Wskaźniki te sugerują potencjalnemu użytkownikowi o
poziomie zabezpieczenia danych chronionych za pomocą badanej cechy biologicznej. Są to:
Współczynnik Fałszywego Dopasowania (False Match Rate – FMR)
Należy do grupy błędów dopasowania. Wskaźnik ten definiuje się jako oczekiwane
prawdopodobieństwo, że pobrana próbka będzie fałszywie dopasowana do wzorca
znajdującego się w bazie, ale nie będącego wzorcem badanego użytkownika. Jeżeli wskaźnik
jest wysoki, oznacza to, że jest ryzyko, że osoba niepowołana zostanie rozpoznana jako
użytkownik systemu i uzyska dostęp do chronionych na jego koncie danych.
Odpowiednikiem tego wskaźnika z grupy błędów decyzji jest Współczynnik
Fałszywego Odrzucenia (False Reject Rate – FRR). Od poprzednio opisywanego różni się
tym, że wskaźnik FMR dotyczy pojedynczego dopasowania a FRR dotyczy transakcji, które
mogą pociągać za sobą jedną lub też więcej prób dopasowania próbki do wzorca. Błąd FRR
jest określany w literaturze jako błąd I rodzaju.
Współczynnik Fałszywego Niedopasowania (False Non Match Rate – FNMR)
Jest to współczynnik który określa prawdopodobieństwo , że pobrana próbka nie
zostanie dopasowana do wzorca w bazie, należącego do użytkownika od którego próbka
została pobrana. W systemach 1:1 (porównanie próbki z konkretnym wzorcem) wskaźnik
oznacza, że próbka nie została zidentyfikowana z konkretnym wzorcem, natomiast w
systemach 1:N (porównywanie próbki w bazą wzorców i wybór pasującego wzorca z bazy)
wskaźnik określa prawdopodobieństwo którym dany wzorzec nie zostanie odnaleziony w
bazie.
Analogicznie do poprzedniego rodzaju błędów, z grupy błędów decyzji, wskaźnikowi
FNMR odpowiada Współczynnik Fałszywej Akceptacji (False Accept Rate – FAR). Różnica
pomiędzy nim a FNMR jest taka sama jak pomiędzy FRR a FMR.
Opisane współczynniki, zarówno z grupy błędów decyzji jak i dopasowania, zależą
przede wszystkim od ustawienia czułości progu systemu biometrycznego. W literaturze
zależności zmian współczynników od czułości progu przedstawia się na wykresie.
Przykładowy wykres takiej zależności:
wykres 1 Zależność zmian współczynników czułości od czułości progu systemu biometrycznego [8]
9
Wartość błędu zrównoważonego
W grupie błędów decyzji definiuje się jeszcze jeden współczynnik. Jest to Wartość
Błędu Zrównoważonego (Equal Error Rate – EER). Definiuje się go jako punkt przecięcia się
charakterystyk FAR i FRR na wykresie zależności tych błędów od progu czułości (t).
Współczynnik ten wskazuje na optymalny próg czułości przy którym ta sama liczba osób
jest błędnie odrzucona jak i błędnie zaakceptowana. Współczynnik ten jest wykorzystywany
do porównywania i oceny urządzeń w systemach biometrycznych. Im niższa wartość błędu
zrównoważonego tym lepiej ocenione zostaje urządzenie.
Parametry FMR oraz FNMR mogą być także przedstawione za pomocą charakterystyk:
Krzywej ROC (Receiver Operating Characteristic)
Krzywa ta przedstawia zależność FNMR od FMR. Można za jej pomocą przedstawić
dokładność systemu
Krzywej DET (Detection Error Trade-off )
Przedstawia współczynniki błędów na obu osiach, najczęściej w skali logarytmicznej. Krzywą
tą wykreśla się zarówno dla błędów dopasowania jak i decyzji.
Kolejną grupą błędów są błędy akwizycji. Wynikają z reguły z dwóch podstawowych
przyczyn. Po pierwsze, z braku możliwości pobrania odpowiedniej próbki sygnału
biologicznego. Błąd taki nosi nazwę Niepowodzenia Rejestracji (Failure to Enrollment Rate -
FTE). Może być spowodowany różnymi czynnikami, np. :
nie do końca sprawnym sprzętem rejestrującym,
niedogodnymi warunkami otoczenia uniemożliwiającymi przeprowadzenie pobrania
próbki o odpowiedniej jakości
Niewystarczającym wyeksponowaniem badanej cechy
Małą unikalnością i dużą powtarzalnością badanej cechy wśród społeczeństwa
Drugi częsty błąd nosi nazwę Niepowodzenia Pobrania Próbki (Failure to Acquire Rate -
FTA). Parametr ten zależy między innymi od progu czułości systemu biometrycznego.
Informuje on o odsetku transakcji w których system nie był w stanie pobrać lub
wyekstrahować cech odpowiednich do weryfikacji lub identyfikacji próbki.
Najważniejszym parametrem zaliczającym się do ostatniej, niezdefiniowanej grupy,
jest złożoność czasowa systemu biometrycznego. Jest to szczególnie ważne jeśli chodzi o
sposób użytkowania takiego systemu. W rozwiązaniach komercyjnych równie ważne co
dokładność , jest czas.
Według autorki pracy, wartym wspomnienia parametrem jest również łatwość
pobrania próbki. Ze względu na przeznaczenie systemu do weryfikacji tożsamości na
podstawie zdjęcia dłoni w urządzeniach mobilnych, ważne jest, aby zebranie danych nie
sprawiało wielkich trudności, oraz zajmowało niewielką ilość czasu i pamięci, w przeciwnym
razie tworzenie takiej aplikacji do celów użytkowych codziennego użytku mija się z celem.
10
2.2 Rodzaje systemów biometrycznych
Systemy biometryczne dzielą się ze względu na cel systemu:
Rysunek 2 Podział systemów biometrycznych [rysunek własny]
W niniejszej pracy skupiono się na metodzie weryfikacji tożsamości, lecz podjęto ten
temat w nowym ujęciu. W pracy został przedstawiony algorytm służący do rozpoznawania
tożsamości za pomocą zdjęcia dłoni (do implementacji jako aplikacja na urządzenia mobilne).
Jest to cel codziennego użytku, więc skupiono się bardziej na wygodzie użytkowania oraz na
prostocie aplikacji niż na zaawansowanym, wymagającym dużej mocy obliczeniowej
algorytmie systemu.
Kolejnym czynnikiem pod względem którego dokonuje się podziałów systemów
biometrycznych jest podział na systemy klasy on-line i off-line. Systemy on-line
charakteryzują się połączeniem z siecią niezbędną do przeprowadzenia weryfikacji czy też
identyfikacji. Najczęściej w tej klasie systemów baza wzorców jest umieszczona w bazie
danych na zewnętrznym serwerze. Przykładem takiego systemu może być system bazy
policyjnej , wykorzystujący odciski palców.
Z kolei w systemie off-line nie ma potrzeby tworzenia bezpośredniego połączenia z
Internetem. Baza danych , jak i algorytm sprawdzający tożsamość jest dostępny z poziomu
urządzenia przeprowadzającego weryfikację czy też identyfikację. Dobrym przykładem
takiego systemu jest program pozwalający na skorzystanie z komputera osobistego, lecz
dopiero po zrobieniu użytkownikowi zdjęcia twarzy i rozpoznaniu go jako jednej z osób
uprawnionych do korzystania z urządzenia (np. Lenovo Veriface). System stworzony na
potrzeby niniejszej pracy inżynierskiej to system typu off-line, wykorzystujący aparat
telefoniczny do zrobienia zdjęcia użytkownikowi, porównaniu go z wzorcem i odpowiednio
uzyskania lub odmowy dostępu.
11
Kolejną stosowaną klasyfikacją systemów biometrycznych jest podział ze względu na
przeznaczenie systemu. Rozróżnia się tutaj dwie grupy systemów.
System 1:1 (one –to-one)
Sprawdza, czy weryfikowana osoba jest tą, za którą się podaje.
System 1:N
Przeprowadza wybór pasującego wzorca do danej próbki.
System przedstawiony w pracy reprezentuje pierwszą kategorię. Badana próbka jest
porównywana z jednym wzorcem, dając negatywny, lub pozytywny wynik weryfikacji
tożsamości.
12
13
3. Wymagania systemowe i oprogramowanie użyte do
stworzenia aplikacji analizującej i pozyskującej obraz
3.1 Cel stworzenia aplikacji
Aplikacje stworzono dla potrzeb badania poszczególnych kroków analizy i
przetwarzania obrazu. Za jej pomocą możliwe było ustalenie odpowiednich wielkości progów
i sprawdzenie czy algorytm rozpoznawania dłoni na zdjęciu zdaje egzamin w różnych
warunkach. Poszczególne funkcje użyte w aplikacji opisane są w podrozdziale 4.3.
3.2 System android
Do stworzenia aplikacji wykorzystano system Android. Jest to platforma
wykorzystywana w urządzeniach mobilnych (telefonach komórkowych oraz tabletach).
Szybki rozwój rozwiązań technologii mobilnych wymusił stworzenie rozbudowanej, potężnej
platformy opartej na otwartym dostępie do kodu źródłowego. W odpowiedzi na tę potrzebę
stworzono platformę Android. Jedną z głównych zalet systemu jest to , że dostęp do niego ma
każdy, każdy również bez przeszkód może ją ulepszać i rozszerzać. Nie bez znaczenia jest
również , że system ten cieszy się uznaniem użytkowników, między innymi z powodu szeregu
funkcjonalności oraz przejrzystemu interfejsowi użytkownika. Android jednak to nie tylko
system operacyjny dedykowany na urządzenia mobilne. To także kompletny zestaw
oprogramowania oraz aplikacje. Dobrze sprawdza się również w kwestii przystosowania do
różnych rodzajów sprzętów.
Elementy platformy [3]
aplikacje
struktura aplikacji
biblioteki warstwy pośredniej
system operacyjny
pakiet SDK (Android Software Development Kit) i narzędzia programistyczne
Część aplikacji o otwartym dostępie do kodu źródłowego jest wbudowana w system
operacyjny i dostępna na każdym urządzeniu (między innymi wykorzystywana w pracy
Kamera, a także np. Muzyka, Telefon, Galeria). Inne aplikacje są dostępne za pomocą sklepu
internetowego.
Struktura (Framework) aplikacji zapewnia obsługę aplikacji. Składa się ze
zintegrowanej części pakietu SDK i interfejsów API. Umożliwia to wysokopoziomową
integrację z systemem . Struktura jest niezbędna w sytuacji kiedy aplikacja potrzebuje dostępu
do czujników, do sieci lub do telefonu.
14
Warstwa pośrednia obejmuje między innymi środowisko uruchomieniowe Dalvik
(wirtualną maszynę Androida) oraz biblioteki do obsługi niektórych aplikacji.
System operacyjny androida opiera się na systemie o otwartym dostępie do kodu
źródłowego - Linuksie. Jest to odgałęzienie głównej wersji linuksowego jądra jednak istnieją
pewne różnice pomiędzy standardowym systemem Linux używanym w komputerach, a tym
w urządzeniach mobilnych z platformą Android. System Android nie obejmuje przede
wszystkim licznych aplikacji dostępnych w dystrybucjach typu GNU/Linux opartych na
systemie okienkowym. Brak jest również standardowej biblioteki języka C. Zastąpiona
została niestandardową biblioteką dostosowaną do urządzeń mobilnych (Bionic).
Rysunek 3 Podstawowe komponenty platformy Android [3]
Do budowy aplikacji w systemie android niezbędne było specjalistyczne
oprogramowanie takie jak:
Java (JDK - Java Development Kit)
Zintegrowane środowisko programistyczne (IDE - Integrated Development
Environament) Eclipse dla programistów Javy
Pakiet SDK dla Androida
Wtyczka Eclipse ADT (Android Development Tool)
Pakiet NDK (Native Development Kit)
Do stworzenia aplikacji opisanej w pracy wybrano środowisko programistyczne
Eclipse między innymi ze względu na wygodny sposób programowania (kolorowanie składni,
sprawdzanie błędów w czasie rzeczywistym, uzupełnianie kodu i inne). Ponadto dzięki
15
zainstalowaniu wtyczki ADT Eclipse umożliwia tworzenie i uruchamianie aplikacji na
Android dzięki wbudowanemu modułowi do pracy z wirtualnymi urządzeniami z Androidem
(AVD – Android Virtual Device) oraz graficzne tworzenie interfejsu użytkownika
pozwalające na natychmiastową ocenę aplikacji pod kątem wizualnym. Nie bez znaczenia
również jest fakt, że zespół programistów pracujących nad rozwojem platformy Android
wybrał Eclipse jako główne wspierane środowisko do programowania na tę platformę.
Język Java wybrano ze względu na największą popularność w programowaniu w tym
języku na platformę Android przez programistów na całym świecie. Konsekwencją tego oraz
otwartego charakteru platformy jest duża liczba gotowych rozwiązań oraz materiałów
pomocniczych potrzebnych do stworzenia projektu.
Struktura aplikacji
Ważnym zagadnieniem w kwestii programowania na platformę Android jest struktura
aplikacji. Jest to w pewnym sensie określona hierarchia, która ustala porządek w plikach i
zasobach z których korzysta każda aplikacja. Jest to niezwykle pomocne dla programisty,
który dzięki temu ma możliwość rozmieszczenia różnych komponentów w ustalonych
miejscach. Taki system rozjaśnia treść kodu jak również daje możliwość kontynuacji lub
rozwoju istniejących programów bez borykania się z problemem mało przejrzystego kodu.
Rysunek 4 Struktura przykładowej aplikacji [zrzut z ekranu programu Eclipse]
Na Rysunku 4 przedstawiono przykładową architekturę aplikacji w systemie android. Jej
najważniejsze elementy składowe oznaczono cyframi arabskimi od 1 do 4 i opisano w tabeli
nr 1.
16
Tabela 1 Najważniejsze elementy składowe aplikacji [3]
Numer
elementu
nazwa opis
1 Kod źródłowy w Javie Znajduje się w katalogu najwyższego
poziomu. W pliku znajduje się kod źródłowy
tworzony i edytowany przez programistę
2 Katalog gen Umieszczony na tym samym, najwyższym
poziomie co kod źródłowy. Tutaj zapisują się
automatycznie wygenerowane pliki z kodem
źródłowym w tym plik R.java
3 Zasoby Zasoby to dołączone do projektu elementy ,
np. obrazy, muzyka, filmy czy zewnętrzne
łańcuchy znaków. Są umieszczone w katalogu
res. Obejmuje on podkatalogi określające typ
zasobu.
4 Manifest Plik konfiguracyjny projektu dla Androida.
Manifest aplikacji jest pierwszą rzeczą jaką wczytuje system operacyjny Androida po
uruchomieniu aplikacji. Określa on fragmenty kodu które powinny zostać uruchomione. W
manifeście są również określone uprawnienia aplikacji do korzystania z czujników oraz do
połączenia się aplikacji z Internetem czy też do wykonywania połączeń telefonicznych lub
wysyłania wiadomości.
Biblioteki użyte do budowy aplikacji
Do stworzenia aplikacji opisanej w pracy użyto szeregu wbudowanych bibliotek
Androida [4] takich jak:
-biblioteki graficzne (graphics)
-biblioteki do pracy z widokami (view)
-biblioteki obsługujące widgety (widget)
-biblioteki pozwalające na użycie kamery (Provider Mediastore)
Oprócz wbudowanych bibliotek androida użyto również biblioteki wejścia-wyjścia Javy [5]
(io, input- output)
Biblioteka OpenCV [13]
Kluczowym elementem analizy danych z uzyskanego obrazu jest biblioteka OpenCV.
Jest to biblioteka dedykowana do obróbki obrazu w czasie rzeczywistym. W projekcie jednak
użyto jej do obróbki i analizy po zrobieniu zdjęcia. Biblioteka opiera się na otwartym kodzie
i jest dostępna na wszystkie platformy (między innymi na wykorzystywany w projekcie
Android). Alternatywą dla biblioteki OpenCV jest komercyjna ale łatwiejsza w instalacji do
17
środowiska Eclipse JavaCV. Jednak ze względu na większe możliwości wybrano do
tworzenia projektu OpenCV.
3.3 Testowanie aplikacji
Rozważono dwie możliwości testowania aplikacji. Pierwsza to testy na generowanym
przez wtyczkę ADT urządzeniu wirtualnym, natomiast drugi to testy na prawdziwym
urządzeniu typu tablet. Wybrano opcję drugą ze względu na dużo szybszy czas załadowania
aplikacji z programu Eclipse na tablet niż na urządzenie wirtualne, a także ze względu na
niezbyt dobrą emulację kamery w urządzeniu wirtualnym. Ze względu na dostępność, wybór
padł na urządzenie Dell Streak 7. Urządzenie jest wyposażone w system operacyjny Android
w wersji 3.2 , kamerę tylnią o rozdzielczości 5 Mega pikseli, oraz przednią o rozdzielczości 3
Mega Piksela, wbudowany moduł do bezprzewodowego łączenia się z Internetem oraz
dotykowy ekran pojemnościowy o przekątnej 7 cali
Rysunek 5 Urządzenie użyte do testowania aplikacji [www.dell.com]
.
Największą zaletą systemu android jest jednak to, że program napisany na jedno
urządzenie będzie bez większych problemów działał także na innych markach i modelach
tabletów, a także, po uprzednich manipulacjach z rozmieszczeniem i proporcjami elementów
aplikacji, także na urządzeniach typu smartfon czy netbook.
18
19
4. Algorytm działania systemu weryfikacji tożsamości na
podstawie zdjęcia dłoni
4.1 Ogólny schemat algorytmu
Rysunek 6 Schemat poglądowy działania aplikacji [rysunek wlasny]
4.2 Pobranie próbki
Rysunek 7 Pobieranie próbki [zrzut z ekranu aplikacji]
Pobranie próbki biometrycznej dla potrzeb napisanej aplikacji odbyło się za pomocą
aparatu cyfrowego. Użytkownik po naciśnięciu przycisku „ZRÓB ZDJĘCIE” zostaje
przekierowany do wbudowanej w system android kamery. Następuje wykonanie zdjęcia
otwartej dłoni. Zdjęcie należy wykonać na równomiernym kolorystycznie tle, najlepiej o kilka
tonów ciemniejszym niż skóra. W bezpośrednim tle (łączącym się z dłonią) nie powinny
20
znaleźć się inne części odsłoniętego ciała, ze względu na poprawne działanie algorytmu. Po
zrobieniu zdjęcia zostaje ono zapisane w systemie jako bitmapa. Zdjęcie jest kolorowe ( w
systemie barwnym RGB). Rozdzielczość zdjęcia pełni w aplikacji drugorzędną rolę, ważne
jest tylko aby nie zmieniać ustawień jakości przy procedurze rejestracji użytkownika i
pomiędzy logowaniami (Jakość zdjęcia pobranego do rejestracji jak i tego do logowania
powinna być zbliżona w celu poprawnego działania algorytmu).
Rysunek 8 Interfejs użytkownika wraz ze zrobionym zdjęciem [zrzut z ekranu aplikacji]
Zbadanie kolejnych kroków analizy zdjęcia było możliwe poprzez utworzenie
przycisku „WYNIK ANALIZY” dzięki któremu, możliwe jest zaprezentowanie graficzne
kolejnych kroków tego procesu w pracy. Wersja programu z tym przyciskiem jest wersją
testową.
4.3 Analiza zdjęcia
Na Rysunku 9 przedstawiono uogólniony algorytm analizy obrazu. Jest to algorytm
typu kaskadowego, gdzie kolejne kroki następują po sobie a kolejne procedury są
wykonywane na obrazie, który został przetworzony w poprzednim etapie algorytmu. Dzięki
wykorzystaniu biblioteki graficznej [5] i OpenCV [13] było możliwe wykonywanie zarówno
przekształceń morfologicznych jak i strukturalnych na obrazie. Podczas studiów
literaturowych [1][2] oraz poszukiwań podobnych istniejących już rozwiązań wypracowano
własną metodę przetworzenia obrazu i skutecznej ekstrakcji cech biometrycznych zdjęcia
dłoni. Wzięto pod uwagę błędy wynikające z obecności artefaktów na obrazie.. Dla lepszego
działania aplikacji zaleca się nie korzystanie z lampy błyskowej podczas pobierania próbki,
ponieważ mogłoby to spowodować nieprzewidziane konsekwencje w działaniu niektórych
części algorytmu.
Przycisk „WYNIK ANALIZY” pozwala na prześledzenie procesu analizy zdjęcia krok
po kroku. Dzięki temu możliwe jest doskonalenie algorytmu poprzez manipulacje
21
poszczególnymi wartościami progów i zmianę niektórych funkcji na inne, lepiej sprawdzające
się w tym zadaniu.
Rysunek 9 Algorytm analizy zdjęcia [rysunek własny]
Konwersja danych
Dane uzyskane z kamery przedstawione są w formacie bmp (bitmapa). Bitmapa jest
formatem plików zawierających grafikę rastrową czyli inaczej mówiąc mapa pikseli,
zawierająca informację o kolorze każdego z nich.
W funkcjach których użyto w algorytmie, wymagany jest jednak inny format danych
wejściowych, a mianowicie format Mat(). Pochodzi z biblioteki OpenCV i jest to forma
macierzowa, zawierająca określone wartości, w tym przypadku informacje o kolorze piksela.
Jej przewaga nad zwykłą macierzą lub tablicą jest taka, że nie ma potrzeby manualnego
zwalniania pamięci po użyciu obiektu tej klasy. Ze względu na to, że użyte za pomocą
biblioteki OpenCV algorytmy przetwarzania obrazu są wymagające obliczeniowo, klasa
Mat() staje się najlepszym wyborem jeśli chodzi o reprezentacje danych graficznych.
Zmniejsza to niepotrzebne zużycie pamięci poprzez brak tworzenia niepotrzebnych kopii (czy
też po stworzeniu obiektu -nie zwolnienia pamięci). Do konwersji danych użyto funkcji z
biblioteki OpenCV o nazwie bitmapToMat i przyjmującą argumenty takie jak bitmapa i
stworzona wcześniej macierz.
22
Zmiana przestrzeni barw
Macierz wejściowa do tego modułu jest przedstawiona w przestrzeni barw RGB. Jest
to standardowa reprezentacja obrazu z kamery o domyślnych ustawieniach.
Zapis koloru jako RGB stosuje się w paletach barw w plikach graficznych. Najczęściej
stosowany jest 24-bitowy zapis kolorów (po 8 bitów na każdą z barw składowych), barwy te
mieszczą się w zakresie od 0 do 255. Kiedy wartość wszystkich trzech składowych równa się
0, wtedy piksel ma kolor czarny, natomiast kiedy wszystkie składowe są ustawione na
maksimum, czyli 255, daje to w konsekwencji kolor biały. Nazwa przestrzeni barwnej
powstała od angielskich nazw kolorów (Red – czerwony, Green-zielony i Blue –niebieski). Z
połączenia tych trzech składowych można uzyskać szeroką gamę barw widzialnych dla
ludzkiego oka.
Do działania algorytmu wykorzystano przekształcenie z przestrzeni barw RGB do
skali szarości. Operacja miała na celu ulepszenie efektu późniejszej binaryzacji. Efekt
operacji widoczny jest na Rysunku 10
Rysunek 10 Efekt operacji zmiany przestrzeni barw [zrzut z ekranu aplikacji]
Operacji zmiany przestrzeni barw dokonano za pomocą zbudowanej w OpenCV
funkcji cvtColor przyjmującej w argumentach macierz wejściową, macierz wyjściową oraz
argument będący makrem, opisujący rodzaj operacji jaki wykonujemy. W tym wypadku było
to COLOR_RGB2GRAY.
Istnieje również drugi algorytm który jest stosowany w aplikacjach bazujących na
wykrywaniu skóry (np. aplikacje do weryfikacji za pomocą zdjęcia twarzy). Jest trochę
bardziej skomplikowany, ale przy jego stosowaniu można pominąć wpływ oświetlenia oraz
jasnego tła zdjęcia. Algorytm bazuje na przekształceniu przestrzeni barw RGB do HSV ( ang.
Hue – barwa, Saturation – nasycenie, Value – wartość). Po tej konwersji następuje
wyodrębnienie kanału Hue oraz Saturation z danych obrazu co pozwala na pominięcie
efektów różnego oświetlenia. Następnie ustala się progi pomiędzy którymi waha się
przewidywany kolor skóry dla poszczególnych kanałów. Przetestowano jednak tę metodę i
stwierdzono, że nie jest bardziej niezawodna niż ta zastosowana w aplikacji.
23
Binaryzacja z zadanym progiem
W następnym etapie dokonano binaryzacji uzyskanego w poprzednim module
obiektu.
Binaryzacja obrazu jest operacją przeprowadzaną na obrazach w skali szarości lub o
jednym kanale barwnym. Wynikiem jest inny obraz, którego wszystkie piksele przyjmują
odpowiednio jedną z dwóch wartości (najczęściej w przypadku obrazów jest to czerń i biel).
Wartości te ustalane są za pomocą ustawionego wcześniej progu. Wartości pikseli oraz
sposób progowania zależą od sposobu binaryzacji. W bibliotece OpenCV wyróżniono 5
takich sposobów. Dla wyjaśnienia na jakiej zasadzie działa sposób użyty w aplikacji,
przedstawiono wykresy wartości (oś y) poszczególnych pikseli (oś x). Dla potrzeb algorytmu
najlepszym wyjściem było użycie zwykłej binaryzacji czyli progowania binarnego.
Wszystkim pikselom, które na obrazie wejściowym miały wartość przekraczającą
wartość progu, przypisano wartość maksymalną, np. 255 , natomiast wszystkim pozostałym
wartość 0. Zależność tą można opisać za pomocą wzoru:
Rysunek 11 Graficzna interpretacja binaryzacji [13]
Progowanie takie wykorzystano podczas tworzenia algorytmu, ponieważ dostarczało
dobrej jakości danych oraz ułatwiało pracę z obrazem w kolejnych etapach. Wartości progów
zostały dobrane eksperymentalnie, za pomocą prób i błędów.
Uzyskanie takiego efektu osiągnięto poprzez użycie funkcji threshold, która w
argumentach przyjmuje macierz wejściową, macierz wyjściową, próg binaryzacji i
maksymalną wartość (w zakresie od 0 do 255), oraz makro z biblioteki OpenCV określające
jaki sposób progowania ma zostać użyty. W tym przypadku jest to THRESH_BINARY.
Inne sposoby binaryzacji oferowane przez OpenCV to:
Progowanie binarne odwrotne (Threshold Binary, Inverted)
24
Ten rodzaj jest bardzo podobny do progowania binarnego, jednak z tą różnicą, że
kiedy piksel obrazu wejściowego osiągnie wartość większą od zadanego progu to
przypisuje mu się zero na obrazie wynikowym, a w innym przypadku określoną
wartość maksymalną.
Binaryzacja ścinająca wierzchołki (Truncate)
W tym przypadku podczas przekroczenia przez piksel progu binaryzacji, na obrazie
wynikowym przypisywana jest mu wartość samego progu, w innym wypadku 0. W
tej metodzie nie ma więc osobnych wartości maksymalnej i progu lecz jedna i druga
stanowią tę samą wartość. Na wykresie daje to efekt ścięcia wierzchołków wartości
obrazu wejściowego do poziomu progu.
Progowanie do zera (Threshold to Zero)
Dla piksela o wartości większej niż próg funkcja zostawia wartość źródłową,
natomiast dla wartości mniejszej niż próg, przypisuje 0 na obrazie wynikowym.
Odwrócone progowanie do zera (Threshold to Zero, Inverted)
Funkcja działa podobnie do poprzedniej, jednak dla wartości wejściowych poniżej
progu przypisuje wartości źródłowe, natomiast wszystkim innym 0.
Rysunek 12 Obraz po operacji binaryzacji [zrzut z ekranu aplikacji]
Znalezienie konturów obiektów
W algorytmie została użyta funkcja dostarczona przez bibliotekę OpenCV, która
znajduje kontury obiektów na obrazie, numeruje je, a następnie magazynuje w liście macierzy
punktów. Każdy kontur to pojedyncza pozycja w liście. Każda pozycja to zbiór punktów
przedstawiających współrzędne punktu konturu. Funkcja ta odzyskuje informację o konturze
na obrazie binarnym przy użyciu algorytmu ekstrahującego i wyodrębniającego kontury z
obrazu (Suzuki, 85). Algorytm działa głównie na bazie przekształceń morfologicznych np.
połączenia erozji i dylatacji obrazu.
Rysunek 13 Obraz po operacji wyodrębniania konturów [zrzut z ekranu aplikacji]
25
Narysowanie konturów było możliwe dzięki funkcji drawContour. Funkcja ta w argumentach
przyjmuje obraz wejściowy na którym zostaną narysowane kontury, listę macierzy punktów
zwierającą wszystkie kontury, parametr określający który kontur narysować (jeśli jest
ujemny, wszystkie kontury zostaną narysowane), skalar określający kolor konturu oraz
grubość linii konturu (liczba całkowita).
Jak widać , wyświetlone zostały wszystkie kontury obecne na obrazie. Nie jest to
dobry efekt, ponieważ obecność innych obiektów przeszkodzi w analizie jedynego
interesującego nas obiektu jakim jest ręka.
Wyznaczenie największego konturu
Niedogodność jaką jest obecność innych konturów na obrazie można łatwo
wyeliminować. W tym celu wystarczy zastosować algorytm wyszukiwania największej
wartości ( w tym przypadku największego pola pod konturem). Aby to osiągnąć zastosowano
funkcję ContourArea, która w argumentach przyjmowała pojedynczy kontur z listy konturów.
Rysunek 14 Algorytm wyboru największego konturu [rysunek własny]
Wyodrębnienie pojedynczego konturu odbyło się za pomocą metody Get wywołanej
na obiekcie magazynującym informacje o wszystkich konturach (liście). Logika algorytmu
znajduje się na Rysunku 14. Na Rysunku 14 N[i] to obliczona za pomocą funkcji
ContourArea powierzchnia konturu a i to indeks kolejnego elementu z listy. Na Rysunku 15
można zobaczyć efekt tego etapu przekształceń.
26
Rysunek 15 Obraz ręki po zastosowaniu algorytmu wyszukiwania największego konturu [zrzut ekranu
aplikacji]
Dla lepszej oceny efektów przekształceń, warto pokazać uzyskany obrys na zdjęciu
wejściowym, kolorowym. Przy ocenie modułu rozpoznającego rękę, warto dodać, że działa
on również podczas gdy na zdjęciu są inne obiekty jaśniejsze od ręki. Natomiast aplikacja nie
działa poprawnie gdy tło zbliżone jest do koloru skóry. Opisane efekty zaprezentowano na
Rysunkach 16 i 17.
Rysunek 16 Efekt przekształceń zaprezentowany na obrazie kolorowym[zrzut z ekranu aplikacji]
Rysunek 17 Prezentacja działania algorytmu wykrywania ręki na różnych tłach [zrzut z ekranu aplikacji]
Wykrycie czubków palców na konturze
Aby była możliwa ekstrakcja cech biometrycznych z uzyskanego konturu, należy
wyznaczyć miejsca charakterystyczne , takie jak np. czubki palców oraz dołki między
palcami. Pierwszym etapem wykrywania czubków palców jest zastosowanie tzw. algorytmu
Grahama (znajdywania wypukłej otoczki).
27
Rysunek 18 Graficzna interpretacja algorytmu Grahama [www.algorytm.org]
Algorytm ten, zastosowany na zbiorze punktów Q, daje najmniejszy wypukły wielokąt
taki, że każdy punkt ze zbioru Q leży na brzegu uzyskanego wielokąta albo w jego wnętrzu.
Otoczka bazuje na 6 punktach, które są najmniejszym podzbiorem zbioru Q otaczającym
wszystkie pozostałe punkty tego zbioru. Algorytm bazuje na określonym uporządkowaniu
punktów względem wybranego skrajnego punktu(uzyskanego dzięki algorytmowi
porządkowania wierzchołków). Zawiera także moduły odpowiedzialne za analizę kątów
pomiędzy trzema kolejnymi punktami i kierunków dalszego wyznaczania otoczki. Algorytm
jest nieco skomplikowany, dlatego w aplikacji użyto gotowej funkcji ConvexHull. Funkcja
jako argumenty przyjmuje macierz punktów uzyskaną po wyszukaniu konturu, oraz
stworzoną na potrzeby działania funkcji macierz liczb całkowitych, magazynujących
informację o skrajnych punktach otoczki.
Działanie algorytmu wykorzystane na otrzymanym w punkcie x konturze przedstawia
Rysunek 19.
Rysunek 19 Działanie algorytmu wyznaczania wypukłej otoczki na obrysie ręki [zrzut z ekranu aplikacji]
Jak widać większość punktów wyznaczających wypukłą otoczkę , to punkty
wyznaczające również czubki palców. Można powiedzieć, że na większości zdjęć otwartej
dłoni, pierwsze pięć punktów, licząc od góry zdjęcia (po współrzędnej y), to czubki palców.
Które dokładnie to są palce, możemy w łatwy sposób wyznaczyć za pomocą indeksowania
współrzędnej x pięciu wyznaczonych wcześniej punktów. I tak od lewej będą to: kciuk,
wskazujący, środkowy, serdeczny i mały. Oczywiście można to uzyskać tylko poprzez
28
określenie w poleceniu dla użytkownika, sposobu zrobienia zdjęcia (np. w tym przypadku :
lewa ręka, otwarta dłoń, cała w kadrze, pozycja pionowa, dobrze rozdzielone palce).
Na Rysunku 20, można zobaczyć schematyczne etapy takiej operacji przeprowadzonej
na konturze dłoni.
Rysunek 20 Kolejne etapy indeksowania poszczególnych palców [rysunek własny]
Wykrywanie dołków między palcami
Aby wyznaczyć względną długość palców należy znaleźć na zdjęciu zagłębienia
między nimi. W tym celu należy użyć algorytmu wyszukiwania wad wypukłości. Algorytm
ten pracuje na danych uzyskanych z działania algorytmu wyszukiwania otoczki wypukłej.
Wykrywa największe różnice pomiędzy konturem i otoczką wypukłą znalezioną przy pomocy
punktów konturu.
Na obrazie dłoni, wady wypukłości znalezionej wypukłej otoczki, w stosunku do
konturu dłoni, to dokładnie zagłębienia między palcami. Indeksując punkty od lewej, możemy
ponumerować kolejne dołki, w ramach przygotowania do późniejszych obliczeń.
Na obrazie dłoni znalezienie wad wypukłości prawdopodobnie miało by efekt taki jak
na rysunku 21.
Rysunek 21 Graficzna prezentacja wyniku działania wykrywania dołków między palcami [rysunek
własny]
Kolejną metodą znajdowania czubków palców oraz zagłębień między nimi jest tzw.
metoda k-krzywizny. Metoda ta opiera się na założenia kąta θ, i liczby k. Algorytm bierze i-
ty punkt konturu i oblicza kąt pomiędzy liniami wyznaczonymi między punktem (i+k) oraz (i-
k) a tym punktem. Graficzna prezentacja działania algorytmu znajduje się na Rysunku 22.
29
Rysunek 22 Prezentacja działania algorytmu k-krzywizny [12]
Na Rysunku 22 można zauważyć trzy miejsca, gdzie linia tworząca kontur się
zakrzywia. Kiedy, tak jak w przypadku 1-szym obliczony przez algorytm kąt α jest mniejszy
niż określony kąt θ, punkt nie jest brany pod uwagę, natomiast gdy α> θ, punkt zostaje
zaznaczony. Dzięki temu, ustawiając w algorytmie odpowiednio duży kąt θ, równie
skutecznie co w poprzedniej metodzie, możemy wykryć zagłębienia i dołki między palcami.
Zaletą tego algorytmu z stosunku do algorytmu wykrywania wypukłej otoczki i wad
wypukłości jest to, że przy metodzie k-krzywizny podczas jednej operacji uzyskuje się
zarówno czubki palców jak i wypukłości. Nie otrzymuje się poza tym innych punktów.
Rysunek 23 Wynik działania algorytmu k-krzywizny na modelu konturu dłoni [12]
Wyznaczanie przybliżonych długości palców
Za pomocą uzyskanych danych pomiarowych, czyli współrzędnych punktów na
płaszczyźnie obrazu wejściowego, jest już możliwy pomiar przybliżonych długości każdego z
palców. Dane te można uzyskać poprzez odczyt współrzędnych reprezentujących punkty na
obrazie przedstawiające czubki palców i dolinki między nimi. Dzięki indeksacji od lewej do
prawej, jest możliwa identyfikacja par punktów podlegających obliczeniom. Te zaś będą
wykonane zgodnie ze wzorem na odległość dwóch punktów o współrzędnych x i y na
płaszczyźnie kartezjańskiej jaką w tym przypadku jest obraz wejściowy.
Wzór na odległość dwóch punktów:
30
Takim sposobem obliczamy odległości odpowiednio pomiędzy punktami
wyznaczonymi we wcześniejszym etapie projektu aplikacji. Dla ułatwienia prezentacji
metody doboru punktów, ponumerowano je w sposób widoczny na Rysunku 24:
Rysunek 24 Sposób numeracji punktów charakterystycznych na obrazie dłoni [12]
Dla potrzeb dalszych etapów algorytmu odpowiednim palcom nadano indeksy. I tak,
od kciuka zaczynając, kończąc na małym palcu, długości uzyskały indeksy od 1 do 5.
Tabela 2 Prezentacja hierarchii wyznaczonych punktów na potrzeby obliczeń [tabela własna]
Numery indeksów
odpowiednich
konturów
Nazwy palców i ich
indeksy
1 i 2 Kciuk (1)
3 i 4 Wskazujący (2)
5 i 6 Środkowy (3)
7 i 8 Serdeczny (4)
8 i 9 Mały (5)
Wyznaczenie przybliżonego obszaru środka dłoni
Aby udoskonalić metodę biometryczną jaką jest weryfikacja tożsamości na podstawie
zdjęcia dłoni, należy wyodrębnić jak najwięcej cech biometrycznych z obrazu wejściowego.
Każda nowo uzyskana cecha zwiększa poprawność działania systemu. Jedną w cech , która
jest w łatwy sposób wykrywalna na uzyskanym w poprzednich krokach konturze dłoni jest
środek dłoni. Opisywany obszar wraz ze środkiem okręgu przedstawiony jest schematycznie
na modelu graficznym dłoni na rysunku nr 25.
31
Rysunek 25 Model dłoni z zaznaczonym obszarem środka dłoni [12][rysunek własny]
Aby osiągnąć oczekiwany efekt, należy wyznaczyć wielokąt, o wierzchołkach we
współrzędnych punktów dołków palców oraz pozostałych punktów wypukłej otoczki
znajdujących się niżej niż dołki palców. Następnie wpisać w otrzymany takim sposobem
wielokąt okrąg. Środek tego okręgu będzie reprezentował środek dłoni. Natomiast
powierzchnia wielokąta będzie przybliżoną powierzchnią dłoni (części bez palców).
Rysunek 26 Przybliżona powierzchnia dłoni zaprezentowana na zdjęciu wynikowym z poprzednich
etapów algorytmu [rysunek własny]
W następnym kroku należy obliczyć odległości pomiędzy środkiem dłoni a
konkretnymi czubkami palców oraz między środkiem dłoni a dołkami między palcami
metodą przedstawioną w podpunkcie x.
4.4 Wyznaczanie współczynników potrzebnych do procesu weryfikacji
użytkownika
W najbardziej popularnych akademickich zastosowaniach algorytmów pomiary
geometryczne określonych części dłoni odbywają się z reguły na specjalnie przygotowanych
stanowiskach pomiarowych. Podkładka na której kładzie się rękę jest w stałej odległości od
aparatu fotograficznego, dzięki temu, podczas pomiarów można pominąć kwestię rozwiązania
problemu robienia zdjęcia z różnej odległości. Koncepcja projektowanego systemu jest taka,
że ma to być system mobilny a więc zdjęcia mają być rejestrowane za pomocą urządzenia
przenośnego jakim jest telefon czy tablet. Nie należy więc komplikować systemu żądaniem
od użytkownika określonej odległości aparatu od dłoni. Byłaby to metoda zawodna oraz
aplikacja mogłaby okazać się trudna w obsłudze dla normalnego użytkownika.
Z tych właśnie powodów w opracowywanym systemie przyjęto metodę wyznaczania
parametrów poprzez tworzenie stosunków wyznaczonych długości i pól powierzchni.
Zniweluje to wpływ różnej odległości dłoni do aparatu podczas rejestracji i logowania. Aby
32
uzyskać odpowiednią liczbę parametrów dla bardziej poprawnej rozpoznawalności, należy
stworzyć stosunki każdej wartości do każdej. Lista wartości potrzebna do obliczenia
parametrów:
Tabela 3 Wartości potrzebne do obliczenia parametrów oraz ich symbole [tabela własna]
Symbol
wartości
Wartość
a Długość kciuka
b Długość palca wskazującego
c Długość palca środkowego
d Długość palca serdecznego
e Długość palca małego
f Odległość między środkiem
dłoni a kciukiem
g Pole powierzchni dłoni (bez
palców)
Maksymalna liczba parametrów możliwa do uzyskania z wartości wypisanych w tabeli
nr 3 została obliczona za pomocą wzoru na liczbę kombinacji z n elementów po k elementów
bez powtórzeń:
W omawianym przypadku obliczono liczbę kombinacji z 7 elementów(zbiór wartości) po 2
elementy(do stosunku potrzebne są dwie wartości).
Z obliczeń wynika więc, że będzie można otrzymać maksymalnie 21 parametrów.
Przykładowo są to stosunki wartości : a do b, d do f, czy b do c.
W dalszej części algorytmu uzyskane parametry zapisujemy w wektorze o
maksymalnie 21 składowych. Dodatkowo dodajemy informację potrzebną do identyfikacji,
tzw. login. Login może być w formie łańcucha znaków lub również popularnego w systemach
ciągu określonych liczb. Wektor parametrów biometrycznych będzie pełnił w systemie rolę
hasła.
4.5 Działanie modułu porównującego
Działanie tego modułu polega na zarejestrowaniu próbki biometrycznej (zdjęcia) oraz:
Określeniu czynności (logowanie lub rejestracja),
Podanie swojego unikalnego loginu,
W zależności od wybranej opcji:
33
-zapisanie parametrów
-porównanie parametrów z zapisanymi w bazie,
Na podstawie porównania podjęcie przez algorytmy obliczeniowe systemu
odpowiedniej decyzji pozytywnej albo negatywnej,
W przypadku decyzji pozytywnej, wyświetlanie komunikatu „Logowanie zakończyło
się sukcesem” i udostępnienie użytkownikowi zawartości jego konta,
W odwrotnym przypadku (decyzja negatywna) wyświetlenie komunikatu
„Niepoprawny login lub niepotwierdzona tożsamość” i odmowa dostępu do
zawartości konta użytkownika o podanym loginie.
Aby zminimalizować wpływ czynników takich jak niedoskonałości aparatu, zła pozycja
dłoni, nieodpowiedni kadr, należy wprowadzić do systemu pewien próg czułości. Próg taki to
zakres wahania się wartości przy którym wartość zostaje jeszcze zakwalifikowana jako
prawidłowa (a nie równa się dokładnie wartości porównywanej). Progi czułości mogą być
różne dla różnych parametrów, z zależności od zmienności danego parametru u tego samego
osobnika.
Wartości progów czułości w systemie biometrycznym powinno się ustalać na podstawie
eksperymentalnej. Przy doborze progów należy kierować się wartością błędu
zrównoważonego (im mniejszy błąd tym lepiej zostaje oceniona skuteczność systemu). Aby
obliczyć tą wartość należy przeprowadzić rejestrację określonej liczby osób, a następnie
logowanie takich dwóch grup : logujących się do swojego konta i tych nie do swojego. Wtedy
można uzyskać współczynniki fałszywej akceptacji i fałszywego odrzucenia, a następnie na
ich podstawie wyliczyć wartość błędu zrównoważonego.
4.6 Potencjalne zastosowanie systemu
Ze względu na nieskomplikowany algorytm obliczeniowy systemu, oraz uniwersalność,
można znaleźć dla niego wiele zastosowań.
Program weryfikujący tożsamość użytkownika przy odblokowywaniu telefonu (np. po
włączeniu, zamiast wpisywania PIN-u i kodu telefonu
Aplikacje dostępu do wszelkich serwisów społecznościowych i pocztowych
Mobilne logowanie do systemów bankowych (jako jeden z poziomów zabezpieczeń)
34
35
5. Istniejące rozwiązania
Problem rozpoznawania tożsamości na podstawie zdjęcia dłoni nieraz już pojawił się w
pracach naukowych studentów. Najczęściej próby urzeczywistnienia tej idei polegały na
projektach stanowisk pomiarowych oraz aplikacji obrabiającej dane i obliczającej wynik
weryfikacji. Można łatwo zauważyć, że systemy takie miały pewną wadę. Specjalnie zrobione
stanowisko pomiarowe, stało w jednym miejscu, uniemożliwiając mobilność całego systemu.
Poza tym system składał się z niezależnych, dwóch oddzielnie działających modułów, a
zdjęcia do systemu należało ładować ręcznie poprzez wybór odpowiedniego pliku w
systemie. Z tych względów aplikacje takie były mało praktyczne, nienadające się raczej do
zastosować komercyjnych. Na Rysunku 27 przedstawiono przykładowy projekt takiego
stanowiska pomiarowego. Jak widać, składa się ze stolika, na którym układa się dłoń, za
pomocą specjalnych palików, wymuszających określoną pozycję dłoni. Nad stolikiem
umieszczono aparat fotograficzny cyfrowy, na stałe, aby na każdym zrobionym zdjęciu
zachować takie same proporcje dłoni. Do stanowiska dołączony jest również system lusterek i
źródło światła, mające zapewniać zawsze takie same, równomierne oświetlenie w obszarze
zdjęcia[10].
Rysunek 27 Stolik pomiarowy do weryfikacji tożsamości na podstawie geometrii dłoni [10]
Jeśli chodzi o geometrię dłoni, to tutaj również można dostrzec dużą różnorodność i
wiele sektorów gospodarki , które korzystają z takich systemów. Można wspomnieć o
transporcie: system analizujący geometrię dłoni działa w USA na kilkunastu lotniskach
międzynarodowych, kontrolując dostęp do niektórych pomieszczeń i do komputerowych baz
danych. W ten sam sposób systemy wykorzystuje wojsko. W niektórych korporacjach czas
pracy zatrudnionych osób kontrolują właśnie specjalne czytniki geometrii dłoni, a także linii
papilarnych. Komercyjne spółki sprzedają takie czytniki do użycia zamiast zamka w
drzwiach. Najlepszym przykładem komercyjnego użycia czytnika geometrii dłoni jest
HandKeyII polskiej firmy Cassini. Oto krótki opis zamieszczony na stronie internetowej
producentów urządzenia:
„ Po umieszczeniu dłoni w komorze urządzenia mierzony jest rozmiar i kształt dłoni - długość,
szerokość i grubość czterech palców oraz obszar pomiędzy kostkami palców (kciuk nie jest
wykorzystywany). Odbywa się to poprzez oświetlenie dłoni promieniami podczerwonymi i
odczytanie obrazu macierzą CCD - tworzony jest trójwymiarowy obraz kształtu dłoni (kilka
36
różnych położeń). Z wyników pomiarów tworzony jest 9-cio bajtowy (maksimum) wzorzec,
który zapisywany jest w pamięci razem z kodem ID osoby. Proces weryfikacji użytkownika
polega na wprowadzeniu kodu ID oraz porównaniu wzorca dłoni aktualnie analizowanego ze
wzorcem umieszczonym w pamięci. Jeżeli wynik porównania jest pozytywny (osoba próbująca
dostać się do pomieszczenia jest osobą uprawnioną) efektem jest np. otwarcie drzwi. System
potrafi także dostosować się do zmian geometrii dłoni postępujących na skutek np. starzenia
lub tycia.” [11]
Rysunek 28 Urządzenie HandKeyII firmy Cassini [11]
Na rynku można znaleźć wiele aplikacji na bazie wybranych cech biometrycznych.
Wśród aplikacji komercyjnych, najbardziej popularne są te wykorzystujące zdjęcie twarzy
(np. Lenovo Veriface, Facial Recognition App na serwisie społecznościowym Facebook, czy
PayPal Face-Verification System dla realizowania płatności mobilnych).
Rysunek 29 Przykładowy panel aplikacji bazującej na rozpoznawaniu
tożsamości na podstawie zdjęcia twarzy [www.lenovo.com]
Najpopularniejszą, a także najdłużej sprawnie działającą metodą weryfikacji
tożsamości, są systemy wykorzystujące linie papilarne. Systemy i bazy danych linii
papilarnych funkcjonują w sektorze ochrony prawa już od dziesiątków lat, zaczynając od
37
czasów kiedy bazy danych i próbki pobierało się w sposób analogowy, odciskając wzór linii
papilarnych podejrzanego na kartce i za pomocą skanera wprowadzając do systemu, po czym
porównując z bazą danych. W dzisiejszych czasach zarówno pobieranie próbki jak i analiza
odbywają się w sposób cyfrowy. Niewątpliwie zwiększa to dokładność i wiarygodność
weryfikacji.
Rysunek 30 Przenośny czytnik linii papilarnych [www.techtrendy.pl]
Warto również wspomnieć o skanerach tęczówki oka. Działają na zasadzie zrobienia
zdjęcia tęczówki o bardzo wysokiej rozdzielczości. Następnie system ze zrobionego zdjęcia
przygotowuje kod zawierający skrócony opis punktów charakterystycznych. Punkty te
porównuje ze wzorcem, a następnie udziela, lub odmawia dostępu.
Rysunek 31 Czytnik tęczówki oka[www.meritum-news.com]
Wymieniono jedynie najbardziej popularne rozwiązania. Szczegółowy przegląd
wszystkich dostępnych rozwiązań dostępnych na rynku oraz tych, nad którymi trwają
badania, wymagałby napisania osobnej pracy, tylko o tej tematyce.
38
39
6. Podsumowanie i Wnioski
W ramach pracy udało się stworzyć projekt zadowalająco działającego systemu do
weryfikacji tożsamości na podstawie zdjęcia dłoni. Jest on przystosowany do implementacji
na urządzeniach mobilnych, takich jak telefon typu smartfon czy tablet. Projekt wymaga
gruntownego przetestowania stworzonego algorytmu w praktyce. Posiada również
niedoskonałości, które przy pewnych nakładach pracy i dodatkowych informacji, można
zniwelować.
Przy okazji testów algorytmu, stworzono aplikację działającą w systemie Android,
pozwalającą na podgląd efektów algorytmu. Wybrano właśnie ten system, ponieważ na jego
bazie można stworzyć w przyszłości pełną implementację zaprojektowanego systemu.
Dodano w niej przyciski, stanowiące szkielet, dla tej aplikacji, takie jak „ZALOGUJ” i
„ZAREJESTRUJ”. Jako ulepszenie aplikacji, można dodać moduł który automatycznie robi
zdjęcie po zlokalizowaniu w kadrze kamery kształtu otwartej dłoni. Jest to możliwe,
ponieważ biblioteka OpenCV posiada wbudowane funkcję automatycznego śledzenia
obiektów na obrazie z kamery.
Jednak biblioteka użyta do stworzenia aplikacji, mogłaby zostać lepiej zaprojektowana
pod względem manipulacji współrzędnymi obrazu oraz formatów danych zawartych w
argumentach poszczególnych funkcji. Co prawda biblioteka została zaprojektowana typowo
do manipulacji obrazem kamery w trybie „na żywo”, dlatego też niektóre funkcje nie są do
końca dostosowane do obróbki obrazu statycznego.
Ze względu na to, że nie ma jeszcze na rynku aplikacji na urządzenia mobilne, zajmującej się
konkretnie weryfikacją tożsamości na podstawie zdjęcia dłoni, pozostawia to duże
możliwości dla rozwoju opracowanego algorytmu.
40
41
Bibliografia i załączniki
Literatura
[1] Tadeusiewicz R., Korohoda P., Komputerowa analiza i przetwarzanie obrazów
Wydawnictwo Fundacji Postępu Telekomunikacji, Kraków 1997
[2] Tadeusiewicz R., Flasiński M., Rozpoznawanie obrazów
Państwowe Wydawnictwa Naukowe, Warszawa 1991. Seria: Problemy Współczesnej
Nauki i Techniki. Informatyka.
[3] Collins C, Galpin M., Kaeppler M., Android w praktyce
Wydawnictwo Helion, 2012
[4] Darwin I., Android receptury
Wydawnictwo Helion we współpracy z wyd. O’Reilly, 2012
[5] Rychlicki W. Programowanie w języku Java. Zbiór zadań z (p)odpowiedziami
Wydawnictwo Helion, 2012
[6] Baggio D., Escriva D., Mahmood N., Shilkrot R., Emami S., Levgen K,
Mastering OpenCV with Practical Computer Vision Project
PACKT Publishing, Birmingham – Mumbai 2012
[7] Lagarniere R., OpenCV 2 Computer Vision, Application Programming Cook Book
PACKT Publishing, Birmingham – Mumbai 2012
Prace naukowe
[8] dr inż. Bugdol M., Metoda multimodalnego wzmacniania kryptografii w aspekcie
biometrii behawioralnej
Rozprawa doktorska, promotor dr hab. inż. Andrzej W. Mitas ,prof. Nw. w
Politechnice Śląskiej, Politechnika Śląska , Wydział Informatyki, Automatyki i
Elektroniki
[9] mgr inż. Wojas S., Metody Przetwarzania Obrazów z Wykorzystaniem Biblioteki
OpenCV
Praca dyplomowa magisterska, promotor dr P. Rotter, WEAIiE, katedra Automatyki,
Akademia
[10] inż. Kapsa W., Identyfikacja Osób na Podstawie Geometrii Dłoni
Dyplomowa praca inżynierska, Politechnika Poznańska, Wydział Elektroniki i
Telekomunikacji
42
Źródła internetowe
[11] www.cassini.pl
[12] www.tmroyal.com
[13] www.docs.opencv.com
Załączniki
[1] Płyta CD z treścią prezentacji oraz kodem źródłowym autorskiej aplikacji mobilnej
Top Related