PRACA DOKTORSKA. Rozpoznawanie obrazów dłoni za pomocą gramatyk klasy ETPL(k) w systemach wizyjnych analizy języka migowego.



Podobne dokumenty
Rozpoznawanie obrazów dłoni za pomocą gramatyk klasy ETPL(k) w systemach wizyjnych analizy języka migowego.

Interpretacja gestów dłoni w sekwencji obrazów cyfrowych. autor: Karol Czapnik opiekun: prof. dr hab. Włodzimierz Kasprzak

Automatyczne tworzenie trójwymiarowego planu pomieszczenia z zastosowaniem metod stereowizyjnych

Badania operacyjne: Wykład Zastosowanie kolorowania grafów w planowaniu produkcji typu no-idle

Zastosowanie stereowizji do śledzenia trajektorii obiektów w przestrzeni 3D

1. Synteza automatów Moore a i Mealy realizujących zadane przekształcenie 2. Transformacja automatu Moore a w automat Mealy i odwrotnie

rozpoznawania odcisków palców

Filtracja obrazu operacje kontekstowe

Uniwersytet Zielonogórski Wydział Elektrotechniki, Informatyki i Telekomunikacji Instytut Sterowania i Systemów Informatycznych

Rozpoznawanie obrazów na przykładzie rozpoznawania twarzy

Spacery losowe generowanie realizacji procesu losowego

Mechatronika i inteligentne systemy produkcyjne. Modelowanie systemów mechatronicznych Platformy przetwarzania danych

WYKŁAD 12. Analiza obrazu Wyznaczanie parametrów ruchu obiektów

Algorytmy decyzyjne będące alternatywą dla sieci neuronowych

Modelowanie jako sposób opisu rzeczywistości. Katedra Mikroelektroniki i Technik Informatycznych Politechnika Łódzka

OPTYMALIZACJA HARMONOGRAMOWANIA MONTAŻU SAMOCHODÓW Z ZASTOSOWANIEM PROGRAMOWANIA W LOGICE Z OGRANICZENIAMI

Przetwarzanie obrazów wykład 7. Adam Wojciechowski

Pattern Classification

SYSTEM BIOMETRYCZNY IDENTYFIKUJĄCY OSOBY NA PODSTAWIE CECH OSOBNICZYCH TWARZY. Autorzy: M. Lewicka, K. Stańczyk

Samochodowy system detekcji i rozpoznawania znaków drogowych. Sensory w budowie maszyn i pojazdów Maciej Śmigielski

Aproksymacja funkcji a regresja symboliczna

Analiza skupień. Analiza Skupień W sztucznej inteligencji istotną rolę ogrywają algorytmy grupowania

Filtracja obrazu operacje kontekstowe

BIBLIOTEKA PROGRAMU R - BIOPS. Narzędzia Informatyczne w Badaniach Naukowych Katarzyna Bernat

Spośród licznych filtrów nieliniowych najlepszymi właściwościami odznacza się filtr medianowy prosty i skuteczny.

AUTOMATYKA INFORMATYKA

przetworzonego sygnału

9.9 Algorytmy przeglądu

Inteligentna analiza danych

Elementy modelowania matematycznego

Ćwiczenia nr 7. TEMATYKA: Krzywe Bézier a

Przetwarzanie obrazów wykład 4

Widzenie komputerowe (computer vision)

Problematyka budowy skanera 3D doświadczenia własne

SZTUCZNA INTELIGENCJA

ĆWICZENIE 15 BADANIE WZMACNIACZY MOCY MAŁEJ CZĘSTOTLIWOŚCI

Diagnostyka obrazowa

MODELE KOLORÓW. Przygotował: Robert Bednarz

Zygmunt Wróbel i Robert Koprowski. Praktyka przetwarzania obrazów w programie Matlab

Proces technologiczny. 1. Zastosowanie cech technologicznych w systemach CAPP

Odciski palców ekstrakcja cech

Relacja: III Seminarium Naukowe "Inżynierskie zastosowania technologii informatycznych"

Analiza obrazów. Segmentacja i indeksacja obiektów

Parametryzacja obrazu na potrzeby algorytmów decyzyjnych

i ruchów użytkownika komputera za i pozycjonujący oczy cyberagenta internetowego na oczach i akcjach użytkownika Promotor: dr Adrian Horzyk

Implementacja filtru Canny ego

Segmentacja obrazów cyfrowych z zastosowaniem teorii grafów - wstęp. autor: Łukasz Chlebda

AUTOMATYCZNE ROZPOZNAWANIE PUNKTÓW KONTROLNYCH GŁOWY SŁUŻĄCYCH DO 3D MODELOWANIA JEJ ANATOMII I DYNAMIKI

Akademia Górniczo - Hutnicza im. Stanisława Staszica w Krakowie. Projekt. z przedmiotu Analiza i Przetwarzanie Obrazów

Struktury danych i złożoność obliczeniowa Wykład 7. Prof. dr hab. inż. Jan Magott

Programowanie obiektowe

Przetwarzanie obrazu

6. Zagadnienie parkowania ciężarówki.

Metodyka projektowania komputerowych systemów sterowania

ANALIZA SEMANTYCZNA OBRAZU I DŹWIĘKU

Prof. Stanisław Jankowski

Efekty kształcenia dla kierunku studiów INFORMATYKA, Absolwent studiów I stopnia kierunku Informatyka WIEDZA

Metody systemowe i decyzyjne w informatyce

W poszukiwaniu sensu w świecie widzialnym

Przetwarzanie obrazu

Najprostszy schemat blokowy

Efekt kształcenia. Ma uporządkowaną, podbudowaną teoretycznie wiedzę ogólną w zakresie algorytmów i ich złożoności obliczeniowej.

Diagnostyka procesów przemysłowych Kod przedmiotu

w analizie wyników badań eksperymentalnych, w problemach modelowania zjawisk fizycznych, w analizie obserwacji statystycznych.

Analiza i projektowanie oprogramowania. Analiza i projektowanie oprogramowania 1/32

Cyfrowe przetwarzanie obrazów i sygnałów Wykład 8 AiR III

Temat: Zastosowanie wyrażeń regularnych do syntezy i analizy automatów skończonych

Definicje. Najprostszy schemat blokowy. Schemat dokładniejszy

Mariusz Nowak Instytut Informatyki Politechnika Poznańska

Ćw. 8 Bramki logiczne

WIZUALIZACJA I STEROWANIE ROBOTEM

Akwizycja obrazów. Zagadnienia wstępne

STRESZCZENIE. rozprawy doktorskiej pt. Zmienne jakościowe w procesie wyceny wartości rynkowej nieruchomości. Ujęcie statystyczne.

Modelowanie i obliczenia techniczne. dr inż. Paweł Pełczyński

Data Mining Wykład 9. Analiza skupień (grupowanie) Grupowanie hierarchiczne O-Cluster. Plan wykładu. Sformułowanie problemu

Elementy statystyki wielowymiarowej

Spis treści WSTĘP... 9

INŻYNIERIA WIEDZY I SYSTEMY EKSPERTOWE

Lingwistyczny system definicyjny wykorzystujący korpusy tekstów oraz zasoby internetowe.

Adam Korzeniewski p Katedra Systemów Multimedialnych

6. Algorytmy ochrony przed zagłodzeniem dla systemów Linux i Windows NT.

Opracował: Jan Front

b) bc a Rys. 1. Tablice Karnaugha dla funkcji o: a) n=2, b) n=3 i c) n=4 zmiennych.

Klasyfikatory: k-nn oraz naiwny Bayesa. Agnieszka Nowak Brzezińska Wykład IV

Cyfrowe przetwarzanie obrazów. Dr inż. Michał Kruk

Systemy uczące się wykład 2

Agnieszka Nowak Brzezińska Wykład III

Metody Kompilacji Wykład 3

SPOSOBY POMIARU KĄTÓW W PROGRAMIE AutoCAD

8. Neuron z ciągłą funkcją aktywacji.

Inteligentne wydobywanie informacji z internetowych serwisów społecznościowych

Wykrywanie twarzy na zdjęciach przy pomocy kaskad

Definicje. Algorytm to:

tel. (+4861) fax. (+4861)

Programowanie obiektowe

Techniki animacji komputerowej

Analiza obrazów - sprawozdanie nr 2

Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych

Przedmowa 11 Ważniejsze oznaczenia 14 Spis skrótów i akronimów 15 Wstęp 21 W.1. Obraz naturalny i cyfrowe przetwarzanie obrazów 21 W.2.

Jeśli X jest przestrzenią o nieskończonej liczbie elementów:

Transkrypt:

PRACA DOKTORSKA Rozpoznawanie obrazów dłoni za pomocą gramatyk klasy ETPL(k) w systemach wizyjnych analizy języka migowego. Autor: mgr inż. Szymon Myśliński Promotor pracy: prof. dr hab. Mariusz Flasiński AKADEMIA GÓRNICZO-HUTNICZA IM. STANISŁAWA STASZICA W KRAKOWIE Wydział Elektrotechniki, Automatyki, Informatyki i Elektroniki KRAKÓW 2009

Pragnę podziękować Panu Profesorowi Mariuszowi Flasińskiemu za życzliwość i wszelką pomoc udzieloną mi podczas powstawania niniejszej pracy. Szymon Myśliński

SPIS TREŚCI 3 Spis treści 1. Wstęp 5 1.1. Przegląd literatury............................... 5 1.2. Cel i teza pracy................................. 13 1.3. Przegląd pracy................................. 14 2. Wstępne przetwarzanie obrazu dłoni 16 2.1. Wprowadzenie.................................. 16 2.2. Segmentacja obrazu............................... 19 2.3. Wyznaczanie środka masy obszaru dłoni................... 23 2.4. Detekcja konturu dłoni............................. 25 2.5. Metoda wyznaczania punktów charakterystycznych obrazu dłoni...... 30 3. Metoda generacji grafowej reprezentacji obrazu dłoni 35 3.1. Wprowadzenie.................................. 35 3.2. Algorytm rozpinania grafu........................... 36 3.3. Etykietowanie krawędzi grafu......................... 44 3.4. Indeksowanie wierzchołków grafu....................... 50 3.5. Etykietowanie wierzchołków grafu....................... 53 3.6. Reprezentacje grafowe obrazów referencyjnych................ 59 4. Rozpoznawanie obrazu dłoni za pomocą analizy syntaktycznej 67 4.1. Wprowadzenie.................................. 67 4.2. Gramatyka grafowa klasy TETPL(k)..................... 67 4.3. Algorytm parsingu języków grafowych klasy TETPL(k)........... 76 5. Projekt systemu 82 5.1. Architektura rozwiązania............................ 82 5.2. Założenia projektowe.............................. 83 5.3. Model statyczny................................. 84 5.4. Model dynamiczny............................... 90 5.5. Wydajność.................................... 92 6. Eksperymenty 93

SPIS TREŚCI 4 6.1. Obrazy testowe................................. 93 6.2. Przebieg eksperymentów............................ 97 6.3. Wnioski..................................... 99 7. Podsumowanie 101 DODATKI A. Polski Język Migany 104 B. Definicje modelu gramatyk grafowych klasy ETPL(k) 106 C. Zestawienie danych do analizy porównawczej proponowanej metody 114 Bibliografia 116

1. Wstęp 5 1. Wstęp 1.1. Przegląd literatury Systemy informatyczne wspierające ludzi niepełnosprawnych w życiu codziennym są tematem nie tylko ciekawych, ale i pożytecznych badań. W ramach projektu badawczego prowadzonego na University of Newcastle upon Tyne [Myś06, WM06] autor prowadził prace nad metodami sterowania bio-protez dłoni. Decyzja o ruchu protezy podejmowana była przy użyciu sieci neuronowej. Na jej wejście podawane były sygnały elektryczne rejestrowane na powierzchni skóry operatora podczas aktywności mięśni przedramienia. Sygnały takie, zwane miopotencjałami, towarzyszą każdej aktywności mięśni szkieletowych człowieka. Kontynuując badania w tym zakresie, autor postanowił zająć się problemem rozpoznawania języków migowych. Zagadnienie to jest tematem wielu programów badawczych w laboratoriach całego świata. Dowodem jest duża liczba związanych z nim publikacji w międzynarodowych czasopismach i referatów pojawiających się co roku na konferencjach naukowych. Co ciekawe, niemalże brak jest prac dotyczących Polskiego Języka Miganego. Wyjątkiem są prace [For01b, KW05, Mar08]. Słuszna wydaje się więc decyzja o osadzeniu badań nad mechanizmami używanymi do rozpoznawania języka migowego w kontekście właśnie tej narodowej odmiany języka migowego. Przed rozpoczęciem dalszych badań autor nawiązał kontakt z Polskim Związkiem Głuchych, z twórcą Polskiego Języka Miganego panem profesorem Bogdanem Szczepankowskim, oraz lektorką Polskiego Języka Miganego, w celu weryfikacji założeń i przyjętego kierunku badań. Pierwsze eksperymenty z rozpoznawaniem języków migowych wykazały poważne ograniczenia metody bazującej na miopotencjałach. Nie była możliwa klasyfikacja skomplikowanych układów dłoni przyjmowanych podczas wykonywania gestów. Co więcej, konieczność stosowania skomplikowanej aparatury w celu pozyskania potencjałów z powierzchni skóry utrudniała swobodne ich wykonywanie. Spowodowało to potrzebę użycia innych sposobów akwizycji danych w celu klasyfikacji układu dłoni (ang. hand pose) i gestów (ang. hand gesture). Analiza dostępnych rozwiązań wskazała na systemy wizyjne, jako na rozwiązanie zdecydowanie najbardziej elastyczne oraz najwygodniejsze z punktu widzenia użytkownika interfejsu człowiek-komputer, zbudowanego przy ich użyciu [OT08].

1. Wstęp 6 Klasyfikacja sekwencji trajektorii ruchów dłoni w systemie wizyjnym jest zadaniem relatywnie prostym i obszernie opisanym w literaturze. Do tego celu używa się z powodzeniem Ukrytych Modeli Markowa. Rozpoznawanie układu dłoni na obrazie nie jest natomiast zadaniem trywialnym. Techniki używane do rozpoznawania obrazów w systemach wizyjnych należy podzielić na dwie główne grupy: decyzyjno-teoretyczną i syntaktyczno-strukturalną [TF91]. W podejściu decyzyjno-teoretycznym z obrazów-wzorców wyznaczane są wektory cech, czyli zbiory miar charakterystycznych. Rozpoznanie nieznanego obiektu (przypisanie go do klasy obrazów-wzorców) jest dokonywane przez podział przestrzeni cech. Jeśli obrazy odznaczają się skomplikowaną, hierarchiczną strukturą, rozpoznawane obiekty mają złożone kształty, lub zdefiniowano dużą liczbę klas, podejście decyzyjno-teoretyczne może okazać się mniej adekwatne niż podejście syntaktyczno-strukturalne, gdyż to drugie opiera się właśnie na reprezentacji strukturalnej. W podejściu syntaktyczno-strukturalnym [Fu77, Fu82b], obraz traktuje się jako strukturę opisującą relacje pomiędzy prostymi elementami, tzw. składowymi pierwotnymi, zidentyfikowanymi na obrazie. W podejściu syntaktyczno-strukturalnym istnieją trzy podstawowe struktury używane do opisu obrazów: ciągi (łańcuchy) [Fre62, Sha69], drzewa [Fu82a, Fu82b], oraz grafy [SF83, Fla93]. Do opisu złożonych dwu- i trójwymiarowych obrazów najczęściej używane są grafy, będące najmocniejszym formalizmem opisowym spośród wymienionych struktur. Biorąc pod uwagę sposób rozpoznawania, w podejściu syntaktyczno-strukturalnym wyróżnić można grupę metod strukturalnych i grupę metod syntaktycznych. Metody strukturalne bazują na dopasowaniu wzorców (ang. template matching, pattern matching), to znaczy na porównaniu struktury nieznanego obrazu ze strukturami obrazów-wzorców. Jako wynik rozpoznawania wybierana jest klasa obrazów o wzorcu najbardziej zbliżonym do badanej struktury. W metodach syntaktycznych zbiór obrazów-wzorców traktowany jest jako język struktur. Dla języka tego konstruuje się gramatykę formalną a następnie algorytm analizy syntaktycznej (parser). Proces rozpoznawania ma charakter analizy syntaktycznej (parsingu) struktury nieznanego obrazu. Gramatyki i języki grafowe zostały zdefiniowane na przełomie lat sześćdziesiątych i siedemdziesiątych jako formalizm do generacji obrazów [PR69]. Niedługo potem pojawiły się pierwsze modele matematyczne automatów akceptujących takie języki [RM72]. Dzięki ogromnej mocy opisowo-generacyjnej gramatyk i języków grafowych, są one powszechnie używane od momentu wprowadzenia aż do dzisiaj [BF75, Fu82b, JRV82, Fla93, OTO06a, Fla07]. W latach osiemdziesiątych algorytmy przetwarzania języków grafowych znalazły się w centrum zainteresowania badań nad metodami syntaktycznymi [Fu82a, Fu82b, SF83, Fla88, Fla89]. Od połowy lat osiemdziesiątych, ze względu na coraz szerszy zakres zastosowań parsingu gramatyk grafowych, zainteresowanie opisywaną problematyką stale rosło. Jako przykład przytoczyć można automatyczne rozpoznawanie pisma

1. Wstęp 7 (ang. Optical Character Recognition) [Fu82b], rozpoznawanie linii papilarnych [IZ86], projektowanie wspomagane komputerowo (ang. Computer Aided Design), wytwarzanie przemysłowe (ang. Computer Aided Manufacturing), planowanie procesów produkcyjnych (ang. Computer Aided Process Planning) [CH90, Fla95] i diagnostyka medyczna [OTO06a, OTO06b, OT08]. W każdym z wymienionych zastosowań, a także w wielu innych znanych z literatury zagadnieniach, metody grafowe są z powodzeniem używane od wielu lat. W niniejszej pracy autor podjął próbę użycia syntaktycznego modelu opartego na językach grafowych, dla których istnieje efektywny algorytm parsera o złożoności obliczeniowej O(n 2 ) [Fla88, Fla89, Fla90, Fla93, Fla95, Fla98, Fla07], do rozpoznawania układu dłoni na obrazie. Powodzenie tego zadania byłoby znaczącym krokiem w stronę podniesienia wydajności metod klasyfikacji układu dłoni w systemach wizyjnych. Oznaczałoby bowiem uzyskanie najniższej możliwej złożoności obliczeniowej algorytmu rozpoznawania. W literaturze naukowej opisanych jest wiele systemów rozpoznawania układów dłoni i gestów. Najciekawsze z nich autor zebrał w Tabeli 1.1 (Przegląd starszych rozwiązań wizyjnych służących rozpoznawaniu gestów znajduje się w [HP95].) W poniższym zestawieniu położono nacisk na systemy używane do rozpoznawania układu dłoni i gestów wielu narodowych języków migowych: japońskiego (JSL) [MT91, IMiT + 00, ST00, TSS02], amerykańskiego (ASL) [KH95, LK95, HMM97, SWP98, CW00, VM01, YAT02, HRKL04], chińskiego (CSL) [FGC + 01, WG02, OB04], australijskiego (Auslan) [Kad96, Vam96, HO01], tajwańskiego (TSL) [HH98, LO98, Su00], arabskiego (ArSL) [AJH01], holenderskiego (NSL) [AG98], angielskiego (BSL) [KvdMW07], irlandzkiego (ISL) [SW00], malezyjskiego (MSL) [SJM + 06], niemieckiego (GSL) [BK02], czy w końcu polskiego (PJM ) [KW05, Mar08]. Znane są też odwrotnie działające systemy, syntetyzujące znaki i gesty języków migowych na ekranie [KH95, NR99], lub przetwarzające je na mowę [SJM + 06]. Poniższe zestawienie zawiera również pojedyncze przykłady ciekawych systemów rozpoznawania układu dłoni i gestów, używanych w innym zakresie zastosowań, jak np. sterowanie maszyn [TvdM02], czy interfejs 3D CAD [NR99]. Użyte w porównaniu skróty zostały wyjaśnione w Tabeli 1.2. Ponieważ ogromna większość literatury służącej do stworzenia porównania jest anglojęzyczna, w celu uniknięcia nieścisłości obok terminów polskich autor podał angielskie odpowiedniki. W zestawieniu zaprezentowanym w Tabeli 1.1 nie uwzględniono skuteczności rozpoznawania układów dłoni i gestów opisywanych systemów. Szereg przyjętych założeń i ograniczeń oraz duża rozbieżność pomiędzy rozmiarem słowników występujących w tych systemach, uniemożliwia ich porównanie wyłącznie na podstawie współczynnika poprawności rozpoznania. Analizę porównawczą wybranych systemów autor przeprowadził w Dodatku C.

1. Wstęp 8 Tabela 1.1. Porównanie systemów rozpoznawania układu dłoni i gestów. Autor Lit. Cechy Klasyfikacja Zastos. M. Assan [AG98] - UMM NSL O. Al-Jarrah [AJH01] rotacja, wielkość dłoni SN, LR ArSL B. Bauer [BK02] - UMM GSL L. Bretzner [BL99] PW EDG interfejs 3D Y. Cui [CW00] układ dłoni AGS, WAD ASL G. Fang [FGC + 01] RS UMM CSL B. Henrik [HMM97] PW AGS, AS Alfabet ASL J. L. Hernandez [HRKL04] RS WDW ASL E. Holden [HO01] - 3DMD Auslan C. Huang [HH98] rotacja, wielkość dłoni SN Hopfielda TSL K. Imagawa [IMiT + 00] PW AGS, AS JSL M. W. Kadous [Kad96] RS WDW Auslan T. Kapuściński [KW05] układ, pozycja, rotacja UMM PJM dłoni, stereowizja M. Krüger [KvdMW07] FMG EDG, UMM BSL J. Kuch [KH95] - 3DMD ASL J. Lee [LK95] - 3DMD Alfabet ASL R. H. Liang [LO98] RS UMM TSL J. Marnik [Mar08] FMG EDG Alfabet PJM S. Marcel [MB99] - SN K. Murakami [MT91] RS SN JSL S. Myśliński [WM06] elektromiografia SN sterowanie protezą C. Nölker [NR99] końce palców, FMG SN 3D CAD E. Ong [OB04] obszar dłoni AS, CUMM CSL K. S. Patwardhan [PR07] PW analiza PW H. Sagawa [ST00] RS DW JSL N. S. M. Salleh [SJM + 06] środek masy, pole zbiór reguł MSL powierzchni, kontur i orientacja obszaru dłoni T. Starner [SWP98] współrzędne kartezjańskie UMM ASL i kątowe, orientacja i położenie dłoni M. Su [Su00] RS SN, LR TSL A. Sutherland [SW00] - DW ASL N. Tanibata [TSS02] środek masy, orientacja obszaru dłoni UMM JSL

1. Wstęp 9 Tabela 1.1. c.d. z poprzedniej strony. Autor Lit. Cechy Klasyfikacja Zastos. J. Triesch [TvdM02] FMG EDG sterowanie maszyn P. Vamplew [Vam96] RS SN Auslan C. Vogler [VM01] RS UMM ASL J. Wu [WG02] RS SN Alfabet CSL Y. Wu [WH00] FMG, powierzchnia, AGS, WAD długość konturu obszaru dłoni, suma długości krawędzi M. Yang [YAT02] RS SN ASL Skrót 3DMD AGS AS CUMM DW EDG FMG LR PW RS SN UMM WAD Tabela 1.2. Wyjaśnienie skrótów zastosowanych w Tabeli 1.1. Wyjaśnienie Trójwymiarowy Model Dłoni (ang. 3D Skeleton Hand Model) Analiza Głównych Składowych (ang. Principal Components Analysis) Analiza Skupień (ang. Data Clustering) Ciągłe Ukryte Modele Markowa (ang. Continuous Hidden Markov Model) Dopasowanie Wzorca (ang. Template Matching) Elastyczne Dopasowanie Grafów (ang. Elastic Graph Matching) Filtrowanie Metodą Gabor (ang. Gabor Filtering) Logika Rozmyta (ang. Fuzzy Logic) Podprzestrzeń Własna (ang. Eigenspace) Rękawiczka Sensoryczna (ang. Data Glove) Sieć Nuronowa (ang. Neuronal Network) Ukryte Modele Markowa (ang. Hidden Markov Model) Wielowymiarowa Analiza Dyskryminacyjna (ang. Multidimensional Discriminant Analysis) WDW Warunkowe Dopasowanie wzorca (ang. Conditional Template Matching) W Tabeli 1.1 autor przedstawił zestawienie systemów rozpoznawania układów dłoni i gestów, stosując kryterium mechanizmów w nich stosowanych. Zestawienie to omówiono poniżej. W literaturze najmocniej zaznaczone są trzy podejścia do zagadnienia akwizycji danych o układzie i położeniu dłoni: przy użyciu rękawiczek sensorycznych, potencjałów rejestrowanych na powierzchni skóry oraz przy pomocy systemów wizyjnych.

