Biometryczny system weryfikacji tożsamości na podstawie zdjęcia ...

42
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

Transcript of Biometryczny system weryfikacji tożsamości na podstawie zdjęcia ...

Page 1: Biometryczny system weryfikacji tożsamości na podstawie zdjęcia ...

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

Page 2: Biometryczny system weryfikacji tożsamości na podstawie zdjęcia ...

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.

Page 3: Biometryczny system weryfikacji tożsamości na podstawie zdjęcia ...

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

Page 4: Biometryczny system weryfikacji tożsamości na podstawie zdjęcia ...

4

Page 5: Biometryczny system weryfikacji tożsamości na podstawie zdjęcia ...

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.

Page 6: Biometryczny system weryfikacji tożsamości na podstawie zdjęcia ...

6

Page 7: Biometryczny system weryfikacji tożsamości na podstawie zdjęcia ...

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]

Page 8: Biometryczny system weryfikacji tożsamości na podstawie zdjęcia ...

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]

Page 9: Biometryczny system weryfikacji tożsamości na podstawie zdjęcia ...

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.

Page 10: Biometryczny system weryfikacji tożsamości na podstawie zdjęcia ...

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.

Page 11: Biometryczny system weryfikacji tożsamości na podstawie zdjęcia ...

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.

Page 12: Biometryczny system weryfikacji tożsamości na podstawie zdjęcia ...

12

Page 13: Biometryczny system weryfikacji tożsamości na podstawie zdjęcia ...

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.

Page 14: Biometryczny system weryfikacji tożsamości na podstawie zdjęcia ...

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

Page 15: Biometryczny system weryfikacji tożsamości na podstawie zdjęcia ...

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.

Page 16: Biometryczny system weryfikacji tożsamości na podstawie zdjęcia ...

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

Page 17: Biometryczny system weryfikacji tożsamości na podstawie zdjęcia ...

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.

Page 18: Biometryczny system weryfikacji tożsamości na podstawie zdjęcia ...

18

Page 19: Biometryczny system weryfikacji tożsamości na podstawie zdjęcia ...

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

Page 20: Biometryczny system weryfikacji tożsamości na podstawie zdjęcia ...

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

Page 21: Biometryczny system weryfikacji tożsamości na podstawie zdjęcia ...

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.

Page 22: Biometryczny system weryfikacji tożsamości na podstawie zdjęcia ...

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.

Page 23: Biometryczny system weryfikacji tożsamości na podstawie zdjęcia ...

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)

Page 24: Biometryczny system weryfikacji tożsamości na podstawie zdjęcia ...

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]

Page 25: Biometryczny system weryfikacji tożsamości na podstawie zdjęcia ...

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

Page 26: Biometryczny system weryfikacji tożsamości na podstawie zdjęcia ...

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

Page 27: Biometryczny system weryfikacji tożsamości na podstawie zdjęcia ...

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

Page 28: Biometryczny system weryfikacji tożsamości na podstawie zdjęcia ...

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.

Page 29: Biometryczny system weryfikacji tożsamości na podstawie zdjęcia ...

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:

Page 30: Biometryczny system weryfikacji tożsamości na podstawie zdjęcia ...

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.

Page 31: Biometryczny system weryfikacji tożsamości na podstawie zdjęcia ...

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

Page 32: Biometryczny system weryfikacji tożsamości na podstawie zdjęcia ...

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:

Page 33: Biometryczny system weryfikacji tożsamości na podstawie zdjęcia ...

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ń)

Page 34: Biometryczny system weryfikacji tożsamości na podstawie zdjęcia ...

34

Page 35: Biometryczny system weryfikacji tożsamości na podstawie zdjęcia ...

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

Page 36: Biometryczny system weryfikacji tożsamości na podstawie zdjęcia ...

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

Page 37: Biometryczny system weryfikacji tożsamości na podstawie zdjęcia ...

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.

Page 38: Biometryczny system weryfikacji tożsamości na podstawie zdjęcia ...

38

Page 39: Biometryczny system weryfikacji tożsamości na podstawie zdjęcia ...

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.

Page 40: Biometryczny system weryfikacji tożsamości na podstawie zdjęcia ...

40

Page 41: Biometryczny system weryfikacji tożsamości na podstawie zdjęcia ...

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

Page 42: Biometryczny system weryfikacji tożsamości na podstawie zdjęcia ...

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