1. Wstęp 10 Pomysł dostarczania informacji o układzie dłoni przy użyciu rękawiczki sensorycznej pojawił się pod koniec lat 70. Działanie rękawiczki polega na zamianie ugięcia i odwodzenia palców na sygnały elektryczne przy użyciu wbudowanych w nią mechanicznych lub optycznych sensorów. Kombinacja uzyskanych sygnałów pozwala na jednoznaczną identyfikację układu dłoni. Względna pozycja dłoni (np. w odniesieniu do osoby wykonującej gesty) może być wykryta przy użyciu dodatkowego sensora elektromagnetycznego lub akustycznego. Za użyciem rękawiczek sensorycznych przemawia fakt, że bez dodatkowych zabiegów uzyskuje się przy ich pomocy dokładną informację o układzie (i położeniu) dłoni. Czynniki zewnętrzne, jak np. oświetlenie, nie wpływają na wyniki pomiaru. Rozwiązanie to ma jednak kilka poważnych wad. Dokładność pomiaru jest ograniczona przez występowanie zjawiska histerezy sensorów, wynikającego z ich własności fizycznych, oraz przemieszczania się dłoni względem rękawiczki podczas badania. Sensory atramentowe, stosowane najczęściej w konstrukcji rękawiczek, mają ograniczoną wytrzymałość mechaniczną. Zauważa się też wpływ temperatury otoczenia na ich działanie. Nie bez znaczenia jest również wysoki koszt rękawiczki. Głównymi argumentami przemawiającymi przeciwko stosowaniu rękawiczek sensorycznych są jednak: trudność w wykonaniu pewnych ruchów palców z powodu krępowania swobody dłoni, konieczność zastosowania odrębnych rękawiczek dla różnych rozmiarów dłoni, oraz sama potrzeba każdorazowego założenia rękawiczki w celu rozpoczęcia procesu komunikacji z używanym systemem. Spośród zebranych w Tabeli 1.1 systemów, z rękawiczek sensorycznych, jako źródła danych o układzie dłoni, korzystają [MT91, Kad96, Vam96, LO98, ST00, Su00, FGC + 01, VM01, WG02, HRKL02]. Kolejnym typem systemów są rozwiązania bazujące na miopotencjałach - sygnałach elektrycznych towarzyszących aktywności mięśni szkieletowych człowieka. Są one rejestrowane przy użyciu aktywnych elektrod na powierzchni skóry, bezpośrednio nad pracującym mięśniem, w procesie elektromiografii (EMG). Ponieważ ogromna większość mięśni odpowiadających za zginanie i odwodzenie palców dłoni, a także za ruchy całej dłoni w stosunku do reszty ręki, znajduje się w przedramieniu, pomiar miopotencjałów przeprowadzany jest najczęściej przy użyciu rękawa z wbudowanymi elektrodami. Po zarejestrowaniu, wzmocnieniu i wstępnej obróbce sygnałów następuje ich klasyfikacja, co skutkuje możliwością rozpoznania układu dłoni w danej chwili. Rozwiązania tego typu dostarczają informacji do sterowania inteligentnymi protezami dłoni. Zaletą użycia miopotencjałów jest duża szybkość działania systemu rozpoznawania układu dłoni oraz możliwość wykrywania niewielkich ruchów dłoni. Wadę natomiast stanowi skomplikowany etap klasyfikacji, szczególnie w przypadku rozpoznawania wielu gestów oraz wpływ zmęczenia mięśni na rejestrowane na skórze przebiegi. Jako przykłady systemów wykorzystujących miopotencjały do klasyfikacji układu dłoni wymienić można [ESB98, WM06].

1. Wstęp 11 Ostatnim, najciekawszym i najobszerniej opisanym sposobem akwizycji danych o położeniu i układzie dłoni, są systemy wizyjne [KH95, LK95, HMM97, AG98, HH98, SWP98, BL99, MB99, NR99, CW00, IMiT + 00, SW00, WH00, AJH01, HO01, BK02, TSS02, TvdM02, OB04, KW05, SJM + 06, KvdMW07, PR07, Mar08]. Eliminują one niedogodności związane z koniecznością używania przez operatora dodatkowych urządzeń (rękawiczki sensoryczne, elektrody umieszczane na powierzchni skóry). Właśnie ta klasa rozwiązań stała się, w związku ze swoją elastycznością i wygodą użytkowania, przedmiotem dalszych badań. Zalety tego podejścia okupione są jednak szeregiem problemów technicznych, które muszą zostać rozwiązane w celu poprawnego działania systemu. Konieczna staje się np. segmentacja obrazu w celu wyodrębnienia obszaru dłoni. Jest to zagadnienie złożone, ponieważ proces musi być niewrażliwy na czynniki zewnętrzne, jak np. zmienne oświetlenie dłoni, czy tło, na którym jest ona rejestrowana. Najprostszy sposób segmentacji segmentacja poprzez progowanie sprawdza się jedynie w przypadku rejestrowania dłoni na jednorodnym tle o dużej różnicy jasności w stosunku do jej obszaru. Jest to zbyt poważne ograniczenie, biorąc pod uwagę rozważany zakres zastosowań metody. Z tego też powodu w znanych z literatury systemach dąży się do uproszczenia fazy segmentacji. Jednym ze sposobów takiego uproszczenia jest zastosowanie markerów lub kolorowych rękawiczek. Markery są zazwyczaj umieszczane na końcach palców bezpośrednio na dłoni lub na czarnych rękawiczkach [LK95, SW00]. Ich kolor odróżnia się od koloru dłoni lub rękawiczki, umożliwiając ustalenie pozycji dłoni na obrazie w wyniku prostych operacji, np. analizy histogramu. Możliwe jest też wykorzystanie rękawiczek o różnokolorowych palcach [AG98, BK02, HO01], co pozwala na szybkie wyznaczenie położenia zarówno dłoni, jak i pojedynczych palców. Uzyskany przy użyciu markerów i kolorowych rękawiczek wzrost dokładności systemu wynika z wyeliminowania wpływu tła na proces segmentacji. Zasadniczą wadą stosowania markerów i rękawiczek jest natomiast konieczność każdorazowego umieszczania ich na dłoni. Wpływ tła na dokładność segmentacji można wyeliminować również poprzez nałożenie różnorakich ograniczeń na warunki, w których obraz dłoni jest rejestrowany. Obraz ruchomej dłoni rejestruje się na tle jednolitym (różnym od barwy skóry) [AG98, HO01, BK02, KW05], lub statycznym [OB04, PR07, SWP98, SW00, TSS02]. W literaturze podejmowane są też próby uzyskania metod segmentacji obrazu dłoni rejestrowanej na złożonym tle. Rozwiązania te opisują [CW00, TvdM02, HSS04]. Podejściem dobrze sprawdzającym się w przypadku wyznaczania zarówno obszarów dłoni jak i twarzy na obrazie, jest segmentacja na podstawie barwy skóry. Spośród opisanych w Tabeli 1.1 systemów rozpoznawania języków migowych z metody tej korzystają [MB99, SWP98, WH00, TSS02, KW05]. To właśnie tę metodę, ze względu na jej skuteczność i uniwersalność, autor wybrał do segmentacji obszaru dłoni na obrazie.

1. Wstęp 12 Przeanalizujmy teraz etap klasyfikacji. Spośród opisywanych publikacji część dotyczy rozwiązań wykrywających tylko układ dłoni [MB99, WH00], w szczególności litery alfabetów palcowych [LK95, HMM97, WG02, Mar08]. Pozostałe rozwiązania rozpoznają również gesty. Wyraźnie zarysowana jest wśród nich tendencja dzielenia systemów klasyfikacji gestów na dwa etapy: etap rozpoznawania układu i trajektorii ruchu dłoni, oraz następujący po nim etap rozpoznawania gestów. Podejście to przedstawia Rysunek 1.1. Rysunek 1.1. Schemat działania systemu wizyjnego rozpoznającego gesty dłoni. Formalizację koncepcji podziału klasyfikacji na podetapy znaleźć można w [Wür08] pod nazwą Organic Computing. Polega ona na dzieleniu domeny problemu na zadania, które są wykonywane przez autonomiczne podsystemy. Wszystkie podsystemy działają on-line i mogą dostarczać sobie nawzajem informacji wspomagających swoje działanie. W [NR00] dowiedziono, że rozdzielenie rozpoznawania gestów języków migowych na etapy: klasyfikacji układu dłoni i trajektorii jej ruchu, może przynieść znaczny wzrost wydajności i dokładności systemu. Jest to możliwe dzięki zastosowaniu mechanizmów dostosowanych do każdego spośród wymienionych rozwiązań, zamiast konieczności szukania całościowego mechanizmu klasyfikacji. W systemach rozpoznających gesty, etap klasyfikacji układu dłoni został wydzielony w [HH98, CW00, IMiT + 00, OB04, KvdMW07, PR07]. Istnieje szereg mechanizmów wykorzystywanych na etapie klasyfikacji. Są to najczęściej sieci neuronowe [MT91, HH98, MB99, NR99, Su00, AJH01, WG02, YAT02], Ukryte Modele Markowa [AG98, SWP98, FGC + 01, VM01, BK02, TSS02, OB04, KW05, KvdMW07], lub różne odmiany dopasowania wzorca (ang. pattern-matching) [Kad96, CW00, ST00, SW00, WH00, SJM + 06], w szczególności dopasowania grafu (ang. graph- -matching) [KH95, LK95, TvdM98, BL99, HO01, TvdM02, KvdMW07, Mar08] i analizy podprzestrzeni własnej (ang. eigenspace) [HMM97, IMiT + 00, PR07]. Należy podkreślić, że sieci neuronowe i dopasowanie wzorca to metody używane najczęściej do klasyfikacji układu dłoni. Ukryte Modele Markowa stosowane są natomiast do rozpoznawania gestów.

1. Wstęp 13 Ponieważ do klasyfikacji trajektorii ruchu dłoni w językach migowych z powodzeniem używane są Ukryte Modele Markowa, nie ma konieczności dalszego badania tego zagadnienia. Do tej pory nie został jednak zaproponowany efektywny sposób klasyfikacji obrazów dłoni w celu rozpoznawania jej układu. Dlatego też autor skoncentrował działania badawcze na tym obszarze. W celu osadzenia proponowanego tematu badań w kontekście rozwiązań znanych z literatury, autor przeanalizował systemy wizyjne wykorzystujące metody grafowe w podejściu syntaktyczno-strukturalnym. W grupie metod strukturalnych najczęściej spotykane jest rozpoznawanie układu dłoni na obrazie na podstawie elastycznego dopasowania grafów (ang. elastic graph-maching). Metoda ta polega na nakładaniu na obraz dłoni kolejno siatkowych (grafowych) modeli odpowiadających różnym jej układom. Jednocześnie obliczany jest koszt dopasowania węzłów siatki do punktów charakterystycznych znalezionych na obrazie. Dokładność rozpoznawania pozycji dłoni tą metodą jest wysoka, w porównaniu z innymi rozwiązaniami. Jej niepodważalną zaletę stanowi również niewrażliwość na złożone i ruchome tło. Niestety, opisany proces trwa bardzo długo, więc metoda ta nie może być zastosowania w efektywnych systemach rozpoznawania działających w czasie rzeczywistym. Wraz ze wzrostem liczby klas rozpoznawanych obiektów sytuacja się pogarsza z punktu widzenia złożoności obliczeniowej etapu dopasowania wzorca (ang. pattern-matching) następuje eksplozja kombinatoryczna [Pap02]. Nie są znane natomiast publikacje dotyczące rozpoznawania układu dłoni metodami grafowymi w podejściu syntaktycznym. 1.2. Cel i teza pracy Celem pracy było skonstruowanie metody rozpoznawania układu dłoni (ang. hand posture) na obrazie, opartej na modelu parsingu języków grafowych. Metodę przystosowano do obrazów układów dłoni Polskiego Języka Miganego (PJM ), który jest podstawowym środkiem komunikacji osób głuchych i niedosłyszących z osobami spoza tego środowiska. Badana metoda klasyfikacji obrazów charakteryzuje się niższą złożonością obliczeniową i większą uniwersalnością od używanego dotychczas podejścia bazującego na reprezentacji grafowej dłoni w procesie rozpoznawaniu obrazów dopasowania grafów (ang. graph-matching). Ta właściwość predestynuje ją do zastosowania w systemach wizyjnych w celu rozpoznawania układów dłoni w czasie rzeczywistym. Rozpoznawanie układu dłoni w prezentowanej metodzie przebiega w następujących etapach. 1. Obraz wejściowy podlega wstępnemu przetwarzaniu, w wyniku którego wyznaczany jest zbiór punktów charakterystycznych obrazu. 2. Budowana jest grafowa reprezentacja obrazu dłoni, w postaci umożliwiającej zastosowanie efektywnego algorytmu analizy syntaktycznej.

1. Wstęp 14 3. W procesie parsingu stworzonej reprezentacji grafowej rozpoznawany jest układ dłoni na obrazie. Teza pracy została sformułowana jak następuje. Syntaktyczne metody rozpoznawania układu dłoni oparte na parsingu języków grafowych pozwalają na uzyskanie najniższej możliwej złożoności obliczeniowej algorytmu rozpoznawania O(n 2 ), gdzie n jest liczbą wierzchołków grafu reprezentującego strukturę dłoni. W ramach niniejszej pracy wykonane zostały następujące zadania badawcze. 1. Zidentyfikowanie kroków wstępnego przetwarzania obrazu. 2. Zaprojektowanie algorytmu identyfikacji punktów charakterystycznych na obrazie dłoni. 3. Opracowanie formalnego modelu grafowego reprezentacji obrazów dłoni, dla którego możliwe jest zastosowanie algorytmu parsingu o możliwie najniższej złożoności obliczeniowej. 4. Opracowanie algorytmu rozpinania grafu opisującego przestrzenne relacje pomiędzy wyznaczonymi punktami obrazu dłoni. 5. Zdefiniowanie podklasy TETPL(k) gramatyk grafowych (w ramach klasy ETPL(k)) umożliwiającej generację grafowych reprezentacji obrazów dłoni. 6. Zdefiniowanie algorytmu parsera dla podklasy TETPL(k) gramatyk grafowych. 7. Zaprojektowanie i implementacja parsera podklasy TETPL(k) gramatyk grafowych. 8. Przeprowadzenie eksperymentów weryfikujących opracowaną metodę. 1.3. Przegląd pracy Rozdział 2 niniejszej pracy zawiera opis kroków wstępnego przetwarzania obrazu wejściowego dłoni, które skutkują wyznaczeniem zbioru punktów charakterystycznych obrazu. Opisano kolejno użyte metody: segmentacji obrazu na podstawie modelu barwy skóry ludzkiej, detekcji konturu dłoni oraz wyznaczania na jego podstawie punktów charakterystycznych obrazu. W rozważaniach położono nacisk na maksymalizację wydajności tego etapu przetwarzania. W Rozdziale 3 autor zaproponował algorytm tworzenia reprezentacji grafowej dłoni na podstawie uprzednio wyznaczonych punktów charakterystycznych. Sposób rozpinania grafu bazuje na anatomicznej budowie dłoni. Wprowadzono również dodatkowe operacje na reprezentacji, jak indeksowanie wierzchołków, oraz etykietowanie wierzchołków i krawędzi. Umożliwia to poprawne rozpoznanie układu dłoni przy użyciu efektywnego mechanizmu analizy syntaktycznej.

1. Wstęp 15 Rozdział 4 zawiera formalny model grafowy. Model ten został zdefiniowany przez autora dla celów rozpoznawania obrazów dłoni. Autor zbadał wpływ specyfiki tej klasy obrazów na ograniczenia formalne nałożone na znaną z literatury klasę ETPL(k) gramatyk grafowych [Fla93] oraz wprowadził konieczne modyfikacje tych gramatyk. W Rozdziale 4, autor zaprezentował również efektywny (O(n 2 )) algorytm parsera dla zdefiniowanej podklasy gramatyk, oznaczonej TETPL(k). Rozdziały 3 i 4 zawierają zatem podstawowe wyniki przeprowadzonych w ramach niniejszej rozprawy prac badawczych. W Rozdziale 5 znaleźć można formalny projekt systemu rozpoznawania układu dłoni na obrazie przy użyciu opisanych w poprzednich rozdziałach metod. Projekt został przedstawiony zgodnie z notacją UML. Rozdział 6 zawiera wyniki przeprowadzonych na potrzeby niniejszej pracy eksperymentów rozpoznawania układu dłoni. Autor opisał w nim również sposób generowania obrazów używanych w eksperymentach oraz zbadał wpływ niewielkich zniekształceń obrazu na skuteczność klasyfikacji. Rozdział 7 zawiera podsumowanie niniejszej pracy. Oceniono w nim stopień realizacji celu pracy. Zaproponowano również dalsze badania mające na celu rozwinięcie opisywanej metody. Dodatek A niniejszej pracy zawiera opis Polskiego Języka Miganego (PJM ), wraz z jego krótkim rysem historycznym, oraz uwagami co do specyfiki tego języka na tle innych narodowych języków migowych. Dodatek B zawiera znane z literatury definicje dotyczące gramatyk grafowych klasy ETPL(k), od których rozpoczęto rozważania nad formalną stroną procesu syntaktycznego rozpoznawania obrazów. Dodatek C zawiera zestawienie wyników klasyfikacji obrazów w wizyjnych systemach rozpoznawania układu dłoni i gestów języków migowych znanych z literatury. Autor umieścił tam również komentarz do możliwości przeprowadzenia analizy porównawczej przytoczonych wyników. W celu zwiększenia przejrzystości pracy, Rozdziały 2, 3 i 4, opisujące kolejne etapy przetwarzania, zostały opisane zgodnie z następującym schematem. Każdy z nich rozpoczyna się wstępem, w którym identyfikowane są zadania do rozwiązania na danym etapie. Następnie wprowadzane są podrozdziały odpowiadające kolejnym krokom przetwarzania w obrębie danego etapu. Rozdział 3 zawiera dodatkowo podrozdział, w którym zgromadzono reprezentacje grafowe wygenerowane dla zbioru obrazów referencyjnych. W Rozdziale 4, z uwagi na obszerną część teoretyczną, został natomiast wydzielony podrozdział zawierający formalny model gramatyk grafowych.

2. Wstępne przetwarzanie obrazu dłoni 16 2. Wstępne przetwarzanie obrazu dłoni 2.1. Wprowadzenie W klasycznym, decyzyjno-teoretycznym podejściu do rozpoznawania obrazów, etap wstępnego przetwarzania obrazu dłoni ma na celu ekstrakcję wektora cech charakterystycznych. Ekstrahowane mogą być dowolne cechy od geometrycznych [AJH01, SWP98, TSS02], aż po uzyskiwane w wyniku złożonego filtrowania [NR99]. Wektor cech opisujących dany obraz jest podstawą do jego rozpoznania w procesie klasyfikacji. W podejściu syntaktyczno-strukturalnym, obraz reprezentowany jest przez strukturę. W tym przypadku etap wstępnego przetwarzania dostarcza zbioru składowych pierwotnych (w przypadku analizy sceny), lub innych punktów charakterystycznych obrazu. Do ich wyznaczenia stosowany jest szeroki zakres metod, np. detekcja krawędzi [SJM + 06, WH00], lub filtrowanie [TvdM02, KvdMW07]. Zbiór tak wyznaczonych punktów jest równoważny zbiorowi wierzchołków reprezentacji grafowej obrazu. (a) (b) (c) Rysunek 2.1. Wykrywanie krawędzi na obrazie: (a) znak Y Międzynarodowego Języka Migowego, (b) krawędzie wykryte metodą Canny dla współczynników threshold = [0.1 0.2], σ = 5, (b) krawędzie wykryte metodą Sobel dla współczynnika threshold = 0.1. Ze względu na specyfikę obrazów dłoni, właściwym podejściem wydaje się wyznaczanie punktów charakterystycznych na podstawie detekcji krawędzi obrazu. Pozwoliłoby to na wykrycie zarówno konturu dłoni, jak i zidentyfikowanie ugiętych palców przesłaniających obszar śródręcza. To z kolei stanowiłoby dobrą podstawę do stworzenia reprezentacji grafowej dłoni zawierającej kompletną informację o układzie palców. W celu weryfikacji tego pomysłu autor przetestował różne metody wykrywania krawędzi znane z literatury

2. Wstępne przetwarzanie obrazu dłoni 17 [TF91, TK97, Pra01]. Najlepsze wyniki dla obrazów dłoni dały: Operator Sobell a i Metoda Canny. Krawędzie wykryte na obrazie dłoni za pomocą tych operatorów przedstawiono na Rysunku 2.1. Niestety, operacje opisane powyżej powodowały wykrywanie dla danego układu dłoni nie tylko zgiętych palców na tle śródręcza, ale również innych linii papilarnych (szczególnie głębokich bruzd śródręcza) jako krawędzi dla danego układu dłoni. Krawędzie rozpoznawane w obrębie dłoni dla dwóch różnych osób, przy różnych warunkach oświetlenia, obrazuje Rysunek 2.2. Rysunek 2.2. Krawędzie wykryte operatorem Canny dla tego samego układu dłoni dwóch różnych osób przy zmiennych warunkach oświetlenia. Dodatkowe krawędzie odpowiadające bruzdom papilarnym wydają się nieprzydatne w procesie rozpoznawania układu dłoni. Już w XIX w. wyniki badań Sir Francisa Galtona opublikowane przez The Royal Institution dowiodły, że układ linii papilarnych jest różny u poszczególnych osób (nawet u bliźniąt jednojajowych). I chociaż dotyczy to głównie linii papilarnych palców dłoni, pozostałe, głębsze bruzdy śródręcza również podlegają tej zasadzie. Co więcej, ponieważ bruzdy te mają różną orientację, już niewielkie zmiany kierunku oświetlenia dłoni powodują powstawanie cieni w innych bruzdach, co z kolei przekłada się na wykrywanie różnych krawędzi przez wspomniane operatory. Pewną poprawę sytuacji przyniosło zastosowanie przekształcenia rozmywania (ang. blur), zmniejszenia kontrastu

2. Wstępne przetwarzanie obrazu dłoni 18 obrazu, oraz zmniejszenia jego rozdzielczości ([Pra01]), w celu eliminacji linii (bruzd) papilarnych. Często jednak w wyniku tych operacji następowała utrata informacji o układzie palców. Jak wspomniano wcześniej, dla dwóch dłoni o różnych proporcjach, rejestrowanych w odmiennych warunkach oświetlenia, zbiór krawędzi wykrytych na ich obszarze znacznie się różni (Rysunek 2.2). W związku z niską przydatnością cech wewnątrz obszaru dłoni w procesie rozpoznawania jej układu, autor postanowił wykorzystać kontur dłoni jako jedyne źródło informacji o układzie dłoni na obrazie. Detekcję konturu można przeprowadzić przy użyciu opisanych wcześniej operatorów wykrywania krawędzi, jak np. Sobell, czy Canny. Dla zastosowania rozważanego w rozprawie są to jednak metody zbyt czasochłonne. W celu maksymalizacji wydajności i dokładności procesu detekcji konturu dłoni proponuję następującą sekwencję operacji. Należy najpierw poddać obraz segmentacji w celu identyfikacji obszaru dłoni. Wynikiem tej operacji jest obraz binarny, na którym wyróżniony jest obszar dłoni. Wyznaczany jest środek masy obszaru dłoni, który służyć będzie za punkt odniesienia dla pozostałych punktów charakterystycznych obrazu. Następnie na bazie uzyskanego obrazu binarnego wyznaczany jest kontur obszaru dłoni. W przypadku obrazów binarnych, a więc o optymalnym modelu krawędzi z punktu widzenia ich rozpoznawania, do detekcji konturu dłoni zastosować można metody o wiele bardziej efektywne, niż operatory detekcji krawędzi. Zakładając jednak, że na obrazie znajduje się tylko jeden obszar odpowiadający obiektowi, a pozostała część obrazu to tło, o wiele bardziej wydajną metodą jest wykrywanie konturu przy użyciu algorytmu śledzenia krawędzi. Poważnym problemem pojawiającym się na tym etapie jest to, że ten sam układ dłoni, rejestrowany przez kamerę pod nieznacznie różnym kątem, powoduje wyznaczenie różniących się konturów (Rysunek 2.2). Podobny skutek ma rejestrowanie danego układu wykonywanego przez dłonie o różnych proporcjach. Jednakże wszystkie powyższe obrazy, jeśli zawierają dłoń w tym samym układzie, powinny być przyporządkowane do jednej klasy w procesie rozpoznawania. Kontury dłoni rozpoznawanej i wzorcowej nie powinny być zatem porównywane punkt po punkcie. W celu poprawnego rozpoznania układu dłoni należy zaproponować taką metodę identyfikacji punktów charakterystycznych obrazu, która będzie niewrażliwa na tego typu zniekształcenia. W niniejszym rozdziale autor zaproponował algorytm wyznaczania punktów charakterystycznych obrazu dłoni na podstawie wzorca uzyskanego poprzez aproksymację (z daną tolerancją) konturu dłoni odcinkami. W prezentowanej w niniejszej pracy metodzie, etap wstępnego przetwarzania obrazu składa się więc z następujących kroków. 1. Segmentacja obrazu wejściowego w celu wyróżnienia obszaru dłoni. 2. Wyznaczenie środka masy obszaru dłoni, będącego punktem odniesienia dla pozostałych punktów charakterystycznych obrazu. 3. Detekcja konturu obszaru dłoni.

2. Wstępne przetwarzanie obrazu dłoni 19 4. Wyznaczanie punktów charakterystycznych obrazu dłoni poprzez aproksymację konturu obszaru dłoni odcinkami. Powyższe kroki omówione zostały kolejno w dalszej części rozdziału. W wyniku przejścia wszystkich wymienionych kroków, uzyskiwany jest zbiór punktów charakterystycznych obrazu dłoni. Punkty te wykorzystywane są jako wierzchołki reprezentacji grafowej obrazu dłoni. Taki zbiór wierzchołków stanowi podstawę do dalszych etapów przetwarzania: rozpinania grafu oraz jego klasyfikacji w wyniku analizy syntaktycznej. Na potrzeby dalszych rozważań autor poczynił następujące założenia dotyczące przetwarzanych obrazów: osoba migająca stoi naprzeciw kamery, osoba migająca posiada rękaw o mankiecie o barwie różnej od barwy skóry, który znajduje się na wysokości nadgarstka, rejestrowana dłoń znajduje się na tle o barwie różnej od barwy skóry, zapewnione jest dobre i w miarę równomierne oświetlenie dłoni, dłoń jest rejestrowana w ten sposób, że nadgarstek jest przecinany przez dolną krawędź obrazu, założona jest stała wielkość dłoni na obrazie. Przyjęte założenia nie wpływają w znaczący sposób na zakres zastosowań opisywanej metody. Punkty dotyczące ustawienia i ubioru osoby migającej są powszechnie przyjętymi zwyczajami podczas wykonywania gestów języków migowych w sytuacjach oficjalnych, np. przez lektorów języków migowych w telewizyjnych programach informacyjnych, lub na konferencjach naukowych. Skalowanie i kontrolę orientacji obrazu dłoni zapewniają systemy śledzenia dłoni (ang. hand tracking). Jest to zagadnienie obszernie opisane w literaturze, np. [HW94, For01a]. 2.2. Segmentacja obrazu Pierwszym krokiem etapu wstępnego przetwarzania obrazu, jest jego segmentacja w celu wyznaczenia obszaru dłoni. Krok ten przeprowadzany jest przy użyciu metody segmentacji na podstawie modelu barwy skóry ludzkiej [HLM01, JYJ07], która okazała się skuteczna w wielu znanych z literatury systemach. Wynikiem tego kroku jest obraz binarny, na którym wyróżniony jest obszar dłoni. Dłoń ludzka, jako obiekt o nieregularnym kształcie, po oświetleniu nie uzyskuje jednorodnej barwy na całej powierzchni. Punkty wchodzące w skład obszaru dłoni na obrazie przyjmują barwy z ciągłego i skończonego podzbioru przestrzeni barw. O poprawności klasyfikacji tych punktów, jako należących do obszaru dłoni, decyduje dobór właściwego modelu barw [For01a]. Właściwości tego modelu powinny być takie, aby bryła barw była

2. Wstępne przetwarzanie obrazu dłoni 20 jak najbardziej skupiona (o możliwie najmniejszym stosunku pola powierzchni do objętości bryły), co pozwoli na przybliżenie tej bryły np. poprzez wielowymiarowy rozkład Gaussa. Wpływ wyboru przestrzeni barw wykorzystywanej w modelu barwy skóry ludzkiej 1 na przydatność modelu barw w procesie segmentacji obszarów dłoni i twarzy opisano w [SS99]. Do zbudowania statycznego modelu barwy skóry autor wybrał znormalizowany model RGB [Pra01]. Standardowy model RGB nie jest odpowiedni do opisywania barwy skóry ludzkiej. W przestrzeni RGB trzy składowe (R, G, B) reprezentują nie tylko kolor, ale również luminancję. Luminancja, definiowana przez L = R + G + B, jest cechą obrazu, która może się różnić w zależności od warunków oświetlenia i tym samym nie może stanowić podstawy do segmentacji obrazu na rozłączne obszary dłoni i tła. Luminancja może zostać usunięta z przestrzeni barw poprzez proces normalizacji, który został opisany poniżej w Równaniach 2.1 2.3 [Pra01]. r = R L (2.1) g = G L (2.2) b = 1 (r + g) (2.3) gdzie luminancja jest definiowana jako: L = R + G + B Kolor skóry poszczególnych osób (w obrębie danej rasy) różni się znacznie mniej w zakresie barwy (chrominancji) niż jasności (luminancji). Można więc stwierdzić, że barwa skóry ludzkiej zawiera się w niewielkim obszarze przestrzeni barw. Autor zdefiniował model barwy skóry ludzkiej na podstawie obrazów dłoni (różnych osób, zarejestrowanych zarówno w świetle dziennym jak i sztucznym) poprzez wybranie z nich niewielkich obszarów skóry i zliczenie znormalizowanych wartości dla koloru czerwonego i zielonego dla każdego piksela. Model ten przybliżony został następnie za pomocą wielowymiarowego rozkładu Gaussa (Rysunek 2.3 (b)). Na tej podstawie zdefiniowano funkcję prawdopodobieństwa przynależności punktu obrazu do obszaru dłoni. Po jej zastosowaniu na obrazie wejściowym, następuje progowanie. Wynikiem jest obraz binarny, na którym wyróżniony jest obszar o barwie zgodnej z modelem barwy skóry ludzkiej (Rysunek 2.3 (c)). 1 Warto w tym miejscu wspomnieć o możliwości wykorzystania dynamicznego modelu barwy skory [SS99, SMHL00] (przy czym model statyczny jako prostszy pozostaje znacznie bardziej popularny). Użycie modelu dynamicznego skutkuje zwiększeniem dokładności segmentacji obszaru dłoni i twarzy przy zmiennych warunkach oświetlenia.

2. Wstępne przetwarzanie obrazu dłoni 21 (a) (b) (c) (d) (e) (f) Rysunek 2.3. Segmentacja obszaru dłoni na podstawie modelu barwy skóry: (a) obraz wejściowy, (b) estymowany wielowymiarowym rozkładem Gauss a model barwy skóry, (c) obraz po segmentacji, (d) obraz binarny poddany erozji, (e) wynikowy obraz binarny po dylatacji, (f) iloczyn wynikowego obrazu binarnego i obrazu wejściowego. Uzyskany tą metodą obszar odpowiadający dłoni jest często wystrzępiony na brzegach. Zdarzają się też wyspy wewnątrz obszaru dłoni. Problem ten występuje najczęściej w przypadku jej nierównomiernego oświetlenia. W przypadku niejednorodnego tła może się też zdarzyć uzyskanie po procesie segmentacji pojedynczych punktów, lub małych obszarów, tła błędnie wyróżnionych jako obszar dłoni. W celu minimalizacji wpływu wymienionych wcześniej błędów segmentacji autor zaproponował przeprowadzenie serii standardowych przekształceń morfologicznych obrazu [Pra01]. Na binarnym obrazie uzyskanym w procesie segmentacji (Rysunek 2.3 (c)), zastosowano kolejno operatory erozji (Rysunek 2.3 (d)), oraz dylatacji (Rysunek 2.3 (e)) 2. Erozja przy użyciu elementu strukturalnego o kształcie koła, powoduje eliminację błędnie wykrytych w obszarze tła niewielkich obszarów zbliżonych do barwy skóry. Wygładzane są również poszarpane krawędzie dłoni. Operacja dylatacji, prowadzona przy pomocy elementu strukturalnego o kształcie koła (ale o nieco większej niż poprzednio średnicy), powoduje odbudowanie zerodowanych krawędzi dłoni oraz wypełnienie wysp wewnątrz 2 Kombinacja operacji erozji i dylatacji znana jest w literaturze pod nazwą operacji otwarcia [Ser82].

2. Wstępne przetwarzanie obrazu dłoni 22 jej obszaru. Tak uzyskany obraz binarny odpowiada obszarowi dłoni na obrazie wejściowym, co pokazano na Rysunku 2.3 (e). Jedynym poważnym ograniczeniem, nakładanym na obrazy wejściowe przez proces segmentacji obrazu na podstawie modelu barwy skóry ludzkiej, jest konieczność rejestracji dłoni na tle, które nie zawiera obszarów o barwie zbliżonej do barwy skóry. Zdecydowaną zaletą jest natomiast niska wrażliwość na zmienne warunki oświetlenia sceny oraz wysoka, w porównaniu z innymi metodami, dokładność rozpoznawania obszarów dłoni. Na potrzeby modułu segmentacji obrazu dłoni, wchodzącego w skład toru przetwarzania wstępnego obrazu, autor zdecydował się na segmentację na podstawie modelu barwy skóry, a następnie korygowanie uzyskanego obrazu binarnego za pomocą operacji erozji i dylatacji. Model barwy skóry autor zdefiniował na podstawie zbioru obrazów wzorcowych. Zaimplementował również w ramach prac badawczych opisany algorytm segmentacji. W celu wykorzystania przekształceń erozji i dylatacji, użyto darmowej biblioteki przetwarzania obrazów 3. Dla zbioru obrazów wzorcowych autor uzyskał niemal idealną segmentację obszaru dłoni z obrazu wejściowego. Powyższe rozważania na temat segmentacji obrazu dłoni na podstawie modelu barwy skóry podsumowano w Algorytmie 2.1. Na jego potrzeby zdefiniowano następujące symbole: X - wejściowy obraz kolorowy dłoni, B - obraz binarny, M - model barwy skóry ludzkiej. Funkcje i procedury, używane w Algorytmie 2.1, opisano poniżej. bin image = COLOUR BASED SEGM(X, M) Segmentacja obrazu X przy pomocy funkcji prawdopodobieństwa przynależności do obszaru skóry (wyznaczanego na podstawie modelu barwy skóry M). Wynikiem działania funkcji jest obraz binarny bin image z wyróżnionym obszarem dłoni. ERODE(B) Przeprowadza operację erozji obrazu binarnego B przy użyciu wbudowanego elementu strukturalnego. DILATE(B) Przeprowadza operację dylatacji obrazu binarnego B przy użyciu wbudowanego elementu strukturalnego. 3 Intel Integrated Performance Primitives (IPP). http://www.intel.com/support/performancetools/libraries/ipp/.

2. Wstępne przetwarzanie obrazu dłoni 23 Algorytm 2.1 Metoda segmentacji obrazu dłoni Wejście: Obraz wejściowy X, model barwy skóry ludzkiej M. Wyjście: Obraz binarny z wyróżnionym obszarem dłoni B. B := B := COLOUR BASED SEGM(X, M) ERODE(B) DILATE(B) 2.3. Wyznaczanie środka masy obszaru dłoni Kolejnym krokiem etapu przetwarzania wstępnego jest wyznaczenie środka masy (ang. centre of mass, centroid) obszaru dłoni. Jest on jednym z punktów charakterystycznych obszaru dłoni na obrazie [Mat75] i wejdzie w skład reprezentacji grafowej dłoni jako jeden z jej wierzchołków. Do dalszych rozważań niezbędne jest zdefiniowanie funkcji charakteryzujących obiekt na obrazie. Obiekt O na obrazie X przedstawia Rysunek 2.4. Rysunek 2.4. Obiekt O na obrazie X. Niech obraz X, zawierający obiekt O, składa się z punktów o współrzędnych kartezjańskich (x, y), gdzie (x, y) X. Dla każdego punktu o współrzędnych (x, y), niech funkcja b(x, y) charakteryzująca obiekt O na obrazie X ma postać: { 1 dla punktów należących do obiektu O b(x, y) = 0 dla pozostałych punktów obrazu Wówczas, pole powierzchni P obiektu O, znajdującego się na obrazie X, wyrazić można następującym równaniem [Pra01]: P O = b(x, y)dxdy

2. Wstępne przetwarzanie obrazu dłoni 24 Natomiast, środek masy obiektu O, oznaczany przez COM O, jest wyrażony przez następujące równanie [Pra01]: gdzie: COM O = (x, y) (2.4) x = xb(x, y)dxdy b(x, y)dxdy y = yb(x, y)dxdy b(x, y)dxdy Warto zaznaczyć, że w powyższych wzorach obraz traktowany jest jako obszar o nieskończonej rozdzielczości. W implementacji tych zależności będziemy brać pod uwagę dyskretne obrazy o skończonej rozdzielczości. Ponieważ środek masy obiektu wyznacza centralny punkt obszaru dłoni, jest dobrym punktem odniesienia dla pozostałych punktów charakterystycznych obrazu, które zostaną zidentyfikowane na późniejszych etapach przetwarzania. Wyznaczony w powyżej opisany sposób punkt odpowiada wierzchołkowi, który będzie zawarty w grafowej reprezentacji dłoni (Rysunek 2.5). Ponieważ wierzchołek ten będzie wierzchołkiem startowym podczas procesu wywodzenia gramatycznego, zostanie on oznaczony etykietą terminalną s. (a) (b) Rysunek 2.5. Wyznaczanie środka masy obszaru dłoni: (a) obraz wejściowy, (b) obszar dłoni z zaznaczonym środkiem masy. Na potrzeby toru przetwarzania wstępnego obrazu do wyznaczania środka masy obszaru dłoni autor wykorzystał funkcje z darmowej biblioteki przetwarzania obrazów 4. 4 Intel Integrated Performance Primitives (IPP).

2. Wstępne przetwarzanie obrazu dłoni 25 2.4. Detekcja konturu dłoni W wyniku segmentacji obrazu dłoni, uzyskano obraz binarny złożony z obszaru dłoni, oraz dopełniającego go obszaru tła. W celu wyznaczenia punktów charakterystycznych obrazu dłoni, należy przeprowadzić detekcję konturu jej obszaru. Jako punkt wyjścia wykorzystano algorytm śledzenia krawędzi bug follower [Pra01]. Idea algorytmu bug follower polega na przemieszczaniu po obrazie binarnym kursora, zgodnie z określonymi zasadami. Jeśli funkcja b(x, y), definiująca obiekt na obrazie, jest określona jak w poprzedniej sekcji, algorytm bug follower można wprowadzić za [Pra01] jak następuje. 1. Umieść kursor w punkcie startowym o współrzędnych (x 0, y 0 ), dla którego b(x 0, y 0 ) = 1, 2. Poruszaj się prosto do momentu znalezienia punktu b(x, y) = 0, 3. Zapamiętaj współrzędne (x s, y s ) ostatniego punktu, dla którego b(x s, y s ) = 1, 4. Skręć w lewo, 5. Przemieszczaj kursor po obrazie, do momentu osiągnięcia punktu (x s, y s ), zgodnie z zasadą: a) b(x, y) = 0 skręć w lewo, b) b(x, y) = 1 dodaj punkt do konturu, skręć w prawo. Należy wspomnieć, że wyjście poza krawędź obrazu jest traktowane jak poruszanie się po obszarze o wartości funkcji b(x, y) = 0. Wykrywanie konturu za pomocą wprowadzonego powyżej algorytmu, dla przykładowego obrazu binarnego, zostało zaprezentowane na Rysunku 2.6. Algorytm bug follower został dostosowany do wyznaczania konturu dłoni na obrazie (a następnie zaimplementowany). Przed przedstawieniem opracowanego przez autora algorytmu detekcji konturów dłoni, zostaną omówione problemy zidentyfikowane podczas rozważania opisywanego zagadnienia (rozwiązania tych problemów zostały uwzględnione w algorytmie). Przyglądając się obrazom dłoni można zauważyć, że w przypadku znaków E, F, G, O, P, S, T, Em, Om, Ps i 5s dłoń jest ustawiona w stosunku do kamery w taki sposób, że palce otaczają obszar nie należący do obszaru dłoni. Przeprowadzenie detekcji takiego dodatkowego konturu i dołączenie uzyskanych w ten sposób informacji do reprezentacji obrazu, podniesie jej moc opisową. Na potrzeby dalszych rozważań, autor wprowadził poniżej dodatkowe pojęcia. Definicja 2.1. Konturem podstawowym c p obszaru dłoni nazywamy kontur otaczający obszar o maksymalnym polu powierzchni, spośród wyznaczonych na obrazie konturów.

2. Wstępne przetwarzanie obrazu dłoni 26 Rysunek 2.6. Śledzenie krawędzi algorytmem bug follower. Definicja 2.2. Konturem wewnętrznym c w obszaru dłoni nazywamy kontur otaczający obszar o maksymalnym polu powierzchni, spośród wyznaczonych na obrazie konturów, z wyjątkiem konturu podstawowego. W przypadku wymienionych powyżej układów wykrywane powinny być dwa kontury na obrazie binarnym: podstawowy oraz wewnętrzny. Oznacza to konieczność dwukrotnego zastosowania algorytmu śledzenia konturu. Kolejnym problemem, który musi być brany pod uwagę w celu zapewnienia poprawnego wykrycia konturu podstawowego i konturu wewnętrznego (jeśli istnieje), jest odpowiednie dobranie punktów początkowych (x 0, y 0 ) dla algorytmu (Rysunek 2.6). Na podstawie obserwacji przeprowadzonych na zbiorze obrazów referencyjnych dłoni, autor zaproponował sposób wyboru takich punktów początkowych. W przypadku konturu podstawowego, jako punkt (x 0, y 0 ) wybierany jest punkt środka masy obszaru dłoni. Zapewnia to uzyskanie wartości funkcji b(x 0, y 0 ) = 1 dla wszystkich obrazów referencyjnych. Kursor porusza się z tego punktu w lewo w celu znalezienia

2. Wstępne przetwarzanie obrazu dłoni 27 punktu (x s, y s ). Gwarantuje to, że dla obrazów bez zniekształceń podczas wyszukiwania pierwszego punktu konturu podstawowego, kursor nie natrafi na kontur wewnętrzny. Pozwala to uniknąć błędnego rozpoznania c p. Trudniejsze wydaje się poprawne zaproponowanie punktu (x 0, y 0 ) w przypadku wyznaczania konturu wewnętrznego dłoni. Poniżej autor opisał sposób wyznaczenia tego punktu odpowiedni dla zbioru obrazów referencyjnych. (a) E (b) F (c) G (d) O (e) P (f) S (g) T (h) Em (i) Om (j) 5s Rysunek 2.7. Wyznaczanie punktu startowego x 0 dla wyznaczania konturu wewnętrznego algorytmem bug follower. Przede wszystkim zauważmy, że poziomy odcinek poprowadzony pomiędzy punktami należącymi do konturu podstawowego tak, że ma on największą możliwą długość, zawsze przecina kontur wewnętrzny. Właściwość ta została zobrazowana na Rysunku 2.7. Co więcej, okazuje się, że wystarczy sprawdzić długość poziomych odcinków łączących punkty konturu podstawowego od połowy wysokości obszaru dłoni w górę, ponieważ poniżej tego punktu najdłuższy odcinek nigdy nie występuje w przypadku układów posiadających krawędź wewnętrzną (a jeśli występuje, świadczy to o znacznym zniekształceniu obrazu). Poszukiwanie konturu wewnętrznego należy rozpocząć zatem od 1 długości wyznaczonego odcinka, przyjmując koniec o mniejszej współrzędnej x za jego początek (dla zbioru 3 obrazów referencyjnych jest to punkt, dla którego b(x, y) = 1). Należy też wykluczyć możliwość detekcji konturu podstawowego jako konturu wewnętrznego, w sytuacji jak np. na Rysunku 2.8. Ostatni problem zidentyfikowany przez autora dotyczy obrazów silnie zniekształconych. Polega on na tym, że obrazy dłoni rejestrowane przy niekorzystnych warunkach oświetlenia mogą zawierać podobszary, które w wyniku opisanego wcześniej procesu segmentacji na podstawie modelu barwy dłoni, nie zostaną sklasyfikowane jako należące do dłoni. Jeśli takie wyspy nie zostaną wypełnione na etapie segmentacji, to napotkane

2. Wstępne przetwarzanie obrazu dłoni 28 Rysunek 2.8. Pominięcie wyznaczania konturu wewnętrznego dla obrazu dłoni w układzie Cm. przez kursor w trakcie wyznaczania punktu (x s, y s ) w drodze z punktu (x 0, y 0 ), powodują uzyskanie błędnego wyniku działania algorytmu śledzenia krawędzi. Problem można ominąć, zakładając minimalną dopuszczalną długość konturu podstawowego i wewnętrznego dłoni. W przypadku, gdy długość wyznaczonego konturu jest krótsza od założonego progu, wyspa na obrazie binarnym jest wypełniana jedynkami i poszukiwanie punktu (x s, y s ) dla danego konturu jest kontynuowane poprzez umieszczenie kursora w ostatnim punkcie, dla którego b(x, y) = 1 (przed napotkaniem wyspy ). Uwzględniając przedyskutowane powyżej problemy, autor zaproponował Algorytm 2.2 wykrywania konturów podstawowego i wewnętrznego. Funkcje i procedury, używane w tym algorytmie, opisano poniżej. c = MAIN PERIM(B) Wykrywa kontur podstawowy w następujących krokach. 1. Umieść kursor w punkcie startowym o współrzędnych (x 0, y 0 ) = COM O, dla którego b(x 0, y 0 ) = 1. 2. Skieruj kursor w lewo. 3. Poruszaj się prosto do momentu znalezienia punktu b(x, y) = 0. 4. Zapamiętaj współrzędne (x s, y s ) ostatniego punktu, dla którego b(x s, y s ) = 1. 5. Skręć w lewo. 6. Przemieszczaj kursor po obrazie, do momentu osiągnięcia punktu (x s, y s ), zgodnie z zasadą: a) b(x, y) = 0 skręć w lewo, b) b(x, y) = 1 dodaj punkt do konturu, skręć w prawo. 7. Jeśli znaleziony kontur jest krótszy, od zadanej stałej: a) wypełnij obszar wartościami 1, b) wróć do punktu 2 (kontynuuj poszukiwanie punktu (x s, y s )).

2. Wstępne przetwarzanie obrazu dłoni 29 c = INTER PERIM(B) Wykrywa kontur wewnętrzny (jeśli istnieje) w następujących krokach. 1. Wyznacz najdłuższy poziomy odcinek pomiędzy punktami należącymi do konturu podstawowego. 2. Umieść kursor w punkcie startowym o współrzędnych (x 0, y 0 ), należącym do wyznaczonego odcinka i leżącym w odległości 1 długości odcinka od jego końca o mniejszej 3 wartości współrzędnej x, przy czym b(x 0, y 0 ) = 1. 3. Skieruj kursor w prawo. 4. Dalsze kroki zgodnie z punktami 3-5 procedury MAIN PERIM(B). 5. Jeśli (x s, y s ) c p to przerwij obraz nie ma konturu wewnętrznego. 6. Dalsze kroki zgodnie z punktami 6-7 procedury MAIN PERIM(B). Algorytm 2.2 Metoda detekcji konturów dłoni Wejście: Binarny obraz wejściowy B. Wyjście: Kontur podstawowy c p, kontur wewnętrzny c w. c p := c w := c p = MAIN PERIM(B) c w = INTER PERIM(B) Wynik działania algorytmu detekcji konturów podstawowego i wewnętrznego dla układu dłoni odpowiadającego znakowi O przedstawiono na Rysunku 2.9. Rysunek 2.9. Kontur podstawowy i wewnętrzny wyznaczony dla dłoni w układzie O. Na potrzeby toru przetwarzania wstępnego obrazu, autor zaimplementował zaproponowany powyżej algorytm detekcji konturu podstawowego i konturu wewnętrznego dłoni na obrazie binarnym.

2. Wstępne przetwarzanie obrazu dłoni 30 2.5. Metoda wyznaczania punktów charakterystycznych obrazu dłoni W celu uwzględnienia międzyosobniczych różnic anatomicznych w budowie dłoni, należy użyć mechanizmów zapewniających budowanie tej samej reprezentacji dla dwóch różnych dłoni w tym samym układzie. Istotna jest też niewrażliwość procesu rozpoznawania pozycji dłoni na drobne zmiany w osiowym ułożeniu dłoni względem kamery. Z myślą o tych wymaganiach autor opracował algorytm przekształcający wyznaczone w poprzednich krokach kontury dłoni na szablon danego układu dłoni poprzez proces aproksymacji krawędzi. Na jego podstawie wyznaczane są punkty charakterystyczne obrazu dłoni, które stanowić będą wierzchołki jego reprezentacji grafowej. Metoda wyznaczania punktów charakterystycznych obrazu dłoni polega na iteracyjnym podziale krzywej konturu dłoni na fragmenty. Wyznaczany jest punkt krzywej o maksymalnej odległości od prostej, która przechodzi przez punkty początku i końca badanego fragmentu konturu. Jeśli wyznaczona odległość jest mniejsza lub równa zadanej tolerancji δ, badana krzywa jest przybliżana odcinkiem o końcach w swoich punktach krańcowych. W przeciwnym wypadku następuje podział krzywej w wyznaczonym punkcie o maksymalnej odległości od prostej. Cała operacja jest powtarzana dla każdej z nowo utworzonych w wyniku podziału krawędzi, aż do momentu przybliżenia całości konturu odcinkami. Wynikiem działania metody jest zbiór odcinków będących przybliżeniem konturu dłoni wyznaczonego na obrazie wejściowym. Generowane zbiory odcinków, oraz wpływ wartości współczynnika δ na działanie algorytmu, przedstawiono na Rysunku 2.10. (a) (b) (c) Rysunek 2.10. Wynik działania metody wyznaczania punktów charakterystycznych obrazu dłoni, oraz wpływ współczynnika δ na generowane zbiory odcinków: (a) δ = 1, (b) δ = 5, (c) δ = 10. Należy zaznaczyć, że w przypadku detekcji na obrazie binarnym dwóch konturów: podstawowego i wewnętrznego, operację wyznaczania punktów charakterystycznych poprzez aproksymację odcinkami trzeba przeprowadzić dwukrotnie dla każdego z konturów osobno.

2. Wstępne przetwarzanie obrazu dłoni 31 W celu formalnego zdefiniowania omówionego algorytmu autor wprowadził następujące definicje. Definicja 2.3. Konturem c obszaru dłoni nazywamy listę współrzędnych uporządkowanych punktów (x i, y i ), i = 1,..., n takich, że tworzą one ciągłą krzywą o końcach w punktach (x 1, y 1 ) i (x n, y n ), przy czym punkt (x 1, y 1 ) leży w sąsiedztwie 4-spójnym punktu (x n, y n ), oraz punkty (x i, y i ), i = 1... n 1 są uporządkowane w ten sposób, że punkt (x i+1, y i+1 ) znajduje się w sąsiedztwie 4-spójnym punktu (x i, y i ). Na potrzeby kolejnej definicji wprowadzono za Cormenem [CLRS97] dwa pojęcia. Lista punktów rozumiana będzie jako uporządkowany zbiór punktów. Symbol oznacza operator konkatenacji takich list. Definicja 2.4. Niech k będzie listą punktów o współrzędnych (x i, y i ), i = 1,..., n takich, że tworzą one ciągłą krzywą o początku w punkcie (x 1, y 1 ) i końcu w punkcie (x n, y n ). Zbiór złożony z m takich krzywych k j, j = 1,..., m, nazywamy zbiorem krzywych składowych konturu dłoni c i oznaczamy przez: jeśli: m K = j=1 k j c = k 1 k 2... k m Definicja 2.5. Niech k będzie listą punktów o współrzędnych (x i, y i ), i = 1,..., n takich, że tworzą one ciągłą krzywą o początku w punkcie (x 1, y 1 ) i końcu w punkcie (x n, y n ). Zbiorem D odległości punktów (x i, y i ), (x i, y i ) k, od prostej wyznaczonej przez punkty (x 1, y 1 ) i (x n, y n ), nazywamy zbiór: gdzie: D = {Dist(x i, y i )}, i = 1,..., n Dist(x i, y i ) = Ax i + By i + C A2 B 2 A = y n y 1 x n x 1 B = 1 C = x ny 1 x 1 y n x n x 1 Przy czym Dist(x 1, y 1 ) = Dist(x n, y n ) = 0

2. Wstępne przetwarzanie obrazu dłoni 32 Definicja 2.6. Przyjmijmy oznaczenia jak w Definicji 2.5. Punkt o współrzędnych (x max, y max ), gdzie (x max, y max ) k nazywamy punktem o maksymalnej odległości od prostej przechodzącej przez punkty o współrzędnych (x 1, y 1 ) oraz (x n, y n ), (x 1, y 1 ), (x n, y n ) k jeśli: Dist(x max, y max ) = max D = max i=1,...,n {Dist(x i, y i )} W przypadku znalezienia kilku punktów o równej maksymalnej wartości Dist, za punkt (x max, y max ) przyjmuje się pierwszy ze znalezionych punktów. Definicja 2.7. Niech tolerancja, oznaczana przez δ, będzie stałą rzeczywistą nieujemną. Maksymalna odległość Dist(x max, y max ), Dist(x max, y max ) D, punktu (x max, y max ), od prostej przechodzącej przez punkty o współrzędnych (x 1, y 1 ) i (x n, y n ), (x 1, y 1 ), (x max, y max ), (x n, y n ) k jest zgodna z zadaną tolerancją δ, jeśli: Dist(x max, y max ) δ (a) (b) (c) Rysunek 2.11. Wyznaczanie wierzchołków grafowej reprezentacji obrazu dłoni przy pomocy zastosowanej metody: (a) uzyskane odcinki, (b) wyznaczone na obrazie punkty, (c) wierzchołki grafu. (Kolorem czerwonym oznaczono wierzchołek o etykiecie s, kolorem niebieskim wierzchołki o etykiecie k.) Opisana powyżej metoda wyznaczania punktów charakterystycznych obrazu dłoni buduje wzór kształtu dłoni z binarnego obrazu wejściowego. Kolejnym krokiem jest wyznaczenie z tego wzoru punktów charakterystycznych, które staną się wierzchołkami grafowej reprezentacji obrazu dłoni. Punktami tymi są naturalnie końce wyznaczonych odcinków (Rysunek 2.11). Wyznaczone w ten sposób wierzchołki na obecnym etapie (poza informacją o przynależności do danego konturu), nie będą rozróżniane. Otrzymają

2. Wstępne przetwarzanie obrazu dłoni 33 jedynie etykietę k, jeśli zostały wyznaczone na konturze podstawowym i etykietę w, jeśli wyznaczono je na konturze wewnętrznym. Sposób docelowego etykietowania wierzchołków grafowej reprezentacji obrazu zostanie przedstawiony w dalszych rozdziałach. Wynikiem działania opisanej metody jest zbiór W, zawierający punkty charakterystyczne obrazu dłoni (wyznaczone na konturze podstawoweym lub konturach: podstawowym i wewnętrznym). Ostatnim krokiem tego etapu jest dołączenie do zbioru W wyznaczonego wcześniej wierzchołka o etykiecie s, odpowiadającego środkowi masy obszaru dłoni. Tak uzyskany zbiór stanowić będzie zbiór V wierzchołków reprezentacji grafowej obrazu dłoni. Algorytm 2.3 przedstawia zaproponowaną metodę wyznaczania punktów charakterystycznych obrazu dłoni. Na jego potrzeby zdefiniowano następujące symbole: c - przetwarzany kontur obszaru dłoni, c p - kontur podstawowy obszaru dłoni, c w - kontur wewnętrzny obszaru dłoni, k, kr 1, kr 2 - krzywe zawierające się w konturze dłoni c takie, że kr 1 kr 2 = k K - zbiór krzywych składających się na kontur dłoni, p m - punkt o maksymalnej odległości od prostej przechodzącej przez końce krzywej, δ - tolerancja, W - zbiór punktów charakterystycznych obrazu dłoni wyznaczonych za pomocą opisywanej metody, V - zbiór wyznaczonych wierzchołków reprezentacji grafowej obrazu. Dodatkowe funkcje i procedury, używane w Algorytmie 2.3, opisano poniżej. res = EMPTY(K) Sprawdza, czy zbiór krzywych K jest pusty. p 1 = FIRST(k) Zwraca punkt początkowy p 1 krzywej k. [p m, Dist(p m )] = DISTANCE(k) Zwraca punkt p m krzywej o maksymalnej odległości od prostej, która przechodzi przez punkty początku i końca tej krzywej, oraz tę odległość Dist(p m ). [kr 1, kr 2 ] = DIVIDE(k, p m ) Dzieli krzywą k w punkcie p m na dwie krzywe kr 1 i kr 2 tak, że punkt p m kr 1. REMOVE(k, K) Usuwa krzywą k ze zbioru K. ADD POINT(W, k) Dodaje do zbioru W punkt końcowy krawędzi k.

2. Wstępne przetwarzanie obrazu dłoni 34 REM WRIST(W ) Usuwa ze zbioru punktów charakterystycznych obrazu W, wyznaczonych na konturze podstawowym, punkty odpowiadające końcom odcinka będącego linią mankietu, lub nadgarstka na krawędzi obrazu wejściowego. Algorytm 2.3 Metoda wyznaczania punktów charakterystycznych obrazu dłoni Wejście: Kontur podstawowy dłoni c p, kontur wewnętrzny dłoni c w, tolerancja δ, środek masy dłoni COM O. Wyjście: Zbiór wierzchołków reprezentacji obrazu dłoni V. W := V := for all c in {c p, c w } do kr 1 := kr 2 := K := c W FIRST(c) while not EMPTY(K) do k := pierwszy element z K [p m, Dist(p m )] := DISTANCE(k) if Dist(p m ) δ then ADD POINT(W, k) REMOVE(k, K) else [kr1, kr2] := DIVIDE(p m, k) REMOVE(k, K) K := K kr1 K := K kr2 end if end while if c = c p then REM WRIST(W ) end if end for V = W COM O Opracowana przez autora metoda wyznaczania punktów charakterystycznych obrazu została przez niego zaimplementowana i stanowi część systemu przedstawionego w Rozdziale 5.

3. Metoda generacji grafowej reprezentacji obrazu dłoni 35 3. Metoda generacji grafowej reprezentacji obrazu dłoni 3.1. Wprowadzenie Po etapie wstępnego przetwarzania obrazu i wyznaczeniu z niego zbioru punktów charakterystycznych, należy zbudować reprezentację obrazu, przedstawiającą wzajemne relacje przestrzenne pomiędzy znalezionymi punktami. Metoda generacji reprezentacji grafowej obrazu zależy w znacznym stopniu od rodzaju przetwarzanych obrazów, oraz w przypadku metod syntaktycznych od klasy gramatyk grafowych, dla których konstruowany będzie parser. Musi ona zapewnić rozpinanie grafu na wierzchołkach, oraz etykietowanie zarówno jego krawędzi, jak i wierzchołków, w sposób umożliwiający poprawne przyporządkowanie danego obrazu do odpowiedniej klasy. Aby było to możliwe, nie może zaistnieć sytuacja, w której dla dwóch obrazów należących do różnych klas zostaną zbudowane nierozróżnialne reprezentacje. Zagadnienie komplikuje się dodatkowo w przypadku obrazów zniekształconych, gdzie przynależność do danej klasy obrazu ma charakter rozmyty. Podstawowym wymaganiem stawianym przed algorytmami budowania reprezentacji jest zatem możliwość wygenerowania rozróżnialnych grafów dla zbioru obrazów wzorcowych. Zdecydowałem się na rozpoznawanie wszystkich układów prawej dłoni, które są używane podczas komunikacji przy użyciu Polskiego Języka Miganego. W znakach migowych Polskiego Języka Miganego występuje 48 układów palców u każdej z rąk [Szc88] (patrz Rysunek A.1 w Dodatku A). Grafowa reprezentacja obrazu dłoni dla każdego spośród tych 48 układów musi być jednoznaczna i zapewniać jego poprawne rozpoznanie. Proces budowania reprezentacji grafowej rozpatrywanej klasy obrazów powinien zapewnić jej również niewrażliwość na różnice anatomiczne budowy dłoni. Wymiary i proporcje (długości do szerokości dłoni) poszczególnych osób różnią się. Różnice występują zarówno pomiędzy płciami, między badanymi tej samej płci, a nawet pomiędzy lewą i prawą dłonią badanego. Wyniki badań statystycznych dla populacji n = 500 (po 250 kobiet i mężczyzn w wieku 18-30 lat) przedstawiłem w Tabeli 3.1 za [RU97].

3. Metoda generacji grafowej reprezentacji obrazu dłoni 36 Tabela 3.1. Proporcje dłoni na podstawie badań statystycznych na populacji n = 500 osób. Dane przytoczone za [RU97]. min [cm] max [cm] średnia [cm] odchylenie standardowe mężczyźni L 15.30 21.00 18.89 0.88 długość P 15.40 20.80 18.90 0.87 dłoni kobiety L 14.80 20.40 17.22 0.92 P 14.80 20.40 17.22 0.93 mężczyźni L 7.30 9.40 8.45 0.40 szerokość P 7.20 9.40 8.42 0.40 dłoni kobiety L 6.70 8.80 7.48 0.38 P 6.60 8.70 7.42 0.37 Na potrzeby rozpatrywanej klasy obrazów w niniejszej pracy autor zaproponował algorytm generacji ich grafowych reprezentacji, który spełnia następujące wymagania: zapewnia poprawne rozpoznanie zbioru obrazów referencyjnych, uwzględnia specyfikę anatomicznej budowy dłoni, uwzględnia indywidualne różnice w budowie dłoni, ma dużą moc opisową pozwalającą na budowanie reprezentacji dla obrazów nieznacznie zniekształconych i rozmytych (w przypadku dużego stopnia zniekształcenia powinny być używane gramatyki stochastyczne i parsing z korekcją błędów [Fu77, Fla90]), jest zaprojektowany pod kątem dalszego rozwoju metody dla obrazów silnie zniekształconych. W celu osiągnięcia grafu w postaci przydatnej do klasyfikacji w procesie analizy syntaktycznej, etap jego generacji składa się z następujących kroków. 1. Rozpinanie grafu na wyznaczonych wierzchołkach. 2. Etykietowanie krawędzi grafu. 3. Indeksowanie wierzchołków grafu. 4. Etykietowanie wierzchołków grafu. Niniejszy rozdział zawiera opis metody generacji grafowej reprezentacji obrazów dłoni, wraz z przeglądem wygenerowanych reprezentacji dla zbioru obrazów wzorcowych. Wszystkie spośród zaprezentowanych tu algorytmów zostały opracowane i zaimplementowane przez autora tej pracy. Ich opis można znaleźć również w [Myś09]. 3.2. Algorytm rozpinania grafu Pierwszym krokiem generacji grafowej reprezentacji obrazu dłoni, jest rozpięcie krawędzi na wyznaczonym w poprzednim etapie przetwarzania zbiorze wierzchołków reprezentacji grafowej obrazu. Powinny być one połączone krawędziami w taki sposób, aby

3. Metoda generacji grafowej reprezentacji obrazu dłoni 37 zachować informację o wzajemnych relacjach przestrzennych pomiędzy elementami obrazu, które są przez te wierzchołki reprezentowane. Przedstawiona w niniejszej pracy klasa obrazów jest specyficzna, ponieważ relacje przestrzenne pomiędzy punktami charakterystycznymi obrazu muszą uwzględniać budowę anatomiczną dłoni. Zamiast używać znanych z literatury algorytmów rozpinania grafów (np. [KW95, Gud98]), dla rozpatrywanej klasy obrazów autor zaprojektował tego typu algorytm od podstaw. Podejście takie zostało podyktowane koniecznością wygenerowania takiego grafu, który spełniałby warunki definicyjne języka grafowego, dla którego możliwy jest parsing. W strukturze grafu zapisane zostaną przy tym istotne w procesie parsingu zależności przestrzenne pomiędzy punktami charakterystycznymi obrazu dłoni. Z drugiej strony, specyfika rozpatrywanej klasy obrazów wymaga zapewnienia elastyczności na poziomie reprezentacji grafowej jest to spowodowane wspomnianymi już różnicami indywidualnymi w budowie anatomicznej dłoni, oraz koniecznością zapewnienia niewrażliwości na drobne zmiany ułożenia dłoni względem kamery podczas rozpoznawania jej układu. Taka sytuacja jest powszechnie spotykana w przypadku wykonywania gestów języków migowych. Osoba gestykulująca zazwyczaj w sytuacji życia codziennego nie jest bowiem w stanie zapewnić idealnego ustawienia dłoni w stosunku do kamery. Co więcej, nawet jeśli byłoby to możliwe, metoda rozpoznawania powinna nakładać na użytkowników jak najmniej tego typu ograniczeń. Reprezentacje grafowe dłoni będą rozpinane zgodnie ze specyfiką jej budowy anatomicznej. Należy zatem podzielić układy dłoni na takie, w których struktura dłoni jest zorientowana pionowo i takie, w których struktura ta jest zorientowana poziomo. W celu sformalizowania tych rozważań autor wprowadził następujące definicje. Definicja 3.1. Niech O będzie obszarem dłoni złożonym z punktów (x i, y j ), gdzie i = 1,..., n i j = 1,..., m, na binarnym obrazie B. Obrazem dłoni o orientacji pionowej nazywamy obraz, dla którego: max(x i, y j ) min(x i, y j ) max(x i, y j ) min(x i, y j ) x i x i y j y j Definicja 3.2. Niech O będzie obszarem dłoni złożonym z punktów (x i, y j ), gdzie i = 1... n i j = 1... m, na binarnym obrazie B. Obrazem dłoni o orientacji poziomej nazywamy obraz, dla którego: max(x i, y j ) min(x i, y j ) > max(x i, y j ) min(x i, y j ) x i x i y j y j

3. Metoda generacji grafowej reprezentacji obrazu dłoni 38 Przykłady obrazów dłoni o orientacji pionowej i poziomej przedstawiono na Rysunku 3.1. (a) (b) Rysunek 3.1. Przykładowe obrazy dłoni o orientacji: (a) pionowej, (b) poziomej. Na bazie powyżej poczynionych założeń, autor zaprojektował algorytm generujący graf po podaniu na jego wejściu listy współrzędnych wierzchołków wraz z nadanymi etykietami. Etykiety te odpowiadają konturowi, na którym wierzchołki zostały wyznaczone. Pierwszym krokiem jest sortowanie wierzchołków zgodnie z Regułą 3.1, zaprezentowaną poniżej. Na potrzeby dalszych rozważań, niech g będzie grafem reprezentującym dany obraz, V g zbiorem jego wierzchołków. Reguła 3.1. Sortowanie punktów obszaru dłoni odpowiadających wierzchołkom grafu g. 1. Na pierwszym miejscu umieszczany jest wierzchołek o etykiecie s, odpowiadający środkowi masy obszaru dłoni, 2. Kolejne wierzchołki konturu podstawowego v i = (x i, y i ), gdzie v i V g, i = 1... n, o etykiecie wierzchołkowej k, posortowane zgodnie z następującą zasadą. a) Dla obrazów dłoni o orientacji pionowej: Jeśli y i y i+1, to y i < y i+1 ; w przeciwnym wypadku x i x i+1. b) Dla obrazów dłoni o orientacji poziomej: Jeśli x i x i+1, to x i < x i+1 ; w przeciwnym wypadku y i y i+1. 3. Jeśli wykryty został kontur wewnętrzny, jego wierzchołki, o etykiecie wierzchołkowej w, sortowane są analogicznie, jak dla konturu podstawowego, oraz umieszczane na końcu listy. Takie uszeregowanie wierzchołków pozwala na dodatkowe uporządkowanie tworzonego grafu i znacząco zwiększa prawdopodobieństwo uzyskania tożsamych grafów dla dwóch obrazów zawierających ten sam układ dłoni. W dalszych etapach prezentowanej metody rozpinania grafu jego wierzchołki przetwarzane są zgodnie z kolejnością uzyskaną na etapie sortowania.

3. Metoda generacji grafowej reprezentacji obrazu dłoni 39 OY OY w 1 w 2 w d w 3 v α v OX OX (a) (b) Rysunek 3.2. Wybieranie krawędzi do rozpięcia (obraz dłoni o orientacji pionowej): (a) idea doboru krawędzi na podstawie miary niezgodności, (b) kąt wychylenia badanej krawędzi od osi OY. W celu zdefiniowania algorytmu rozpinania grafów dla danej klasy obrazów należy ustalić jasne kryteria pozwalające na podjęcie decyzji o połączeniu konkretnych wierzchołków krawędzią grafu. Na potrzeby opisywanego zastosowania wybrano dwie przesłanki do wyboru krawędzi. Przyglądając się uważnie budowie dłoni ludzkiej, łatwo jest zauważyć, że poszczególne jej elementy, jak np. palce, złożone są z ciągu segmentów o podobnym kierunku. Ponieważ dłoń na obrazach wejściowych jest zorientowana nadgarstkiem w dół, przy budowaniu reprezentacji grafowej preferowane będą krawędzie jak najmniej odchylone od pionu (lub poziomu, dla pewnego podzbioru układów). Kolejnym kryterium jest odległość pomiędzy łączonymi wierzchołkami powinna być jak najmniejsza. Pozwoli to na dokładniejsze zapisanie wzajemnych relacji pomiędzy wierzchołkami przy pomocy atrybutu kierunku, który wchodzi w skład opisu każdej krawędzi w tworzonej grafowej reprezentacji obrazu dłoni. Kombinacja tych czynników pozwoli ustalić, połączenie danego wierzchołka z którym z pozostałych wierzchołków reprezentacji grafowej zapewni najlepsze odwzorowanie budowy anatomicznej dłoni w generowanej strukturze grafu. Można więc przyjąć, że istnieje pewna miara niezgodności dla każdej możliwej krawędzi rozpoczynającej się w danym wierzchołku. Im jej wartość mniejsza, tym krawędź jest bardziej pożądana. Koncepcję wprowadzoną powyżej zilustrujmy przykładem. Niech Rysunek 3.2 (a) przedstawia wierzchołki wyznaczone z obrazu dłoni o orientacji pionowej. Rozpatrzmy wierzchołek v jako początek potencjalnej krawędzi, natomiast wierzchołki w 1, w 2 i w 3 jako jej potencjalne końce. Bazując na wcześniej sformułowanych kryteriach, należy wybrać krawędź o jak najmniejszej wartości miary niezgodności, tj. jak najmniejszym kącie wychylenia od osi OY oraz jak najmniejszej długości (powyższe składniki zostaną

3. Metoda generacji grafowej reprezentacji obrazu dłoni 40 uwzględnione z pewnymi wagami). W rozpatrywanym przypadku do reprezentacji grafowej obrazu dodana zostanie krawędź (v, w 1 ), jako krawędź o niższej wartości zaproponowanej miary. Jako kolejna dodana zostałaby krawędź (v, w 2 ), ponieważ długość krawędzi powinna wpływać na formułowaną miarę w mniejszym stopniu, niż kąt wychylenia od osi. Po przeanalizowaniu powyższego przykładu, sformułujmy algorytm wyznaczania takiej miary. Dla każdego wierzchołka v na liście, zaczynając od wierzchołka reprezentującego środek masy obszaru dłoni, wyznaczana jest odległość d do pozostałych wierzchołków, oraz wartość funkcji trygonometrycznej kąta α pomiędzy prostą przechodzącą przez dwa badane punkty, oraz osią OY (Rysunek 3.2 (b)). Następnie wyliczana jest suma obu wartości (po uwzględnieniu dobranej eksperymentalnie stałej A) i zapisywana jako miara azymutowo-odległościowa ψ vw (Rysunek 3.3). Rysunek 3.3. Miara azymutowo-odległościowa ψ krawędzi pomiędzy łączonymi wierzchołkami. Dla przejrzystości pokazano przedział α [ 90, 90 ). Dla przedziału [ 180, 90 ) i [90, 180 ) analogicznie. Po wyznaczeniu wyżej wymienionych wartości dla wszystkich wierzchołków, wybierany jest ten (wierzchołek w na Rysunku 3.2 (b)), dla którego miara azymutowo-odległościowa ma najmniejszą wartość. Między tak wybranym wierzchołkiem w a wierzchołkiem aktualnie badanym v prowadzona jest krawędź grafu, jeśli nie istnieje jeszcze krawędź z wierzchołka v do w (ta sama krawędź, przeciwnie skierowana). Jeśli taka krawędź już istnieje, wybierana jest kolejna najbliższa zera wartość miary miara azymutowo-odległościowej.

3. Metoda generacji grafowej reprezentacji obrazu dłoni 41 Odpowiadająca jej krawędź jest sprawdzana w ten sam sposób. Cała operacja powtarzana jest dla pozostałych wierzchołków. Ujmując to formalnie, można napisać, co następuje. Definicja 3.3. Niech v, w V g będą wierzchołkami takimi, że v w. Miarę azymutowo- -odległościową krawędzi wychodzącej z wierzchołka v i wchodzącej do wierzchołka w definiuje się jak następuje. Dla obrazów dłoni o orientacji pionowej: ψ vw = d + A (cos(2 (α π 2 ) + 1) Dla obrazów dłoni o orientacji poziomej: ψ vw = d + A (cos(2 α) + 1) gdzie: A jest dobraną eksperymentalnie stałą 1, d odległością pomiędzy wierzchołkami v i w 2, α kątem odchylenia krawędzi od osi OY, gdzie α 180, 180 ). Definicja 3.4. Niech V g = {v, w 1,..., w m } będzie zbiorem wierzchołków grafu g. Zbiór wartości miar azymutowo-odległościowych krawędzi powiązany z wierzchołkiem v definiuje się następująco. Ψ v = {ψ vw1,..., ψ vwm }, gdzie ψ vwi, i = 1,..., m, jest miarą azymutowo-odległościową krawędzi określoną jak w Definicji 3.3. Definicja 3.5. Niech V g = {v, w 1,..., w m } będzie zbiorem wierzchołków grafu g, Ψ v będzie zbiorem wartości miar azymutowo-odległościowych krawędzi określonym jak w Definicji 3.4. Wierzchołek w j jest wierzchołkiem końcowym krawędzi rozpoczynającej się w wierzchołku v o najmniejszej wartości miary azymutowo-odległościowej, jeśli dla krawędzi o początku w wierzchołku v i końcu w wierzchołku w j zachodzi: ψ vwj = min Ψ v = min i=1,...,m {ψ vw i } 1 Dla modelu prezentowanego w rozprawie, przyjęto na podstawie eksperymentów: A = 90. 2 Odległość ta jest wyrażona w jednostkach umownych.

3. Metoda generacji grafowej reprezentacji obrazu dłoni 42 Jak wyraźnie widać, wybór łączonych wierzchołków przy użyciu opisanego powyżej sposobu, uwzględnia oba założone kryteria (odległości pomiędzy łączonymi wierzchołkami i odchylenie krawędzi od orientacji dłoni). Wartość funkcji trygonometrycznej przybiera najmniejsze wartości dla kątów α bliskich 0 i 180 w przypadku obrazów o orientacji pionowej i kątów α bliskich 90 i 270 w przypadku obrazów o orientacji poziomej, co powoduje przybliżenie miary azymutowo-odległościowej ψ do zera. Podnosi więc szanse uwzględnienia krawędzi w reprezentacji grafowej obrazu danego układu dłoni. Podobnie rzecz się ma z długością d preferowane są krótkie krawędzie. Zdefiniujmy teraz formalnie algorytm rozpinania grafu na wyznaczonych wierzchołkach. W tym celu wprowadźmy następujące symbole. V - zbiór wierzchołków, v - badany wierzchołek początkowy krawędzi, v V, w - badany wierzchołek końcowy krawędzi, w V, e - krawędź łącząca badane wierzchołki, ψ min - najniższa miara azymutowo-odległościowa krawędzi znaleziona dla badanego wierzchołka v, ψ vw - miara azymutowo-odległościowa dla krawędzi zaczynającej się w wierzchołku v i kończącej w wierzchołku w, d - długość krawędzi, α - kąt pomiędzy krawędzią a osią OY, o - orientacja obrazu dłoni, G - budowana reprezentacja grafowa. Dodatkowe funkcje i procedury używane w Algorytmie 3.1 zostały opisane poniżej: SORT(V ) Sortuje wierzchołki zgodnie z Regułą 3.1. len := LENGTH(v, w) Zwraca długość odcinka łączącego punkty v i w. ang := ANGLE(v, w) Zwraca kąt pomiędzy prostą przechodzącą przez punkty v i w, oraz osią OY. ψ := AZIM DIST(d, α, o) Zwraca miarę azymutowo-odległościową. res := CHECK(v, w) Zwraca wartość logiczną w zależności od tego, czy w opisie charakterystycznym grafu G znajduje się już krawędź pomiędzy wierzchołkami v, w. STORE(e, v, w, d, α) Zapisuje dane badanej krawędzi w e. ADD(G,e) Dodaje krawędź e do grafu G. Wynik działania algorytmu rozpinania krawędzi przedstawia Rysunek 3.4.

3. Metoda generacji grafowej reprezentacji obrazu dłoni 43 Algorytm 3.1 Rozpinanie grafu Wejście: Zbiór wierzchołków V, orientacja obrazu dłoni o. Wyjście: Reprezentacja grafowa obrazu G. SORT(V ) G := for all v in V do ψ min := 0 e := for all w in V do ψ vw, d, α := 0 if w v then d := LENGTH(v, w) α := ANGLE(v, w) ψ vw = AZIM DIST(d, α, o) if ψ min = or ψ min > ψ vw then if not CHECK(v, w) then STORE(e, v, w, d, α) end if end if end if end for {w} if e then ADD(G, e) end if end for {v} (a) (b) Rysunek 3.4. Grafy rozpięte na wierzchołkach dla układów: (b) Bk, (c) Bkz.

3. Metoda generacji grafowej reprezentacji obrazu dłoni 44 3.3. Etykietowanie krawędzi grafu Po zbudowaniu struktury grafu, należy zdecydować, jakie inne informacje powinny być zapisane w reprezentacji grafowej w celu prawidłowego rozpoznania opisywanego przez nią obrazu. Konieczny jest zatem wybór formalnego modelu grafowego do opisu rozpatrywanej klasy obrazów. Jak wspomniano wcześniej, celem niniejszej pracy jest opracowanie metody rozpoznawania obrazów dłoni za pomocą efektywnego parsingu języków grafowych. Strukturą grafową, dla której zdefiniowano efektywny algorytm parsingu, są IE grafy [Fla93]. IE grafy (Definicja B.1 w Dodatku B) to rodzina zindeksowanych grafów o jednoznacznie skierowanych krawędziach. Są one podklasą rodziny zorientowanych grafów o zaetykietowanych wierzchołkach i krawędziach, tzw. grafów EDG [JRV82]. Wierzchołki grafów IE reprezentują obiekty (składowe pierwotne) obrazu, a krawędzie relacje dwuargumentowe zachodzące pomiędzy obiektami badanej struktury. W rozpatrywanym przypadku, wierzchołki reprezentują zidentyfikowane punkty charakterystyczne obrazu dłoni a krawędzie opisują relacje pomiędzy tymi punktami. Należy rozważyć opisany model formalny w kontekście obrazów dłoni. Stosowanie IE grafów do opisu tej klasy obrazów będzie możliwe, jeśli istnieje sposób generacji ich reprezentacji spełniających warunki definicyjne zarówno tych grafów, jak i generującej je gramatyki ETPL(k) [Fla93]. Zbadany zostanie również wpływ niewielkich zniekształceń obrazu na poprawność generowania reprezentacji. Rozważania te, przeprowadzone poniżej, zilustrowano przykładami. Wprowadźmy teraz regułę etykietowania krawędzi grafu. Reguła 3.2. Niech α będzie kątem odchylenia krawędzi e E od osi OY, gdzie α ( 180, 180. Funkcja etykietowania krawędzi θ taka, że θ : α λ, zwraca etykiety zgodnie z następującymi zasadami: ( 82.5, 97.5 λ = a ( 67.5, 82.5 λ = b ( 52.5, 67.5 λ = c ( 37.5, 52.5 λ = d ( 22.5, 37.5 λ = e ( 7.5, 22.5 λ = f ( 7.5, 7.5 λ = g α (7.5, 22.5 λ = h (22.5, 37.5 λ = i (37.5, 52.5 λ = j (52.5, 67.5 λ = k (67.5, 82.5 λ = l ( 97.5, 180 λ = θ 1 (α + 180 ) 82.5, 180 ) λ = θ 1 (α 180 )

3. Metoda generacji grafowej reprezentacji obrazu dłoni 45 Rysunek 3.5. Zasada przypisywania etykiet krawędziowych. Wizualizacja Reguły 3.2 została przedstawiona na Rysunku 3.5. Przedyskutujmy teraz krytyczny problem związany z etykietowaniem krawędzi grafów, reprezentujących pewne strukturalnie podobne układy dłoni. Na Rysunku 3.6 umieszczono struktury grafów, rozpiętych przy użyciu zaproponowanego powyżej algorytmu, odpowiednio: dla obrazu dłoni w układzie Bk oraz dla dwóch obrazów dłoni w układzie Bkz wykonanego poprawnie oraz zniekształconego, który różni się od niego stopniem ugięcia palców. Sytuacja występowania niepełnego układu dłoni podczas wykonywania gestów jest powszechna w przypadku gestów języków migowych. (Dodatkowe informacje o specyfice Polskiego Języka Miganego umieszczono w Dodatku A). Zbudowane dla tych układów IE grafy przedstawiono natomiast na Rysunku 3.7. (a) (b) (c) Rysunek 3.6. Struktura grafów dla układów: (a) Bk, (b) zniekształcony Bkz, (c) Bkz.

3. Metoda generacji grafowej reprezentacji obrazu dłoni 46 Po dokładnym przestudiowaniu zaprezentowanych grafów okazuje się, że reprezentacja dla układu Bk (Rysunek 3.7 (a)) jest różna od reprezentacji dla podręcznikowo wykonanego układu Bkz (Rysunek 3.7 (c)). Wątpliwości pojawiają się jednak po porównaniu układów Bk i niepełnego Bkz (Rysunek 3.6 (b)). IE grafy uzyskane dla tych dwóch obrazów są izomorficzne, co oznacza, że reprezentacje grafowe stworzone dla badanych obrazów nie opisują ich w sposób jednoznaczny. To pociąga za sobą poważne konsekwencje oba obrazy zostaną rozpoznane błędnie na etapie parsingu jako obraz dłoni w układzie Bk. (a) (b) (c) Rysunek 3.7. Grafy IE dla układów dłoni: (a) znak Bk, (b) zniekształcony znak Bkz, (c) znak Bkz.

3. Metoda generacji grafowej reprezentacji obrazu dłoni 47 Problem przedstawiony powyżej autor próbował rozwiązać poprzez rozszerzenie zbioru etykiet krawędziowych Γ. Efektem była taka zmiana funkcji etykietującej krawędzie grafu, że kolejne etykiety przypisywano krawędziom dla mniejszych zakresów kątów. Kolejne eksperymenty wykazały nieprawidłowość takiego rozwiązania. W wyniku takiego działania utracona zostaje bowiem główna zaleta budowanej reprezentacji grafowej, czyli jej elastyczność. Konieczne więc wydaje się rozszerzenie grafu reprezentującego obraz dłoni (przy zachowaniu zbioru Γ) o dodatkowe informacje. Pojawia się pytanie, jaka dodatkowa informacja mogłaby zostać zapisana w reprezentacji grafowej obrazu dłoni, aby zapewnić jednoznaczność reprezentacji dla obrazów zawierających dłoń w nieznaczenie różniących się układach. Po analizie wyznaczonej z obrazów struktury grafów (Rysunek 3.6 (a) i (b)) oraz zbudowanych na tej podstawie IE grafów (Rysunek 3.7 (a) i (b)) jasno widać, że chociaż struktura grafów reprezentujących obrazy jest taka sama, to różnią się one długością krawędzi. Należy więc tę informację zapisać w grafie. Zapewni to jednoznaczność reprezentacji grafowej obrazu dłoni, oraz poprawność klasyfikacji wspomnianych obrazów. Konieczne jest znalezienie sposobu zapisania tej dodatkowej informacji w IE grafie. Znanym z literatury pomysłem jest atrybutowanie grafu. W tym przypadku oznacza to użycie atrybutowanych IE grafów, tzw. a-ie grafów. Istotą a-ie grafów (Definicja B.2 w Dodatku B) jest dodanie do struktury IE grafów informacji semantycznych. Dzieje się to poprzez zapisanie dodatkowych informacji o strukturze grafu w atrybutach. Atrybuty te są używane przez blok ewaluacji do oceny wyniku uzyskanego na etapie parsingu grafu. Koncepcję tę przedstawia Rysunek 3.8 Rysunek 3.8. Koncepcja rozpoznawania grafów atrybutowanych. W przypadku pola zastosowań badanego w pracy okazało się jednak, że grafy atrybutowane nie rozwiązują napotkanego problemu niejednoznaczności reprezentacji. Atrybuty nie są uwzględniane na etapie parsingu, ale dopiero na następującym po nim etapie ewaluacji uzyskanego podczas parsingu wyniku. W efekcie niemożliwe jest rozróżnienie przez parser obrazów podobnych układów dłoni, jak choćby tych zaprezentowanych na Rysunku 3.6 (a) i (b).

3. Metoda generacji grafowej reprezentacji obrazu dłoni 48 W związku z powyższym, na potrzeby rozpoznawania układu dłoni, autor rozszerzył definicję IE grafów o dodatkową etykietę krawędziową, która stanowi miarę odległości pomiędzy wierzchołkami łączonymi przez daną krawędź. W celu wprowadzenia formalnej definicji takich grafów, zdefiniujmy nowe reguły etykietowania dwuwymiarowych krawędzi. Reguła 3.3. Niech α będzie kątem odchylenia krawędzi e E od osi OY, gdzie α ( 180, 180. Funkcja etykietująca θ 1 taka, że θ 1 : α λ 1, zwraca etykiety podstawowe λ 1 zgodnie ze zdefiniowaną wcześniej dla IE-grafów Regułą 3.2 etykietowania krawędzi. Pozostaje pytanie, jak wyznaczyć wartość etykiety λ 2 dla danej krawędzi w taki sposób, żeby zachować niezależność reprezentacji od różnic w budowie dłoni u poszczególnych osób i od drobnych zmian kąta obserwacji dłoni przez kamerę. Jak wspomniano, etykieta ta jest miarą odległości pomiędzy łączonymi wierzchołkami. Podobnie jak w poprzednich przykładach, należy podzielić długość krawędzi na przedziały tak, żeby krawędzie o tej samej etykiecie podstawowej i nieznacznej różnicy w długości, były etykietowane jako krawędzie tożsame. Reguła 3.4. Niech d będzie długością krawędzi pomiędzy wierzchołkami v i w, gdzie v, w V. Funkcja θ 2 etykietowania krawędzi etykietą pomocniczą λ 2, taka, że θ 2 : d λ 2, zwraca etykiety zgodnie z następującymi zasadami: gdzie: γ 2 = round(d/b) round(x) jest funkcją zwracającą najbliższą liczbę całkowitą dla x, B jest stałą wyznaczoną eksperymentalnie 3. Po rozszerzeniu etykiet krawędziowych powstają zindeksowane etykietowane grafy o jednoznacznie skierowanych krawędziach z etykietami dwuwymiarowymi (ang. Two- -Dimensionally Edge Labelled IE Graph). Wprowadźmy teraz formalną definicję takiego grafu. 3 Bazując na posiadanym zbiorze obrazów dłoni wyznaczono wartość stałej B = 10.

3. Metoda generacji grafowej reprezentacji obrazu dłoni 49 Definicja 3.6. IE grafem o krawędziach z etykietami dwuwymiarowymi, tzw. 2DEL-IE grafem (ang. Two-Dimensionally Edge Labelled IE Graph), reprezentującym strukturę obrazu nazywamy siódemkę: gdzie: H = (V, E, Σ, Γ 1, Γ 2, Γ 3, φ) V Σ Γ 1 Γ 2 Γ 3 E φ : V Σ jest skończonym, niepustym zbiorem wierzchołków grafu, którym zostały przypisane w sposób jednoznaczny indeksy na bazie obiektów obrazu O, jest skończonym, niepustym zbiorem etykiet wierzchołkowych, jest skończonym, niepustym zbiorem podstawowych etykiet krawędziowych, przydzielanych zgodnie z Regułą 3.3, jest skończonym, niepustym zbiorem pomocniczych etykiet krawędziowych, przydzielanych zgodnie z Regułą 3.4, jest skończonym, niepustym zbiorem nieterminalnych etykiet krawędziowych, jest zbiorem krawędzi postaci (v, λ 1 λ 2, w), lub (v, λ 3, w), gdzie: λ 1 Γ 1, λ 2 Γ 2 są określone zgodnie z Regulami 3.3-3.4, λ 3 Γ 3, v, w V, oraz indeks wierzchołka v jest mniejszy, niż indeks wierzchołka w, jest funkcją etykietowania wierzchołków. Powróćmy teraz do dyskutowanego wcześniej zagadnienia, aby pokazać, że wprowadzenie dwuwymiarowych etykiet krawędziowych rozwiązuje opisywany problem. Przykład z Rysunku 3.9 przedstawia 2DEL-IE grafy wygenerowane z obrazów dłoni Bk, zniekształconego Bkz, oraz Bkz. Na krawędziach umieszczono etykiety terminalne: λ 1 i λ 2 w notacji λ 1 λ 2, gdzie λ 1 Γ 1 i λ 2 Γ 2. Etykiety podstawowe λ 1 zostały wyznaczone zgodnie z Regułą 3.3, natomiast etykiety pomocnicze λ 2 z Regułą 3.4. zostały wyznaczone zgodnie Porównanie reprezentacji przedstawionych na Rysunku 3.9 (a) i (b), odpowiadających odpowiednio układom Bk i zniekształconemu Bkz, wskazuje wyraźnie, że pomimo tej samej struktury grafu i podstawowych etykiet krawędziowych λ 1, pomocnicze etykiety λ 2 dla krawędzi pomiędzy wierzchołkami o indeksach 1 i 3 oraz 4 i 6, różnią się. Podgraf opisujący palce zmienił swoją rozpiętość w pionie, co skutkowało zmianą wartości etykiety λ 2 dla wspomnianych krawędzi.

3. Metoda generacji grafowej reprezentacji obrazu dłoni 50 (a) (b) (c) Rysunek 3.9. 2DEL-IE grafy dla układów dłoni: (a) znak Bk, (b) zniekształcony znak Bkz, (c) znak Bkz. Jak można było zauważyć w Definicji 3.6 2DEL-IE grafu autor wprowadził również zbiór etykiet nieterminalnych Γ 3 (konstrukcja nieznana w klasycznej definicji IE grafu). To rozszerzenie ma związek z procesem parsingu i dlatego zostanie przedstawione w Rozdziale 4. 3.4. Indeksowanie wierzchołków grafu Po rozpięciu grafu na wyznaczonych wierzchołkach należy go przekształcić tak, żeby przybrał postać grafu 2DEL-IE, a tym samym nadawał się do zastosowania w procesie

3. Metoda generacji grafowej reprezentacji obrazu dłoni 51 parsingu. W tym celu należy wierzchołkom rozpatrywanego grafu przypisać indeksy a jego krawędzie odpowiednio skierować. Za przykład w dalszych rozważaniach posłużyć może graf rozpięty na zbiorze wierzchołków wyznaczonych z obrazu dłoni w układzie Bk (Rysunek 3.11 (a)), przedstawiony na Rysunku 3.11 (b). Prezentowany tu algorytm indeksowania wierzchołków bazuje na algorytmie opisanym w [Fla93]. 1. Wierzchołek odpowiadający Środkowi Masy Obiektu jest traktowany jako wierzchołek startowy v 0 i przypisywany jest mu indeks 1, jak pokazano na Rysunku 3.11 (c). 2. Indeksowane są wszystkie wierzchołki sąsiadujące z v 0 kolejnymi indeksami i = 2,..., k, w kolejności zgodnej z kolejnością sortowania wierzchołków (Reguła 3.1). Wynik tego kroku został pokazany na Rysunku 3.11 (d). 3. Wybierane są kolejne wierzchołki indeksowane przez i = 2,..., k. Kolejno indeksowane są wszystkie sąsiadujące z nimi wierzchołki, którym nie przypisano do tej pory indeksu (Rysunek 3.11 (e)). 4. Punkt 3 jest powtarzany dla wszystkich wierzchołków. 5. Po zaindeksowaniu wszystkich wierzchołków, sprawdzane są kierunki krawędzi. W razie potrzeby są one następnie kierowane od wierzchołka o mniejszym indeksie do wierzchołka o indeksie większym. Etykiety podstawowe λ 1 są zmieniane natomiast zgodnie z nowym kierunkiem krawędzi. Krok ten prezentuje Rysunek 3.11 (f). Wynik procesu indeksowania wierzchołków grafu zaprezentowano na Rysunku 3.11 (g). Przykład indeksowania wierzchołków reprezentacji obrazu, w którym wykryto zarówno kontur podstawowy jak i wewnętrzny, znajduje się na Rysunku 3.10. (a) (b) Rysunek 3.10. Indeksowanie grafu 2DEL-IE dla znaku O: (b) struktura grafu dla znaku O, (c) reprezentacja grafowa znaku O. Dla przejrzystości pominięto etykiety krawędziowe.

3. Metoda generacji grafowej reprezentacji obrazu dłoni 52 (a) (b) (c) (d) (e) (f) (g) Rysunek 3.11. Indeksowanie grafu 2DEL-IE dla znaku Bk: (a) wyznaczone wierzchołki, (b) graf rozpięty na wyznaczonych wierzchołkach, (c) indeks wierzchołka startowego, (d) indeks wierzchołków 2-go poziomu, (e) indeksowanie kolejnych wierzchołków, (f) skierowanie krawędzi grafu, (g) graf 2DEL-IE z przypisanymi indeksami.

3. Metoda generacji grafowej reprezentacji obrazu dłoni 53 3.5. Etykietowanie wierzchołków grafu W przedstawionych do tego momentu przykładach, wierzchołki mogły mieć tylko trzy etykiety. Etykieta s oznaczała wierzchołek odpowiadający środkowi masy obszaru dłoni, będący jednocześnie wierzchołkiem o indeksie 1. Etykiety k i w były natomiast przydzielane wierzchołkom wyznaczonym odpowiednio z konturu podstawowego i wewnętrznego dłoni. Okazało się jednak, że tak ubogi zbiór etykiet uniemożliwia parsing budowanych dla rozpatrywanej klasy obrazów reprezentacji grafowych w formie 2DEL-IE grafów. Omówmy teraz ten problem. Rozważmy graf g wygenerowany z obrazu dłoni w układzie Bk, przedstawiony na Rysunku 3.12. Rysunek 3.12. Graf g wygenerowany z obrazu dłoni w układzie Bk. W celu rozpoznania tego obrazu, należy przeprowadzić proces analizy syntaktycznej reprezentującego go grafu g. Sam proces parsingu zostanie omówiony szczegółowo w Rozdziale 4. W tym miejscu przedstawmy go ogólnie, aby omawiany przykład stał się zrozumiały. Analiza syntaktyczna typu generacyjnego 4 polega na próbie konstrukcji, przy użyciu zbioru produkcji gramatyki, grafu g, izomorficznego z analizowanym grafem g reprezentującym dany obraz. Przebiega ona według następujących zasad. Jeśli istnieje sekwencja produkcji gramatycznych, których zastosowanie skutkuje wygenerowaniem grafu g, oraz sekwencja ta jest powiązana z pewną klasą-wzorcem, to rozpoznawany obraz należy do tej klasy-wzorca. Wywód grafu g rozpoczyna się od symbolu startowego Z. Wybierana jest dla niego produkcja gramatyczna. Kryterium jej wyboru stanowi możliwość uzyskania kolejnego fragmentu podgrafu grafu g, izomorficznego z odpowiadającym 4 Przedstawiona w rozprawie metoda opiera się na idei analizy syntaktycznej języków grafowych klasy ETPL(k) [Fla93], a więc analizie syntaktycznej typu generacyjnego.

3. Metoda generacji grafowej reprezentacji obrazu dłoni 54 mu podgrafem grafu g. Następnie, uzyskane w wyniku zastosowania produkcji wierzchołki są indeksowane (przy czym przyporządkowane wcześniej indeksy nie zmieniają się w trakcie kolejnych operacji indeksowania). Cała operacja (od momentu wyboru kolejnej produkcji gramatyki dla danego wierzchołka), powtarzana jest dla kolejnych wierzchołków nieterminalnych grafu g (zgodnie z rosnącym indeksem). Wywód w gramatyce kończy się uzyskaniem grafu g izomorficznego z grafem g, lub informacją o niemożliwości jego uzyskania. Efektem jest zatem rozpoznanie układu dłoni lub jego brak. Powróćmy teraz do obrazu dłoni w układzie Bk, reprezentowanego przez graf g przedstawiony na Rysunku 3.12. Zbiór produkcji gramatyki, używanych w początkowej części wywodu gramatycznego dla tego układu, znajduje się na Rysunku 3.13. Wierzchołki nieterminalne (do których zostaną zastosowane kolejne produkcje) są dla rozróżnienia etykietowane wielkimi literami. Pod produkcjami umieszczono odpowiadające im transformacje osadzenia 5, które pozwalają na połączenie krawędzi związanych z wierzchołkiem o etykiecie nieterminalnej (do którego zastosowana została produkcja) z nowymi wierzchołkami, uzyskanymi w wyniku zastosowania tej produkcji. Rysunek 3.13. Produkcje używane w początkowej części wywodu gramatycznego grafu g wygenerowanego dla obrazu dłoni w układzie Bk. Wywód grafu g przebiega w następujący sposób. Do symbolu startowego Z (Rysunek 3.14) zastosowana została produkcja o numerze 1. Dla wierzchołka o kolejnym indeksie 2 zastosowana została produkcja o numerze 2. Spowodowało to wygenerowanie odpowiednio grafów g 1 i g 2 (liczby nad strzałkami oznaczają numer zastosowanej produkcji). Następnie, dla wierzchołka o indeksie 3 powinna zostać zastosowana produkcja 3. Tu jednak powstaje problem ponieważ oba wierzchołki terminalne prawej strony tej produkcji są etykietowane przez k (Rysunek 3.13), transformacja osadzenia związana z tą 5 Transformacja osadzenia sterowana etykietami wierzchołków, wykorzystywana dla gramatyk klasy ETPL(k) rozważanych w rozprawie, została przedyskutowana w Dodatku B (Definicja B.7).

3. Metoda generacji grafowej reprezentacji obrazu dłoni 55 Rysunek 3.14. Wywód grafu odpowiadającego symbolowi Bk niejednoznaczna transformacja osadzenia. produkcją jest niejednoznaczna. Dla transformacji osadzenia C(g 11, in) = (k, s, g 11, in) nie będzie bowiem możliwe ustalenie, do którego z tych wierzchołków ma wchodzić krawędź o etykiecie g 11. Tym samym, dla transformacji osadzenia C(Y, out) = (k, C, h 10, in) nie jest jednoznacznie określony wierzchołek, do którego powinna wchodzić krawędź o etykiecie h 10. W efekcie nie jest możliwe dalsze prowadzenie tego wywodu gramatycznego, a zatem rozpoznanie układu dłoni na obrazie. U celu umożliwienia przeprowadzenia kompletnego wywodu dla rozważanego grafu, konieczne jest rozszerzenie zbioru etykiet wierzchołkowych Σ. Pozwoli to na zróżnicowanie wierzchołków, w sytuacjach analogicznych do omówionych powyżej. Zróżnicowanie takie można uzyskać dzięki wykorzystaniu informacji o konturze dłoni. Kontur (podstawowy i wewnętrzny) obszaru dłoni wyznaczany jest na etapie wstępnego przetwarzania obrazu. Poprzez jego aproksymację odcinkami identyfikowane są punkty charakterystyczne obrazu wierzchołki jego reprezentacji grafowej. Wyznaczane są one w punktach wspólnych tych odcinków. Informacja o kącie zawartym między dwoma takimi odcinkami może więc zostać zapisana w formie etykiety danego wierzchołka. Dla poprawnego rozpoznawania obrazów kluczowa jest również informacja o przynależności danego wierzchołka do konturu podstawowego lub pomocniczego. Autor zaproponował metodę etykietowania wierzchołków grafowych reprezentacji obrazu dłoni, uwzględniającą informacje niezbędne do jego poprawnego rozpoznania (Definicja 3.7). Zasada przypisywania etykiet wierzchołkowych została przedstawiona graficznie na Rysunku 3.15 (a). Przykład jej zastosowania na obrazie dłoni w układzie E został przedstawiony natomiast na Rysunku 3.15 (b).

3. Metoda generacji grafowej reprezentacji obrazu dłoni 56 Definicja 3.7. Niech w n 1, w n, w n+1 W będą kolejnymi punktami charakterystycznymi ze zbioru W punktów charakterystycznych obrazu dłoni wyznaczonych na konturze c. Niech β, gdzie β 0, 360 ), będzie kątem pomiędzy odcinkami przechodzącymi odpowiednio przez punkty w n 1 i w oraz w n+1 i w, przy czym kąt ten jest zakreślany wewnątrz konturu c. Wtedy φ : V Σ jest funkcją etykietowania wierzchołków, która przypisuje wierzchołkowi v, odpowiadającemu punktowi charakterystycznemu w, etykietę l v zgodnie z następującą zasadą. Dla konturu podstawowego c p : Dla konturu wewnętrznego c w : 0, 30 ) l v = a 0, 30 ) l v = a β 30, 60 ) l v = b 30, 60 ) l v = b 60, 90 ) l v = c 60, 90 ) l v = c 90, 120 ) l v = d 90, 120 ) l v = d 120, 150 ) l v = e 120, 150 ) l v = e 150, 180 ) l v = f 150, 180 ) l v = f β 180, 210 ) l v = g 180, 210 ) l v = g 210, 240 ) l v = h 210, 240 ) l v = h 240, 270 ) l v = i 240, 270 ) l v = i 270, 300 ) l v = j 270, 300 ) l v = j 300, 330 ) l v = k 300, 330 ) l v = k 330, 360 ) l v = l 330, 360 ) l v = l Dodatkowo, w przypadku, kiedy na konturze wewnętrznym c w wyznaczono tylko dwa punkty charakterystyczne, wierzchołki umieszczone w tych punktach są etykietowane przez m. (a) (b) Rysunek 3.15. Zasada etykietowania wierzchołków grafowych reprezentacji obrazu dłoni: (a) reprezentacja graficzna zasady (wewnątrz okręgu etykiety dla konturu wewnętrznego, na zewnątrz dla konturu podstawowego), (b) przykład działania funkcji etykietowania wierzchołków.

3. Metoda generacji grafowej reprezentacji obrazu dłoni 57 Po zdefiniowaniu nowej funkcji etykietującej wierzchołki, powróćmy raz jeszcze do analizy obrazu reprezentowanego poprzednio przez graf z Rysunku 3.12. Obecna postać tego grafu została pokazana na Rysunku 3.16 (etykiety wierzchołkowe zostały wyznaczone zgodnie z Definicją 3.7). Rysunek 3.16. Graf g z nowymi etykietami wierzchołkowymi odpowiadający układowi Bk. Zdefiniowane również zostały nowe produkcje używane w wywodzie, z uwzględnieniem nowych etykiet wierzchołkowych (Rysunek 3.17). Rysunek 3.17. Produkcje z nowymi etykietami wierzchołkowymi używane podczas wywodu grafu g dla układu Bk.

3. Metoda generacji grafowej reprezentacji obrazu dłoni 58 Ponowny wywód gramatyczny grafu g (Rysunek 3.18) przebiega jak następuje. Po zastosowaniu kolejno produkcji 1, 2, 3, 4 i 5, generowany jest graf g izomorficzny z grafem g. Tym razem transformacja osadzenia dla produkcji 3 jest jednoznaczna. Rysunek 3.18. Pełny wywód gramatyczny grafu g dla układu Bk. Jak widać na powyższym przykładzie, rozszerzenie zbioru etykiet wierzchołkowych Σ zgodnie z Definicją 3.7 pozwala na poprawne działanie transformacji osadzenia przy wywodzeniu grafu g. Bazując na posiadanym zbiorze obrazów dłoni, można stwierdzić, że zaproponowany sposób etykietowania wierzchołków pozwala na poprawne generowanie 2DEL-IE grafów reprezentujących te obrazy, co jest jak już wspomniano warunkiem koniecznym dla ich rozpoznawania metodą analizy syntaktycznej typu generacyjnego.

3. Metoda generacji grafowej reprezentacji obrazu dłoni 59 3.6. Reprezentacje grafowe obrazów referencyjnych W celu potwierdzenia poprawności zaproponowanej metody generacji reprezentacji grafowych dla rozpatrywanej klasy obrazów, należy upewnić się, że dla każdego spośród badanych obrazów wzorcowych, generowana jest unikalna reprezentacja grafowa. W Tabeli 3.2 zaprezentowano 2DEL-IE grafy stworzone na podstawie zbioru wzorcowych obrazów dłoni. Obrazy dłoni o orientacji poziomej zostały w tabeli poddane rotacji o 90 (przeciwnie do kierunku ruchu wskazówek zegara). Pozwoliło to zachować większą czytelność ich reprezentacji grafowych. Tabela 3.2. Zbiór reprezentacji grafowych obrazów referencyjnych dłoni. A B C CZ E F

3. Metoda generacji grafowej reprezentacji obrazu dłoni 60 Tabela 3.2. c.d. z poprzedniej strony. G H I K L M

3. Metoda generacji grafowej reprezentacji obrazu dłoni 61 Tabela 3.2. c.d. z poprzedniej strony. N O P R S T

3. Metoda generacji grafowej reprezentacji obrazu dłoni 62 Tabela 3.2. c.d. z poprzedniej strony. U W Y Z 1 2

3. Metoda generacji grafowej reprezentacji obrazu dłoni 63 Tabela 3.2. c.d. z poprzedniej strony. 4 5 100 Bm Cm Em

3. Metoda generacji grafowej reprezentacji obrazu dłoni 64 Tabela 3.2. c.d. z poprzedniej strony. Om Tm Um Xm Aw Bk

3. Metoda generacji grafowej reprezentacji obrazu dłoni 65 Tabela 3.2. c.d. z poprzedniej strony. Bz Bkz Cw Eo Ik Nw

3. Metoda generacji grafowej reprezentacji obrazu dłoni 66 Tabela 3.2. c.d. z poprzedniej strony. Ps Yk 1z 4z 5s 5z Każdy z 2DEL-IE grafów przedstawionych powyżej jest unikalny. Oznacza to, że przyjęty do opisu rozpatrywanego zbioru obrazów referencyjnych model grafowy jest poprawny.

4. Rozpoznawanie obrazu dłoni za pomocą analizy syntaktycznej 67 4. Rozpoznawanie obrazu dłoni za pomocą analizy syntaktycznej 4.1. Wprowadzenie Ostatnim etapem w torze rozpoznawania układu dłoni jest analiza syntaktyczna jego reprezentacji. W syntaktyczno-strukturalnym podejściu do rozpoznawania obrazów, struktura obrazu może być reprezentowana przez graf. Dla nieznanej struktury opisanej grafem g problem rozpoznawania sprowadza się do ustalenia, czy graf ten należy do języka L(G), wygenerowanego przez gramatykę grafową G. W [Fla93] zdefiniowano podrodzinę gramatyk grafowych ETPL(k) (patrz Definicja B.17 w Dodatku B). Mogą być one analizowane efektywnym algorytmem o złożoności obliczeniowej O(n 2 ). Wspomniane gramatyki generują IE grafy Definicja B.1 w Dodatku B które zostały również zdefiniowane w [Fla93]. Formalne definicje innych pojęć związanych z gramatykami klasy ETPL(k) oraz IE grafami znajdują się w Dodatku B. W niniejszym rozdziale autor wprowadził istotne rozszerzenie definicji dotyczących gramatyk grafowych klasy ETPL(k) [Fla93]. Rozszerzenie to było konieczne w związku ze specyfiką przetwarzanej klasy obrazów (obrazów dłoni). Zakres zmian obejmuje zdefiniowanie gramatyk grafowych klasy TETPL(k) (ang. Terminal Edges ETPL(k)), odpowiednich do generowania grafowych reprezentacji obrazów dłoni. W efekcie konieczne było też przedefiniowanie terminów związanych z tą gramatyką. Potrzeba wprowadzenia tych zmian została przedyskutowana na przykładach. Autor zdefiniował również algorytm parsera dla nowo utworzonej klasy gramatyk oraz dowiódł, że jego złożoność obliczeniowa to O(n 2 ), gdzie n jest liczbą wierzchołków grafu. 4.2. Gramatyka grafowa klasy TETPL(k) W trakcie eksperymentów z rozpoznawaniem obrazów dłoni okazało się, że w pewnych przypadkach gramatyki grafowe klasy ETPL(k) [Fla93] (Definicja B.17 przytoczona w Dodatku B), mają zbyt małą moc opisową dla tej klasy obrazów (nie pozwalają na generowanie pewnych reprezentacji grafowych w formie 2DEL-IE grafów). Zostanie to zilustrowane na przykładach w dalszych rozważaniach. Problem ten nie dotyczy zbioru

4. Rozpoznawanie obrazu dłoni za pomocą analizy syntaktycznej 68 obrazów referencyjnych. Autor założył jednak, że stworzony model formalny powinien pozwalać na rozpoznawanie nie tylko tego zbioru obrazów, ale również obrazów nieznacznie zniekształconych. Rozważmy teraz przykładowy proces generacji reprezentacji grafowych odpowiadających obrazom o niewielkim stopniu zniekształcenia. Załóżmy, że rozpatrywane grafy g (Rysunek 4.1 (a)) i h (Rysunek 4.1 (b)) stanowią grafową reprezentację zniekształconych obrazów dłoni w układach oznaczających odpowiednio W i 5. Zniekształcenie w przypadku obu obrazów polega na lekko ugiętym palcu środkowym. (a) (b) Rysunek 4.1. Grafy g i h zniekształconych obrazów dłoni odpowiednio w układach oznaczających: (a) W, (b) 5. Rysunek 4.2 przedstawia początkowe produkcje, które zostaną użyte przez parser dla gramatyki klasy ETPL(k) przy wywodzeniu zaprezentowanych grafów. Rysunek 4.2. Początkowe produkcje gramatyki dla wywodu grafów odpowiadających zniekształconym obrazom dłoni w układzie W i 5.

4. Rozpoznawanie obrazu dłoni za pomocą analizy syntaktycznej 69 Zbadanie wywodów gramatycznych grafów g i h pozwoli zweryfikować, czy gramatyki grafowe klasy ETPL(k) umożliwiają poprawne rozpoznawanie obrazów dłoni reprezentowanych przez 2DEL-IE grafy. Wywody grafów g i h przeprowadzone zostały równolegle poniżej. Grafy generowane w wyniku wywodu oznaczmy przez g i h odpowiednio dla zniekształconych obrazów dłoni w układach W i 5. Oba wywody rozpoczynają się od symbolu startowego Z. W przypadku obu grafów zastosowana została produkcja 1 (Rysunek 4.3). Na tym etapie wywodu generowane grafy g 1 i h 1 są grafami izomorficznymi. (a) (b) Rysunek 4.3. Pierwszy krok wywodu reprezentacji grafowej zniekształconych obrazów dłoni dla znaków: (a) W, (b) 5. (a) (b) Rysunek 4.4. Wybór produkcji podczas wywodu znaku W : (a) grafowa reprezentacja obrazu dłoni w układzie W, (b) wywodzony graf po zastosowaniu produkcji 2. Następnie wyszukiwana jest kolejna produkcja, która może być zastosowana dla wierzchołka o indeksie 2 obu grafów. W przypadku grafu g 1 wybierzmy produkcję o numerze 2. W efekcie uzyskałem graf g 2 (Rysunek 4.4 (b)). Podgraf tego grafu wygenerowany przez produkcję 2 różni się od odpowiadającego mu k-tl grafu (patrz Definicja B.13 w Dodatku B) grafu g jedną z krawędzi (Rysunek 4.4). Pomimo tej niezgodności, gramatyki klasy

4. Rozpoznawanie obrazu dłoni za pomocą analizy syntaktycznej 70 ETPL(k) umożliwiają wybór produkcji 2 dla wierzchołka 2 grafu g 1. Jest to możliwe, ponieważ wierzchołki o indeksie 2 grafów g i g 1 to wierzchołki potencjalnie kontekstowo identyczne w rozumieniu Definicji B.23 [Fla93]. Wybór tej częściowo niezgodnej produkcji podyktowany był wymaganiami dalszego wywodu grafu g. Jej zastosowanie powoduje bowiem wygenerowanie tymczasowej krawędzi (2, X, 3) o etykiecie nieterminalnej (X Γ 3 ) (wyróżnionej na Rysunku 4.4 (b)). Nie wchodzi ona wprawdzie w skład grafu g (Rysunek 4.4 (a)). Posłuży jednak zachowaniu krawędzi (2, h 8, 5) w grafie g (wyróżnionej na Rysunku 4.4 (a)). Krawędź ta nie może być wygenerowana na obecnym etapie wywodu, ponieważ wierzchołek o indeksie 5, do którego ma wchodzić, jeszcze nie istnieje. Zostanie ona wygenerowana później przez transformację osadzenia produkcji o numerze 3. (a) (b) Rysunek 4.5. Wybór produkcji podczas wywodu znaku 5 : (a) analizowany graf, (b) wywodzony graf po zastosowaniu produkcji 2. Przeanalizujmy teraz dostępne produkcje dla wierzchołka 2 grafu h 1. W tym przypadku niemożliwy jest wybór produkcji 2. Skutkowałby on wygenerowaniem m.in. wierzchołka o indeksie 3 grafu h 2 (Rysunek 4.5 (b)). Nie byłby on potencjalnie kontekstowo identyczny z wierzchołkiem o indeksie 3 grafu h (Rysunek 4.5 (a)) w rozumieniu wspomnianej Definicji B.23 [Fla93]. Spowodowane jest to różnicą w stopniach wyjściowych (tj. w liczbie wychodzących z nich krawędzi) rozpatrywanych wierzchołków (Rysunek 4.5). Uzyskana w wyniku produkcji 2 krawędź tymczasowa (2, X, 3) w grafie h 2 nie istnieje w grafie h. Co więcej, nie posłuży ona wygenerowaniu żadnej innej krawędzi o etykiecie terminalnej. Gramatyki klasy ET P L(k) nie dają natomiast możliwości kasowania krawędzi wychodzących z wierzchołków terminalnych. Zastosowanie produkcji 2 w grafie h 1 skutkuje więc wygenerowaniem zbędnej krawędzi, której zgodnie z definicją gramatyk klasy ETPL(k) nie można usunąć. Tym samym, przeprowadzenie kompletnego wywodu grafu h nie jest możliwe.

4. Rozpoznawanie obrazu dłoni za pomocą analizy syntaktycznej 71 Rozwiązaniem przedyskutowanego powyżej problemu jest umożliwienie kasowania tego typu krawędzi nieterminalnych. Możliwość taką zapewnić może transformacja osadzenia produkcji stosowanej do wierzchołka, do którego ta krawędź wchodzi. W tym celu autor zdefiniował rozszerzenie gramatyk klasy ETPL(k) (przytoczonej za [Fla93] w Definicji B.17 w Dodatku B) w postaci gramatyk klasy TETPL(k) (ang. Terminal Edge ETPL(k)). Poniżej wprowadzono ich formalną definicję. Definicja 4.1. Gramatykę PL(k) nazywamy gramatyką grafową klasy TETPL(k) (ang. Terminal Edge ETPL(k)), jeśli zachodzi następujący warunek. Dla każdej produkcji postaci: X 1 (1) X 2 (2)... X m (m) (l)a r1 r2... r m E1 E2... E m I1 I2... I m, X e X f,, e, f = 1,..., m jeśli (b, y), gdzie y jest terminalną etykietą krawędziową, jest potencjalnym kontekstem poprzedzającym dla A, to istnieje dokładnie jeden element (X 1, b, z, in) C l (y, in), i {1,..., m}, gdzie C l jest transformacją l-tej produkcji. Jeśli i = 1, to z = y, tzn. (X 1, b, y, in) C l (y, in). W związku z rozszerzeniem definicji gramatyk grafowych klasy ETPL(k) w postaci gramatyk grafowych klasy TETPL(k), należy wprowadzić również modyfikację definicji potencjalnie kontekstowej identyczności (przytoczonej w brzmieniu oryginalnym za [Fla93] w Definicji B.23 w Dodatku B). Wracając do przykładowej generacji wspomnianych powyżej grafów g i h zauważmy, że wierzchołki o indeksie 3 grafów g i g 2 są wierzchołkami potencjalnie kontekstowo identycznym w rozumieniu Definicji B.23 dla gramatyk klasy ETPL(k). Dla gramatyk klasy TETPL(k) wprowadziłem analogiczną Definicję 4.2 potencjalnie kontekstowej identyczności. Otrzymała ona nazwę potencjalnie kontekstowej identyczności typu A. Natomiast w przypadku wywodu grafu h konieczne było zaproponowanie nowej Definicji 4.3 potencjalnie kontekstowej identyczności typu B (dla wierzchołków o indeksie 3 grafów h i h 2). Daje ona możliwość kasowania krawędzi nieterminalnych, niezbędną jak to przedyskutowano powyżej do przeprowadzenia procesu generacji grafu reprezentującego układ dłoni. W poniższych definicjach liczbę elementów zbioru A oznaczyłem przez #A. Definicja 4.2. Niech g = (V, E, Σ, Γ, φ), ḡ = ( V, Ē, Σ, Γ, φ), gdzie Γ = Γ 1 Γ 2 Γ 3, będą grafami 2DEL IE takimi, że #V > # V. Dwa wierzchołki terminalne n(k) V, oraz n(k) V opisane przez

4. Rozpoznawanie obrazu dłoni za pomocą analizy syntaktycznej 72 n(k) n(k) r r (e 1... e r ) (ē 1... ē r ) (i 1... i r ) (ī 1... ī r ) nazywamy wierzchołkami potencjalnie kontekstowo identycznymi typu A, jeśli: 1. n = n, 2. r = r, 3. Jeśli dla każdego j {1,..., r} istnieje k {1,..., r} takie, że i j = ī k, to e j = ē k, 4. Zdefiniujemy dwa podciągi (i 1... i p), oraz (ī 1... ī p) ciągów odpowiednio (i 1... i r ), oraz (ī 1... ī r ), które spełniają następujące warunki: a) dla żadnego i j, j = 1,..., p nie istnieje ī k, k = 1,..., r takie, że i j = ī k, oraz b) dla żadnego ī j, j = 1,..., p nie istnieje i k, k = 1,..., r takie, że ī j = i k. Wtedy, dla każdego j = 1,..., p, i j jest etykietowany przez terminal, a ī j jest etykietowany przez nieterminal. Wierzchołki i j nazywamy wierzchołkami potencjalnie kontekstowymi typu A dla wierzchołka indeksowanego przez k. Krawędzie postaci (k, e j, i j) nazywamy krawędziami potencjalnie kontekstowymi typu A dla wierzchołka indeksowanego przez k Wierzchołki ī j nazywamy wierzchołkami quasi-kontekstowymi typu A dla wierzchołka indeksowanego przez k. Definicja 4.3. Niech g = (V, E, Σ, Γ, φ), ḡ = ( V, Ē, Σ, Γ, φ), gdzie Γ = Γ 1 Γ 2 Γ 3, będą grafami 2DEL IE takimi, że #V > # V. Dwa wierzchołki terminalne n(k) V, oraz n(k) V opisane przez n(k) n(k) r r (e 1... e r ) (ē 1... ē r ) (i 1... i r ) (ī 1... ī r ) nazywamy wierzchołkami potencjalnie kontekstowo identycznymi typu B, jeśli: 1. n = n, 2. r = r 1, 3. Jeśli dla każdego j {1,..., r} istnieje k {1,..., r} takie, że i j = ī k, to e j = ē k, 4. W ciągu (ī 1,..., ī t,..., ī r ) istnieje t, dla którego nie istnieje i l, l = 1,..., r takie, że i l = ī t Wtedy ī t jest etykietowany przez nieterminal. Wierzchołek i t nazywamy wierzchołkiem potencjalnie kontekstowym typu B dla wierzchołka indeksowanego przez k. Krawędź nieterminalną postaci (k, e t, i t ) nazywamy krawędzią potencjalnie kontekstową typu B dla wierzchołka indeksowanego przez k.

4. Rozpoznawanie obrazu dłoni za pomocą analizy syntaktycznej 73 Po wprowadzeniu nowych definicji potencjalnie kontekstowej identyczności, rozpatrzmy ponownie wywód grafów g i h. Po wprowadzeniu powyższych zmian można stwierdzić, że wierzchołki grafów g i g 2 o indeksie 3 są wierzchołkami o potencjalnie kontekstowej identyczności typu A. Wierzchołki grafów h i h 2 o indeksie 3 są wierzchołkami o potencjalnie kontekstowej identyczności typu B. Definicja gramatyki klasy TETPL(k) pozwala zatem na zastosowanie produkcji 2 dla wierzchołków o indeksie 2 zarówno grafu g 1 (Rysunek 4.6 (a)), jak i h 1 (Rysunek 4.6 (b)). Zastosujmy więc produkcję 2 do obu grafów. (a) (b) Rysunek 4.6. Kolejny krok wywodu reprezentacji grafowej zniekształconych obrazów dłoni dla znaków W i 5. Jak pokazano powyżej, na tym etapie wywodu krawędzie związane z wierzchołkami o indeksie 2 obu wywodzonych grafów g i h (Rysunek 4.6) różnią się od odpowiadających im krawędzi w grafach wzorcowych g i h. Wywód powinien zakończyć się uzyskaniem grafów g i h izomorficznych z grafami g i h. Należy zatem zapisać występujące na tym etapie wywodu różnice. Pozwoli to zweryfikować, czy kolejne stosowane produkcje spowodują zgodność krawędzi związanych z rozpatrywanym wierzchołkiem grafów wywodzonego i analizowanego. W tym celu wprowadźmy listy: L q dla krawędzi potencjalnie kontekstowo identycznych typu A, oraz M q dla krawędzi potencjalnie kontekstowo identycznych typu B. Będą one związane z wierzchołkami indeksowanymi przez q. Lista L q zawiera elementy postaci (i, e), dołączane dla każdej potencjalnie kontekstowej krawędzi (i, e, q) typu A, gdzie jej etykieta λ e Γ 1 Γ 2. Analogicznie, lista M q zawiera elementy postaci (i, e) dołączane dla każdej potencjalnie kontekstowej krawędzi (i, e, q) typu B, gdzie jej etykieta λ e Γ 3. Przy rozpatrywaniu przez parser wierzchołków o kolejnych indeksach, po dojściu do wierzchołka o indeksie q sprawdzane są listy L q i M q. Jeśli wszystkie krawędzie istniejące na liście L q zostały wygenerowane, są one usuwane z listy. W przeciwnym wypadku

4. Rozpoznawanie obrazu dłoni za pomocą analizy syntaktycznej 74 zgłaszany jest błąd, ponieważ wierzchołek o indeksie q na tym etapie wywodu uterminalnia się. Nie będzie więc możliwe wygenerowanie wchodzącej do niego krawędzi (i, e, q) na dalszych etapach wywodu. Tym samym, nie będzie możliwe uzyskanie izomorficznych grafów wywodzonego i analizowanego. Jednocześnie rozpatrywana jest lista M q jeśli wszystkie krawędzie (i, e, q) zostały skasowane, są one usuwane z listy. W przeciwnym wypadku zgłaszany jest błąd (na podobnej zasadzie, jak dla krawędzi z listy L q ). Należy podkreślić, że definicja gramatyki TETPL(k) przewiduje kasowanie tylko jednej krawędzi potencjalnie kontekstowo identycznej typu B dla danego wierzchołka (a więc w M q może być zapisany tylko jeden element). Jednak dla zachowania spójności nazewnictwa i ułatwienia dalszej modyfikacji definicji gramatyki, nazwę lista stosuje się zarówno dla zmiennej L q, jak i M q. Powróćmy zatem do naszego przykładu w celu analizy funkcjonowania list L q i M q. Rozpatrzmy ponownie produkcję zastosowaną dla wierzchołka o indeksie 2 grafów g 1 i h 1. W jej wyniku uzyskaliśmy grafy g 2 i h 2 (Rysunek 4.6). Dla grafu g 2 do listy L 5 dodawany jest element (2, h 9) (Rysunek 4.6 (a)) odpowiadający krawędzi (2, h 8, 5). Natomiast dla grafu h 2 do listy M 3 dodawany jest element (2, X) odpowiadający krawędzi (2, X, 3) (Rysunek 4.6 (b)). Jako kolejny rozważany jest wierzchołek o indeksie 3 grafów g 2 i h 2. Dla grafu g 2 zastosowana została produkcja 3 (Rysunek 4.7 (a)). W wyniku transformacji osadzenia dla tej produkcji krawędź nieterminalna o etykiecie X zmieniła się w krawędź (l, h 8, b) o etykiecie terminalnej. W przypadku grafu h 2 zastosowana została produkcja 4, co spowodowało skasowanie krawędzi o etykiecie nieterminalnej X poprzez pominięcie jej w transformacji osadzenia tej produkcji (Rysunek 4.7 (b)). (a) (b) Rysunek 4.7. Dalsza część wywodu reprezentacji grafowej zniekształconych obrazów dłoni dla znaków W i 5. Ponieważ z wierzchołkiem o indeksie 3 związane są listy L 3 i M 3, sprawdzana jest ich zawartość. W przypadku grafu g 3 obie listy są puste. Dla grafu h 3, lista L 3 =, oraz M 3 = (2, X). Sprawdzana jest więc w grafie h 3 obecność krawędzi (2, X, 3). Została ona

4. Rozpoznawanie obrazu dłoni za pomocą analizy syntaktycznej 75 skasowana podczas zastosowania produkcji o numerze 4, więc można ją usunąć z listy. Oznacza to równocześnie uzyskanie tożsamych krawędzi związanych z tym wierzchołkiem w grafach h i h 3. W celu przeprowadzenia dalszej części wywodu, uzupełnijmy zbiór produkcji gramatycznych o produkcje z Rysunku 4.8. Rysunek 4.8. Pozostałe produkcje gramatyki dla wywodu grafów odpowiadających zniekształconym obrazom dłoni w układzie W i 5. Rozpatrzmy kolejny wierzchołek o indeksie 4 grafów g 3 i h 3. Stosowane są produkcje 5 dla grafu g 3 (Rysunek 4.9 (a)), oraz 6 dla grafu h 3 (Rysunek 4.9 (a)). (a) (b) Rysunek 4.9. Kolejna część wywodu reprezentacji grafowej zniekształconych obrazów dłoni dla znaków W i 5. Następnie rozpatrywany jest wierzchołek o indeksie 5 grafów g 4 i h 4. Sprawdzane są listy L 5 i M 5 obu wywodzonych grafów. Listy te dla grafu h 4 są puste. Dla grafu g 4 lista M 5 jest pusta. Lista L 5 zawiera tylko jeden element (2, h 8). Krawędź (2, h 8, 5) została wygenerowana w wyniku transformacji osadzenia produkcji 3, zatem może zostać usunięta z listy L 5.

4. Rozpoznawanie obrazu dłoni za pomocą analizy syntaktycznej 76 Graf g 4 jest izomorficzny z grafem g, więc wywód został pomyślnie zakończony. Oznacza to poprawną klasyfikację lekko zniekształconego obrazu dłoni w układzie W. Natomiast wywód grafu h nie zakończył się. Zastosowana została produkcja 7 do wierzchołka o indeksie 6 (Rysunek 4.10). Wierzchołek o indeksie 7 jest wierzchołkiem terminalnym, więc nie zastosowano do niego żadnej produkcji. Porównano go natomiast z odpowiadającym mu wierzchołkiem analizowanego grafu h. Następnie do wierzchołka o indeksie 8 zastosowano produkcję 8. Wynikiem opisanych operacji było uzyskanie grafu h 6 izomorficznego z grafem h. Rysunek 4.10. Pozostałe kroki wywodu grafu odpowiadającego zniekształconemu obrazowi dłoni w układzie 5. Podsumowując, przeprowadzone dotychczas rozważania pozwoliły zdefiniować klasę 2DEL-IE grafów (Definicja 3.6), oraz generujące tę klasę gramatyki TETPL(k) (Definicja 4.1). Stanowi to kompletny formalny model grafowy do opisu i klasyfikacji rozpatrywanej klasy obrazów. Ostatnim krokiem jest skonstruowanie algorytmu analizy syntaktycznej dla tej klasy gramatyk. 4.3. Algorytm parsingu języków grafowych klasy TETPL(k) Dla gramatyki klasy ETPL(k) zdefiniowany został w [Fla93] algorytm parsingu typu generacyjnego (ang. top-down). Opierając się na idei tego algorytmu autor zaproponował algorytm parsera dla gramatyk klasy TETPL(k), który omówimy teraz szczegółowo. Algorytm parsera dokonuje analizy syntaktycznej, badając w każdym kroku graf k T L (Definicja B.13 w Dodatku B) zaczepiony w kolejnym wierzchołku analizowanego grafu. Na tej podstawie wybierana jest produkcja do zastosowania w rozpatrywanym wierzchołku. Równocześnie konstruowany jest wywód mający doprowadzić do wygenerowania analizowanego grafu. Podczas parsingu porównywane są grafy k T L analizowanego i wywodzonego grafu. Jeśli wierzchołek wywodzonego grafu, w którym zaczepiamy graf k T L jest wierzchołkiem terminalnym, to dokonujemy porównania z odpowiadającym mu wierzchołkiem analizowanego grafu. Jeśli jest on wierzchołkiem nieterminalnym, to szukamy

4. Rozpoznawanie obrazu dłoni za pomocą analizy syntaktycznej 77 produkcji, po zastosowaniu której porównywane k T L grafy będą zgodne. Szukając odpowiedniej produkcji staramy się znaleźć maksymalny graf k T L spośród grafów prawych stron produkcji (posiadający najwięcej wierzchołków i krawędzi). Niezgodność opisów charakterystycznych wierzchołków indeksowanych przez k w rozumieniu ich potencjalnie kontekstowej identyczności typu A powoduje w parserze akcję zapamiętania w liście L q tzw. opisu potencjalnie kontekstowej identyczności typu A, który ma postać (k, λ), gdzie: q jest indeksem wierzchołka potencjalnie kontekstowego typu A dla wierzchołka o indeksie k, λ jest etykietą potencjalnie kontekstowej krawędzi (k, λ, q), gdzie λ Γ 1 Γ 2. Podobnie, niezgodność opisów charakterystycznych wierzchołków indeksowanych przez k w rozumieniu ich potencjalnie kontekstowej identyczności typu B powoduje w parserze akcję zapamiętania w liście M q tzw. opisu potencjalnie kontekstowej identyczności typu B, który ma postać (k, λ), gdzie: q jest indeksem wierzchołka potencjalnie kontekstowego typu B dla wierzchołka o indeksie k, λ jest etykietą potencjalnie kontekstowej krawędzi (k, λ, q), gdzie λ Γ 3 Po ustaleniu się etykiety terminalnej wierzchołka q wywodzonego grafu, listy L q i M q są przeglądane i dla każdego elementu postaci (k, e), sprawdzane jest istnienie krawędzi (k, λ, q) w grafie wywodzonym. Poniżej autor zaproponował algorytm parsera dla gramatyk klasy TETPL(k). W celu wyjaśnienia jego działania konieczne jest wprowadzenie następujących oznaczeń: G = (V G, E G, Σ, Γ, φ G ) - analizowany graf, H = (V H, E H, Σ, Γ, φ H ) - graf wywodzony w trakcie parsingu, Z - aksjomat gramatyki, L i - lista opisów potencjalnie kontekstowych identyczności typu A związana z wierzchołkiem i, M i - lista opisów potencjalnie kontekstowych identyczności typu B związana z wierzchołkiem i, S - zbiór T T LN zdefiniowany w danym kroku wywodu podczas parsingu, φ H [i] - etykieta wierzchołka należącego do grafu H i indeksowanego przez i, n - liczba wierzchołków grafu G. P - lista produkcji użytych do wywiedzenia grafu H. Zdefiniowano również procedury i funkcje parsera.

4. Rozpoznawanie obrazu dłoni za pomocą analizy syntaktycznej 78 MAXIND(H) Funkcja wyznacza liczbę wierzchołków grafu H. DEFk-TL(G,i,m,E) Procedura konstruuje graf E = k T L(G, i, m). GIVETTLN(A) Procedura konstruuje zbiór TTLN(A) dla nieterminala A. CHOOSEPROD(E,S,k,pl) Procedura: 1. wybiera grafy h 1,..., h p ze zbioru S zawierające się w grafie E, 2. wybiera graf maksymalny h m spośród grafów h 1,..., h p, 3. jeśli h m, to wyznacza numer produkcji k odpowiadającej h m ; w przeciwnym wypadku k := 0. 4. dodaje numer wybranej produkcji k do listy P. PRODUCTION(H,i,k) Procedura stosuje k-tą produkcję w i-tym wierzchołku grafu H. CONID(G,H,i) Logiczna funkcja sprawdzająca, czy wierzchołki indeksowane przez i grafów G i H są kontekstowo identyczne. PCONIDA(G,H,I,err) Jeśli wierzchołki indeksowane przez i grafów G i H są potencjalnie kontekstowo identyczne typu A, to dla każdej potencjalnie kontekstowej krawędzi (i, e, q) typu A dołącza (i, e) do listy L q ; w przeciwnym wypadku err := 2. PCONIDB(G,H,I,err) Jeśli wierzchołki indeksowane przez i grafów G i H są potencjalnie kontekstowo identyczne typu B, to dla każdej potencjalnie kontekstowej krawędzi (i, e, q) typu B dołącza (i, e) do listy M q, oraz err := 0; w przeciwnym wypadku err := 3. CHECKA(L,H,err) Dla każdego (k, e) L 1 : jeśli (k, e, i) H, to usuń (k, e) z L i ; w przeciwnym wypadku err := 4. CHECKB(L,H,err) Dla każdego (k, e) M 1 : jeśli (k, e, i) H, to usuń (k, e) z M i, oraz err := 0; w przeciwnym wypadku err := 5.

4. Rozpoznawanie obrazu dłoni za pomocą analizy syntaktycznej 79 Algorytm 4.1 przedstawia parser dla gramatyk klasy TETPL(k). Algorytm 4.1 Parser dla gramatyki grafowej klasy ETPL(k) Wejście: Analizowany graf G. Wyjście: Lista użytych produkcji P, numer błędu err. H := Z err := 0 for i := 1 to n do if err = 0 then if φ H [i] jest nieterminalem then m := MAXIND(H) + 1 DEFk-TL(G,i,m,E) S := GIVETTLN (φ H [i]) CHOSEPROD(E,S,k,P) if k = 0 then err := 1 else żądana produkcja istnieje end if PRODUCTION(H,i,k) end if if NOT COND(G,H,i) then PCONIDA(G,H,i,err) if err = 2 then PCONIDB(G,H,i,err) end if end if CHECKA(L,H,err) if err = 4 then CHECKB(L,H,err) end if end if end for

4. Rozpoznawanie obrazu dłoni za pomocą analizy syntaktycznej 80 Łatwo można zauważyć, że graf H zostanie zaakceptowany, kiedy err = 0. Jeśli graf G nie zostanie zaakceptowany, rodzaj błędu można rozpoznać po wartości zmiennej err. err = 1 Nie znaleziono odpowiedniej produkcji, err = 2 Wierzchołki indeksowane przez i grafów G i H nie są potencjalnie kontekstowo identyczne typu A (ta wartość zmiennej err jest wartością chwilową w trakcie działania algorytmu), err = 3 Wierzchołki indeksowane przez i grafów G i H nie są zarówno potencjalnie kontekstowo identyczne typu A, jak i potencjalnie kontekstowo identyczne typu B, err = 4 Dla potencjalnie kontekstowo identycznych typu A wierzchołków indeksowanych przez i grafów G i H istnieje krawędź terminalna (k, e) L i :, dla której (k, e, i) / H (ta wartość zmiennej err jest wartością chwilową w trakcie działania algorytmu), err = 5 Dla potencjalnie kontekstowo identycznych typu A lub typu B wierzchołków indeksowanych przez i grafów G i H istnieje krawędź nieterminalna (k, e) M i, dla której (k, e, i) / H. Parser zaprezentowany w [Fla93] dla gramatyk klasy ETPL(k) ma złożoność obliczeniową O(n 2 ). Istotne jest rozważenie wpływu zmian w definicji tej klasy gramatyk i wynikających z nich modyfikacji algorytmu parsera gramatyk klasy TETPL(k) na jego złożoność obliczeniową. Poniżej rozważyłem złożoność obliczeniową procedur i funkcji używanych przez parser zaprezentowany w Algorytmie 4.1. PCONIDA W celu sprawdzenia zgodności opisów charakterystycznych dwóch wierzchołków, należy wykonać maksymalnie 2 + 3 (n 1) porównań (2 dla ich etykiet i indeksów, 3 (n 1) dla zbiorów etykiet krawędziowych i zbiorów indeksów wierzchołków. Warto zaznaczyć, że liczba operacji wykonywanych w tym kroku dla zbiorów zawierających krawędzie nieterminalne jest mniejsza. Liczba operacji wykonywanych przez procedurę to n. PCONIDB Sprawdzenie zgodności opisów charakterystycznych w tym przypadku można przeprowadzić analogicznie, jak w przypadku procedury PCONIDA. W tym celu należy wykonać maksymalnie 2 + 2 (n 1) porównań. Liczba operacji wykonywanych przez procedurę to n. CHECKA Dla kolejnych elementów listy L i badana jest lista indeksów wierzchołków, z których

4. Rozpoznawanie obrazu dłoni za pomocą analizy syntaktycznej 81 wychodzą krawędzie wchodzące do wierzchołka o indeksie i, pod kątem obecności odpowiednich krawędzi. Ponieważ obie listy są uporządkowane i istnieje maksymalnie n 1 krawędzi łączących dany wierzchołek z pozostałymi wierzchołkami grafu o n wierzchołkach, liczba operacji dla tej procedury to n. CHECKB Gramatyka klasy TETPL(k) dopuszcza kasowanie tylko jednej krawędzi nieterminalnej dla danego wierzchołka. Jeśli w M i został zapisany element postaci (e, i), należy sprawdzić, czy w dalszych etapach wywodu gramatycznego odpowiadająca mu krawędź nieterminalna została skasowana. W tym celu trzeba zbadać listę indeksów wierzchołków, do których wychodzą krawędzie z wierzchołka o indeksie i. Liczba operacji dla tej procedury jest więc ograniczona przez stałą. Złożoność obliczeniowa pozostałych procedur i funkcji używanych w algorytmie parsingu dla gramatyk klasy TETPL(k), jest zgodna ze złożonością obliczeniową analogicznych procedur i funkcji używanych w algorytmie parsera gramatyk klasy ETPL(k), znanych z [Fla93]. Twierdzenie 4.1. Parser gramatyk grafowych klasy TETPL(k), który został przedstawiony w Algorytmie 4.1, ma złożoność obliczeniową O(n 2 ), gdzie n to liczba wierzchołków przetwarzanego grafu. Dowód. Główna część Algorytmu 4.1 składa się z pętli i = 1... n. Liczba operacji procedur wywoływanych w każdym z kroków algorytmu jest ograniczona przez stałą (MAXIND, GIVETTLN, CHOSEPROD, CHECKB), albo wynosi c n, gdzie c jest stałą (DEFk-TL, PRODUC- TION, CONID, PCONIDA, PCONIDB, CHECKA), algorytm ma złożoność obliczeniową rzędu O(n 2 ). q.e.d.

5. Projekt systemu 82 5. Projekt systemu 5.1. Architektura rozwiązania Architektura logiczna systemu zaprojektowanego na potrzeby badań opisanych w niniejszej pracy została przedstawiona na Rysunku 5.1. System składa się z następujących komponentów: 1. Moduł przetwarzania wstępnego obrazu. 2. Moduł budowania reprezentacji grafowej obrazu dłoni. 3. Moduł klasyfikacji reprezentacji grafowej poprzez jej analizę syntaktyczną. Rysunek 5.1. Projekt toru przetwarzania i rozpoznawania obrazu. Pierwsze podejście do formalizacji systemu znajduje się na Rysunku 5.2. Pokazano tam też relacje pomiędzy częściami składowymi systemu, oraz przepływ danych. Cały system został przedstawiony jako pakiet, natomiast jego elementy składowe jako sub-systemy. Jak widać na rysunku, relacjom pomiędzy pakietem reprezentującym cały system i wchodzącymi w jego skład sub-systemami, odpowiedzialnymi za kolejne etapy przetwarzania, zostały przypisane kwalifikatory 1... Wynika to z faktu, że istnieje możliwość zwiększenia wydajności systemu dzięki zrównolegleniu przetwarzania kolejnych obrazów.

5. Projekt systemu 83 Rysunek 5.2. Model systemu i przepływ danych. 5.2. Założenia projektowe Poniżej przedstawiony został projekt systemu w notacji UML. Projekt ten nie obejmuje szczegółów implementacji przedstawionych w niniejszej pracy algorytmów w konkretnym języku programowania. Ma on natomiast na celu zamodelowanie części składowych systemu, zależności między nimi oraz zasad ich współdziałania. W notacji używanej w poniższym projekcie autor posłużył się pewnymi założeniami. Nazwy zmiennych są tworzone w Notacji Węgierskiej [Sim99]. Zamiast standardowych typów danych używanych w UML zdecydowano się na zastosowanie zbioru typów danych języka C++. Wynika to z możliwości optymalizacji modelu dzięki wykorzystaniu typu opisującego liczby całkowite bez znaku (unsigned integer), zamiast typu opisującego liczby całkowite (integer), dostępnego w UML. W celu zachowania przejrzystości sposobu przekazywania danych pomiędzy elementami systemu, zdecydowano się również na oznaczenie wskaźnikow przedrostkiem i każdego wymiaru tablicy danego typu poprzez []. System opracowano w podejściu obiektowym. Jego najważniejsze elementy, zostały zaimplementowane przy pomocy następujących klas: Klasa CImageSource modeluje źródło obrazu wejściowego. Może to być zarówno kamera, jak i źródło dyskowe, zawierające pozyskane wcześniej obrazy. Klasa ta może być zaimplementowana jako abstrakcyjna. Pozwoli to na proste dodawanie nowego typu źródeł obrazu, poprzez implementację metod składowych w klasach wywodzących się z niej. CDispatcher moduł nadrzędny, pozwalający na komunikację z systemami zewnętrznymi lub interfejsem użytkownika. Odpowiada on również za rozdzielenie zadań do poszczególnych procesów (torów) przetwarzania oraz synchronizację pochodzących z nich wyników. CMutex element zapewniający spójność danych przy przetwarzaniu wielowątkowym,

5. Projekt systemu 84 CClassificationSystem - moduł kontrolujący pojedynczy proces (tor) przetwarzania. W jego skład wchodzą obiekty odpowiadające za wstępne przetwarzanie obrazu, generację reprezentacji grafowej oraz analizę syntaktyczną; klasa ta stanowi interfejs do kompletnego sub-systemu przetwarzania i klasyfikacji obrazu, CPreProcessor moduł odpowiedzialny za wstępne przetwarzanie obrazu, CGraphGenerator moduł odpowiedzialny za budowanie reprezentacji grafowej obrazu, CParser moduł odpowiedzialny za analizę syntaktyczną stworzonej reprezentacji grafowej. Częstotliwość przetwarzania kolejnych obrazów powinna być ustalana przez system zewnętrzny poprzez wywoływanie w projektowanym systemie procesu rozpoznawania przy użyciu udostępnionej metody. Dodatkowo obrazy, które nie mogą być przetworzone przez system klasyfikacji z powodu jego zbyt dużego obciążenia, powinny być pomijane. Spełnienie tych wymagań pozwoli na zachowanie przetwarzania w czasie rzeczywistym mimo zbyt dużej częstotliwości inicjowania klasyfikacji dla kolejnych obrazów. Obiekt klasy nadrzędnej CDispatcher posiada wskaźniki do każdej z klas składowych poszczególnych torów przetwarzania daje to lepszą kontrolę nad tworzeniem i destrukcją instancji obiektów tych klas. Takie rozwiązanie umożliwia też np. sterowanie liczbą sub-systemów przetwarzania obrazu w trakcie jego działania. W celu zwiększenia przejrzystości notacji, w klasach nie opisano konstruktorów i destruktorów. Kolejność tworzenia i niszczenia obiektów została opisana przy omówieniu modelu dynamicznego systemu. 5.3. Model statyczny Na Rysunku 5.3 znaleźć można diagram najważniejszych klas wykorzystywanych w systemie. Rysunek 5.4 natomiast przedstawia pakiet zawierający stworzone na potrzeby systemu typy danych.

5. Projekt systemu 85 Rysunek 5.3. Diagram klas wizyjnego systemu klasyfikacji układu dłoni.

Rysunek 5.4. Pakiet klas używanych do reprezentacji danych w systemie. 5. Projekt systemu 86

5. Projekt systemu 87 klasy. W celu wyjaśnienia działania systemu, poniżej opisano pokrótce jego najważniejsze Klasa CDispatcher Zmienne: px ImageSource:*CImageSource wskaźnik na źródło obrazu, px ColourImage:*CColourImage wskaźnik na obraz uzyskany ze źródła, px Mutex:Mutex wskaźnik na element używany do uzyskiwania dostępu do zawartości współdzielonych zmiennych, konieczny w celu zachowania spójności danych przy przetwarzaniu wielowątkowym, ptx ClassificationSystems:*CClassificationSystem[1..*] tablica wskaźników na utworzone obiekty klasy CClassificationSystem (sub-systemy klasyfikacji obrazu, pracujące równolegle w osobnych wątkach), tb SystemIsProcessing:bool[1..*] tablica flag oznaczających zajętość wskazywanych w tablicy ptx CClassificationSystems sub-systemów przetwarzania, x SequenceBuffer:CSequenceBuffer dynamiczna lista dwukierunkowa przechowująca wyniki przetwarzania kolejnych obrazów; zapewnia ona zwracanie wyników klasyfikacji obrazów w kolejności, w jakiej zostały one przekazane do przetwarzania (w praktyce można uprościć implementację tego elementu poprzez zastosowanie typu map, lub list z biblioteki standardowej STL), ui ImageId:unsigned int licznik przechowujący indeks obecnie przetwarzanego obrazu. Metody: processimage():bool inicjuje próbę przetworzenia obrazu, jeśli którykolwiek z sub-systemów przetwarzania jest wolny: 1. za pomocą metody acquiremutex() blokowany jest dostęp do współdzielonych zmiennych, 2. jeśli w tabeli tb SystemIsProcessing wszystkie flagi mają wartość TRUE, przetwarzanie jest kończone obraz nie jest klasyfikowany, 3. jeśli znajdują się tam flagi o wartości FALSE, pierwsza z nich jest ustawiana na TRUE odpowiadający jej sub-system będzie używany w procesie przetwarzania, 4. inkrementowana jest zmienna ui ImageId (jej wartość początkowa to 0, natomiast po osiągnięciu wartości równej 65535, maksymalnej wartości typu unsigned int, przypisywana jest jej wartość 1), 5. do bufora x SequenceBuffer dodawany jest za pomocą metody appendplaceholder element, którego zmiennej ui ImageIndex jest nadawana wartość ui ImageId, 6. zwalniany jest dostęp do zmiennych współdzielonych poprzez wywołanie metody releasemutex(),

5. Projekt systemu 88 7. rozpoczynany jest w osobnym wątku proces klasyfikacji obrazu ze źródła wskazywanego przez px ImageSource poprzez wywołanie metody classifyimage w odpowiednim obiekcie klasy CClassificationSystem, setresult(unsigned int, EHandPoseSet):bool poprzez wskaźnik do tej metody sub-systemy przetwarzania obrazu zwracają wynik klasyfikacji: 1. blokowany jest dostęp do danych współdzielonych przy pomocy metody acquiremutex(), 2. przy użyciu metody x SequenceBuffer::addValueToPlaceholder obiektu bufora, wyszukiwany jest element o wartości indeksu równej ui ImageIndex i jego pole e HandPose wypełniane jest wynikiem klasyfikacji dla obrazu o danym indeksie, 3. zwalniany jest dostęp do zmiennych współdzielonych poprzez wywołanie metody releasemutex(), getpose(*unsigned int[]):bool z bufora x SequenceBuffer, po jego zablokowaniu za pomocą elementu px Mutex, zwracane i usuwane są wyniki klasyfikacji kolejnych obrazów, aż do momentu odnalezienia elementu, dla którego nie wyznaczono jeszcze wyniku, lub opróżnienia listy; po zakończeniu operacji dostęp do współdzielonych danych jest odblokowywany, Klasa CClassificationSystem Zmienne: x LColourImage:CColourImage lokalna dla obiektu kopia obrazu wskazywanego przez argument metody classifyimage jej wykonanie chroni przed nadpisaniem obrazu w źródle kolejnym pozyskanym obrazem, px PreProcessor:*CPreProcessor wskaźnik na obiekt przetwarzania wstępnego obrazu danego sub-systemu, px GraphGenerator:*CGraphGenerator wskaźnik na obiekt generacji reprezentacji grafowej danego sub-systemu, px Parser:*CParser wskaźnik na obiekt analizy syntaktycznej danego sub-systemu, x CharacteristicPointsList:CCharacteristicPointsList lista punktów charakterystycznych, x GGraph:CGraph zbudowana dla obrazu reprezentacja grafowa, e HandPose:EHandPoseSet wynik procesu klasyfikacji obrazu, Metody: classifyimage(ccolourimage, unsigned int, *CDispatcher):bool metoda wywoływana przez obiekt klasy CDispatcher, powoduje rozpoczęcie procesu klasyfikacji obrazu w sub-systemie: 1. obraz wskazywany przez parametr px ColourImage jest kopiowany do zmiennej x LColourImage,

5. Projekt systemu 89 2. obraz przekazany jako parametr x ColourImage jest przetwarzany przez obiekt wskazywany przez px PreProcessor, który zwraca listę punktów charakterystycznych do zmiennej x CharacteristicPointsList, 3. lista punktów charakterystycznych jest przekazywana obiektowi wskazywanemu przez px GraphGenerator, który zwraca graf do zmiennej x GGraph, 4. graf jest przetwarzany przez obiekt wskazywany przez px Parser i do zmiennej e HandPose zapisywany jest wynik klasyfikacji obrazu, 5. poprzez wskaźnik do obiektu klasy CDispatcher, wywoływana jest jego metoda setresult zapisująca wynik klasyfikacji, preprocessimage(*ccolourimage, *CCharacteristicPointsList):bool odpowiada za wstępne przetwarzanie obrazu w obiekcie wskazywanym przez px PreProcessor, generategraph(*ccharacteristicpointslist, *CGraph):bool odpowiada za generację reprezentacji grafowej w obiekcie wskazywanym przez px GraphGenerator, parsegraph(*cgraph, *EHandPoseSet):bool odpowiada za parsing reprezentacji grafowej w obiekcie wskazywanym przez px Parser. Klasa CSequenceBuffer Zmienne: px FirstItem:*COrderedListItem wskaźnik na pierwszy element listy, px LastItem:*COrderedListItem wskaźnik na ostatni element listy, Metody: appendplaceholder(unsigned int):bool dodaje do listy typu COrderedListItem element z wypełnionym polem indeksu obrazu ui ImageIndex, ale z pustym polem wyniku klasyfikacji tego obrazu e HandPose, addvaluetoplaceholder(unsigned int, EHandPoseSet):bool jeśli na liście istnieje element o podanym indeksie, przypisywany jest mu wynik klasyfikacji, getitem(*unsigned int, *EHandPoseSet):bool zwracana jest lista wyników klasyfikacji obrazów zgodnie z następującymi zasadami: 1. jeśli na liście znajdują się jakiekolwiek elementy, wyszukiwany jest ten, który ma najniższą wartość ui ImageIndex, 2. jeśli element ten ma wypełnione pole e HandPose, dodawany jest do tabeli zwracanych wartości, 3. wyszukiwane są elementy z kolejnymi wartościami pola ui ImageIndex i do tabeli zwracanych wartości dodawane są wartości ich zmiennych e HandPose, aż do momentu znalezienia końca listy lub elementu o pustej wartości pola e HandPose.

5. Projekt systemu 90 5.4. Model dynamiczny Rysunek 5.5 przedstawia diagram sekwencji dla projektowanego systemu. Poniżej przedstawiono kolejne kroki procesu przetwarzania i klasyfikacji pojedynczego obrazu. 1. Inicjalizowany jest obiekt klasy CDispatcher, który z kolei tworzy instancje klas CMutex, oraz CClassificationSystem, w liczbie określonej w jednym z argumentów swojego konstruktora. Wskaźniki na poszczególne obiekty klasy CClassificationSystem są zapisywane w tabeli px ClassificationSystems[]. 2. Konstruktor każdej z utworzonych instancji klasy CClassificationSystem tworzy po jednym obiekcie klas CPreProcessor, CGraphGenerator i CParser. Wskaźniki do nich są zapisywane odpowiednio w zmiennych px PreProcessor, px GraphGenerator i px Parser. 3. Poprzez metodę CDispatcher::setImageSource zmiennej CDispatcher::px ImageSource, przypisywany jest wskaźnik na źródło obrazu. 4. Metoda CDispatcher::processImage powoduje przetworzenie pojedynczego obrazu wskazywanego przez wskaźnik CDispatcher::px ImageSource, jeśli którykolwiek z sub-systemów przetwarzania jest dostępny. W przeciwnym wypadku przetwarzanie danego obrazu jest pomijane. 5. Wywoływana jest metoda CClassificationSystem::classifyImage w znalezionym sub-systemie, a jako jej argumenty przekazywane są: wskaźnik do źródła obrazu oraz indeks przetwarzanego obrazu. 6. Tor przetwarzania, kontrolowany przez dany obiekt klasy CClassificationSystem, w osobnym wątku poddaje obraz przetwarzaniu, w rezultacie którego wynik klasyfikacji jest zwracany do bufora CDispatcher::x SequenceBufer poprzez metodę CDispatcher::setResult. Spójność danych w buforze przy użyciu przetwarzania wielowątkowego jest zapewniana przez mechanizm mutex. 7. Wyniki klasyfikacji kolejnych obrazów w działających niezależnie torach przetwarzania są zapisywane w buforze. 8. Wyniki, przy zachowaniu kolejności przetwarzania, mogą być zwrócone przez metodę CDispatcher::GetPose.

Rysunek 5.5. Diagram sekwencji dla projektowanego systemu. 5. Projekt systemu 91

5. Projekt systemu 92 5.5. Wydajność System został zaimplementowany przez autora zgodnie z projektem w języku C++. Wybór tego języka programowania umożliwia uzyskanie maksymalnej wydajności, przy zachowaniu mechanizmów programowania obiektowego. Do części zadań przetwarzania wstępnego obrazu użyta została darmowa biblioteka programistyczna 1. Eksperymenty autor prowadził na komputerze mobilnym, wyposażonym procesor Intel Core Duo 1,83 GHz z 1GB RAM. Rysunek 5.6 przedstawia czas przetwarzania w zależności od liczby wierzchołków reprezentacji grafowej danego obrazu na przykładzie klasyfikacji serii 10 identycznych obrazów. Rysunek 5.6. Czas przetwarzania serii 10 identycznych obrazów w zależności od ilości wierzchołków ich reprezentacji grafowej. 1 Intel Integrated Performance Primitives (IPP).

6. Eksperymenty 93 6. Eksperymenty 6.1. Obrazy testowe Zbiory obrazów służące testowaniu systemów rozpoznawania gestów znanych z literatury posiadają szereg wad. Poniżej przedstawiono zarzuty sformułowane wobec nich w przeglądzie literatury. Dobór obrazów wchodzących w skład zbiorów uczących i testujących prowadzony jest pod kątem uzyskania wysokiego współczynnika poprawności rozpoznania. Wybór ten powinien być natomiast podyktowany faktycznymi potrzebami rozpoznawania języków migowych. Zbiory tworzone są przez autorów rozwiązań a nie przez osoby mające codzienny kontakt z językami migowymi. Gesty, na podstawie których tworzone sa uczące i testujące zbiory obrazów, są często wykonywane przez jedną osobę. Nie zapewnia to niezależności systemu od osoby wykonującej gesty. W celu przeprowadzenia eksperymentów konieczne było zatem opracowanie zbioru obrazów, który będzie pozbawiony powyższych wad. Proces ten przebiegał w kilku etapach, które zostały opisane szczegółowo poniżej. 1. Autor wykonał kilka serii 48 zdjęć cyfrowych, przedstawiających wszystkie możliwe układy dłoni występujące w gestach PJM. Osobą fotografowaną był Lektor Polskiego Języka Miganego, co gwarantowało naturalne ułożenie dłoni. 2. Na podstawie dostępnych modeli anatomicznych, autor stworzył trójwymiarowy, siatkowy model dłoni. Model otrzymał 38 stopni swobody, zgodnie z możliwymi płaszczyznami ruchu elementów dłoni ludzkiej, co obrazuje Rysunek 6.1 i Tabela 6.1 (gdzie przez x oznaczono kąt odwodzenia, przez z kąt ugięcia a φ oznacza obrót wokół własnej osi). 3. Na podstawie zdjęć uzyskanych w pierwszym kroku, autor dopasował model dłoni do każdego z 48 występujących w PJM układów dłoni. Każdy z modeli poddano następnie ocenie Lektora PJM i wprowadzono korekty. Model dłoni w układzie odpowiadającym znakowi Xm przedstawiono na Rysunku 6.2. 4. Utworzone modele dłoni zostały autor zaimportował do programu DAZ Studio, w którym nałożono na nie teksturę imitującą skórę dłoni i paznokcie.

6. Eksperymenty 94 Rysunek 6.1. Model dłoni z zaznaczonymi punktami swobody. Tabela 6.1. Ograniczenia swobody modelu dłoni. Punkt x [ ] z [ ] φ [ ] 0-20 20-60 70-3 3 A -15 30-20 20-25 65 A1-8 8-60 30-8 8 A2-3 3-100 20-6 10 B -25 20-30 72-3 3 B1-2 2-10 90-5 5 B2 - -10 85-3 3 C -25 15-23 72-3 3 C1 - -15 90-4 4 C2 - -8 85 - D - -25 72 - D1 - -10 90-4 4 D2 - -12 85 - E -18 22-25 72-3 3 E1 - -10 90-4 4 E2-2 2-25 85-3 3

6. Eksperymenty 95 (a) (b) Rysunek 6.2. Obraz dłoni: (a) model siatkowy, (b) obraz uzyskany metodą renderingu. 5. Po ustaleniu jednolitego oświetlenia sceny, autor stworzył zbiór obrazów referencyjnych metodą renderingu. Jako rezultat działań opisanych powyżej autor uzyskał 48 referencyjnych modeli dłoni i odpowiadające im obrazy referencyjne (Tabela 6.2). Renderowane obrazy dłoni są łudząco podobne do zdjęć rzeczywistej dłoni. Podobieństwo to uzyskano dzięki zastosowaniu dokładnie opracowanych modeli trójwymiarowych oraz znajomości budowy anatomicznej dłoni. Efekt ten jest dodatkowo spotęgowany wykorzystaniem tekstur imitujących sposób odbijania światła przez ludzka skórę. Porównanie obrazów rzeczywistego i renderowanego widoczne jest na Rysunku 6.3. (a) (b) Rysunek 6.3. Porównanie obrazów dłoni: (a) zdjęcie dłoni, (b) obraz uzyskany metodą renderingu.

96 6. Eksperymenty Tabela 6.2. Zbiór obrazów referencyjnych uzyskanych z utworzonych modeli dłoni metodą renderingu. A B C CZ E F G H I K L M N O P R S T U W Y Z 1 2 4 5 100 Bm Cm Em Om Tm Um Xm Aw Bk Bz Bkz Cw Eo Ik Nw Ps Yk 1z 4z 5s 5z Możliwe jest również uzyskanie serii obrazów dla pojedynczego układu modelu dłoni. Obrazy te mogą różnić się od siebie nieznacznie położeniem i/lub ugięciem kilku części składowych dłoni, lub kątem, pod jakim dłoń jest rejestrowana. Pozwala to na lepsze oddanie faktycznych warunków rejestracji układów dłoni przez kamerę w zbiorze wygenerowanych obrazów. Osoba wykonująca gesty może nieznacznie inaczej układać dłoń do każdego znaku, lub stać pod pewnym kątem w stosunku do kamery. Co więcej, za pomocą zmiany kilku parametrów modelu, można zmieniać proporcje dłoni na obrazie, symulując faktyczne międzyosobnicze różnice anatomiczne w budowie dłoni. Powyżej opisane zmiany mogą być zautomatyzowane za pomocą skryptów. Zmiany ułożenia poszczególnych elementów dłoni i ich liczba mogą mieć zaś charakter losowy (w zadanych przedziałach). Pozwala

6. Eksperymenty 97 to na szybkie budowanie obszernych zbiorów obrazów układów dłoni przy zobrazowaniu faktycznych warunków, w których działa system ich rozpoznawania. Kolejną zaletą metody renderingu jest możliwość zastosowania tekstur dedykowanych do imitowania różnego koloru skóry. Łatwo jest więc przetestować mechanizmy segmentacji obszaru dłoni na podstawie modelu barw dla osób o skórze białej, czarnej, żółtej, etc. 6.2. Przebieg eksperymentów Zgodnie z opracowaną i opisaną w poprzednich rozdziałach metodą rozpoznawania obrazów dłoni, autor przeprowadził zakończony sukcesem proces rozpoznawania zbioru 48 obrazów wzorcowych, z których każdy odpowiadał dłoni w innym układzie występującym w Polskim Języku Miganym. Kolejnym etapem weryfikacji opisywanej metody było sprawdzenie jej odporności na drobne zniekształcenia obrazu. Skuteczność działania systemu została przetestowana pod względem niewrażliwość na następujące zniekształcenia: 1. Osobnicze różnice anatomiczne budowy dłoni. 2. Zmiana kąta obserwacji dłoni przez kamerę. 3. Niedokładnie wykonany układ dłoni. 4. Kombinacja powyższych zniekształceń. Należy zaznaczyć, że na tym etapie zbadana została przydatność zastosowanej metody rozpoznawania obrazów wzorcowych w stosunku do rozpoznawania obrazów nieznacznie zniekształconych. Opisywana metoda klasyfikacji obrazów dłoni metodami grafowymi nie zawiera mechanizmów dedykowanych do rozpoznawania obrazów rozmytych. Więcej informacji na temat takich metod znaleźć można w [Fla90, Fla07]. Rysunek 6.4. Wpływ zmian proporcji dłoni na liczbę błędnie rozpoznanych obrazów. Jako pierwszy zbadany został wpływ zmian proporcji dłoni na poprawność klasyfikacji obrazu. Wygenerowano pięć 48-elementowych zbiorów obrazów, w których zmieniano proporcje dłoni zgodnie z zakresem danych statystycznych zawartych w [RU97]. Za każdym razem zadbano o poprawne skalowanie dłoni na obrazie w celu uzyskania jej właściwej wielkości. Wyniki klasyfikacji tych obrazów prezentuje Rysunek 6.4 - pokazano na nim liczbę nie rozpoznanych obrazów dla poszczególnych układów dłoni.

6. Eksperymenty 98 Jak widać, zaproponowana metoda dobrze sprawdza się w przypadku obrazów o różnych proporcjach dłoni w stosunku do modelu referencyjnego. Różnice anatomiczne w budowie dłoni nie wpływają w znacznym stopniu na poprawność klasyfikacji. Średnia wartość współczynnika poprawnej klasyfikacji badanych obrazów wyniosła w tym przypadku 96, 25%. Niemożliwość klasyfikacji obrazów była spowodowana dużymi rozbieżnościami w szerokości kciuka w układach CZ, Cm, oraz różną wartością etykiety pomocniczej w przypadku układów O, Z, 4, 5, Tm i Nw, co wynikało z różnicy długości wyciągniętych na pełną długość palców w tych układach. Kolejnym etapem była weryfikacja wpływu kąta obserwacji na liczbę błędnie rozpoznanych obrazów. Ponownie, na podstawie referencyjnych układów modeli dłoni autor wygenerował pięć zbiorów obrazów, w których model dłoni obracano osiowo w trzech płaszczyznach o losowe wartości w zakresie ±3. Wyniki klasyfikacji tych obrazów zaprezentowano na Rysunku 6.5. Rysunek 6.5. Wpływ zmian kąta obserwacji dłoni na liczbę błędnie rozpoznanych obrazów. Kąt obserwacji również w niewielkim stopniu wpłynął na poprawną klasyfikację obrazów dłoni. Wystąpił natomiast przypadek błędnej klasyfikacji obrazu dłoni w układzie Cw jako obraz dłoni w układzie Eo. Średnia wartość współczynnika poprawnej klasyfikacji badanych obrazów wyniosła w tym przypadku 95, 42%. Rysunek 6.6. Wpływ zmian układu dłoni na liczbę błędnie rozpoznanych obrazów. Kolejnym etapem eksperymentów była weryfikacja wpływu niedokładności wykonania układów dłoni na skuteczność rozpoznawania. Układ każdego z modeli ulegał pięciokrotnie zmianom w trzech losowo wybranych płaszczyznach swobody o 3% dozwolonego zakresu ruchów (vide Tabela 6.1). Wpływ tych zmian pokazuje Rysunek 6.6.

6. Eksperymenty 99 Wpływ tego typu zniekształceń na poprawność procesu klasyfikacji obrazów jest nieco większy, niż poprzednio opisywane poprawnie sklasyfikowanych zostało 91, 25% badanych obrazów. W ostatnim etapie eksperymentów autor wprowadził wszystkie wymienione wcześniej czynniki zniekształcające w procesie generowania 20 zbiorów obrazów testowych. Wyniki tych eksperymentów zaprezentowano na Rysunku 6.7. Rysunek 6.7. Wpływ kombinacji czynników zniekształcających na liczbę błędnie rozpoznanych obrazów. Średnia skuteczność metody rozpoznania obrazów zniekształconych wyniosła 84, 06%. 6.3. Wnioski W wyniku analizy wyników przeprowadzonych eksperymentów sformułować można następujące wnioski: 1. Zaproponowana metoda rozpoznawania układów dłoni na obrazie, oraz zbiór produkcji gramatycznych, pozwoliła na poprawne sklasyfikowanie całego zbioru obrazów wzorcowych. 2. Zniekształcenia obrazów polegające na różnicach w proporcjach dłoni, a więc odpowiadające występującym różnicom anatomicznym w jej budowie, mają niewielki wpływ na poprawność procesu rozpoznawania. Świadczy to o dużej mocy opisowej generowanych opisaną metodą reprezentacji grafowych rozpatrywanej klasy obrazów. 3. Dla obrazów lekko zniekształconych, liczba obrazów nierozpoznanych znacząco przewyższa liczbę obrazów rozpoznanych błędnie (proporcje te odnoszą się do całkowitej liczby przypadków rozpoznania zakończonych niepowodzeniem). Stanowi to dowód na dużą przydatność opisywanej w niniejszej pracy metody generacji reprezentacji grafowych dłoni w zastosowaniu w procesie analizy syntaktycznej. 4. Współczynnik poprawności rozpoznania obrazów można podnieść, zwiększając liczbę wzorcowych reprezentacji grafowych odpowiadających danemu układowi dłoni