rozprawa doktorska - Wydział Elektryczny
Transkrypt
rozprawa doktorska - Wydział Elektryczny
POLITECHNIKA WARSZAWSKA Wydział Elektryczny ROZPRAWA DOKTORSKA mgr inż. Piotr Kowalczyk Wybrane aspekty komunikacji człowiek-komputer z wykorzystaniem ruchów głowy i mimiki twarzy Promotor dr hab. inż. Dariusz Sawicki, prof. PW Warszawa, 2015 Streszczenie Niniejsza rozprawa doktorska poświęcona jest nowemu interfejsowi człowiek-komputer. Opracowany przez autora i wszechstronnie przebadany interfejs umożliwia efektywną i precyzyjną zmianę położenia kursora na ekranie poprzez niewielkie ruchy głowy oraz wykonywanie poleceń systemowych poprzez mrugnięcia oczu. Praca rozpoczyna się od przeglądu znanych rozwiązań komunikacyjnych człowiek-komputer. W dalszej części zdefiniowano cel, tezę i zakres pracy oraz sformułowano zadania, których realizacja była niezbędna do wykazania słuszności postawionej tezy. Merytoryczna część pracy rozpoczyna się od rozważań na temat motoryczności człowieka w zakresie ruchów głowy i mimiki twarzy. Następnie przedstawiono analizę rozwiązania z wykorzystaniem autorskiego modelu matematycznego. Badania przeprowadzone w pracy były ukierunkowane na praktyczne zastosowanie, dlatego zamieszczono projekt rozwiązania z parametrami urządzenia oraz zaprezentowano prototyp. Eksperymenty, których opis został zamieszczony w pracy, zostały przeprowadzone z wykorzystaniem opracowanego prototypu i pozwoliły wykazać efektywność i precyzję opracowanego interfejsu komunikacyjnego. W zakończeniu pracy podsumowano uzyskane rezultaty, przedstawiono osiągnięcia autora oraz podkreślono słuszność postawionej w pracy tezy. Abstract This PhD thesis describes innovative human-computer interface designed primarily for disabled persons. Developed interface allows effective and precise change of location of cursor on the screen through small head movements and execution of system events through blinking eyes. This thesis begins by reviewing the known solutions of human-computer interaction. Next, author formulated thesis and tasks to do. Main part of the thesis begins by reflection on human movements in the context of the proposed control methods. Then author described the proposed control method, using author's mathematical model. Research carried out in this thesis are focused on practical application therefore this PhD thesis includes parameters of potential control device and description of prototype. Experiments which are described in this thesis has been carried out using the prototype. Results of experiments showed effectiveness and precision of the developed interface. At the end, autor summarizes the obtained results and proves the validity of the thesis. 3 Spis treści 1 Wstęp 7 1.1 Model komunikacji........................................................................................................11 1.2 Przegląd powszechnych rozwiązań komunikacyjnych człowiek-komputer.................13 1.3 Przegląd rozwiązań komunikacyjnych do specjalnych zastosowań..............................16 2 Cel, teza i zakres pracy 23 3 Wybrane problemy motoryczności człowieka 27 3.1 Motoryczność człowieka w zakresie ruchów głowy.....................................................27 3.2 Motoryczność człowieka w zakresie mrugnięć oczu....................................................31 3.3 Wpływ światła podczerwonego na gałkę oka...............................................................32 4 Analiza rozwiązania 33 4.1 Sterowanie kursorem poprzez niewielkie ruchy głowy................................................33 4.1.1 Prezentacja kursora na ekranie..............................................................................35 4.1.2 Rejestracja obrazu z kursorem...............................................................................38 4.1.3 Rozpoznawanie i lokalizacja kursora....................................................................41 4.1.4 Zmiana położenia kursora w systemie...................................................................43 4.1.5 Kursory jednobarwne.............................................................................................49 4.1.6 Kursory wielobarwne.............................................................................................56 4.1.7 Kursory o unikatowym kształcie...........................................................................61 4.1.8 Unikatowy wzór wyświetlany w sąsiedztwie kursora systemowego....................63 4.1.9 Efekt brzegowy......................................................................................................68 4.2 Sterowanie poprzez mrugnięcia oczu............................................................................73 4.2.1 Rejestracja obrazów oczu......................................................................................74 4.2.2 Rozpoznawanie mrugnięć oczu.............................................................................78 4.2.3 Analiza sygnałów generowanych na podstawie mrugnięć oczu............................83 4.3 Klawiatura ekranowa i wprowadzanie tekstu................................................................88 5 5 Model matematyczny 93 6 Rozwiązanie praktyczne 109 6.1 Projekt urządzenia.......................................................................................................109 6.1.1 Budowa urządzenia..............................................................................................110 6.1.2 Parametry kamery rejestrującej obraz ekranu......................................................113 6.1.3 Parametry mikrokamer rejestrujących obrazy oczu.............................................115 6.1.4 Komunikacja z komputerem................................................................................116 6.1.5 Wpływ zewnętrznych warunków oświetleniowych.............................................117 6.2 Prototyp urządzenia.....................................................................................................117 6.2.1 Sprzęt...................................................................................................................117 6.2.2 Oprogramowanie.................................................................................................121 7 Eksperymenty 125 7.1 Szybkość oraz precyzja zmiany położenia kursora na ekranie...................................125 7.2 Skuteczność rozpoznawania mrugnięć oczu...............................................................129 7.3 Opinie użytkowników.................................................................................................131 8 Obszary zastosowań 135 9 Zakończenie 137 Bibliografia 141 6 Rozdział 1 Wstęp Komputer to wspaniałe urządzenie pozwalające wykonywać ogromną pracę obliczeniową za człowieka, dające możliwość komunikacji człowieka z innymi ludźmi, dostęp do niezliczonej ilości informacji cyfrowych i rozrywkę. Dzisiejsza egzystencja człowieka w dużej mierze opiera się na działaniach ściśle związanych z obsługą komputera. Konieczny jest interfejs umożliwiający wprowadzanie do komputera danych, sterowanie jego pracą oraz interfejs pozwalający odczytywać efekty pracy komputera. Zagadnienie komunikacji człowiek-komputer (ang. HCI - Human- Computer Interaction) odgrywa zatem istotną rolę w całej historii rozwoju komputerów. Początkowe interfejsy komunikacyjne były proste, powolne i nieergonomiczne. Pierwsze komputery były obsługiwane wyłącznie przez wykwalifikowanych programistów i operatorów. Mała grupa wyszkolonych pracowników nie determinowała szybkiego rozwoju interfejsów. Sytuacja zmieniła się diametralnie z chwilą wprowadzenia komputerów osobistych w latach 70-tych XX wieku. Komputery stały się powszechnie dostępne. Były używane przez ludzi z różnych środowisk, grup społecznych, krajów. Używali ich finansiści, handlowcy, naukowcy, przedsiębiorcy, lekarze, ludzie z branży obronnej czy rozrywki. Obsługa komputera przestała być domeną programistów, a stała się powszechna i skierowana do różnych grup społecznych. Był to przełomowy moment w rozwoju interfejsów komunikacyjnych człowiek-komputer. Interfejsy zaczęły być coraz szybsze, mniejsze, zaczęły lepiej wyglądać i przede wszystkim wzrosła ich ergonomia. Skończył się okres, kiedy to człowiek dostosowywał się do istniejących interfejsów. Od tej pory interfejsy były dostosowywane do potrzeb i możliwości człowieka. Z czasem komputery stawały się coraz szybsze i tańsze. Znalazły zastosowanie w wielu prywatnych domach i niemal każdej gałęzi przemysłu. Daje to ogromne możliwości twórcom interfejsów komunikacyjnych człowiek-komputer, by obcowanie z komputerami zarówno tymi osobistymi jak i przemysłowymi, stawało się jeszcze wygodniejsze, szybsze i bardziej intuicyjne. 7 W historii można wyróżnić trzy okresy, w których zmieniały się relacje pomiędzy komputerem a człowiekiem, co miało również wpływ na rozwój interfejsów komunikacyjnych [1-3]: • era mainframe; jeden komputer - wielu ludzi (lata 60-te XX wieku), • era komputerów osobistych; jeden komputer - jeden człowiek (lata 80-te XX wieku), • era wszechstronności; wiele komputerów - jeden człowiek (początek XXI wieku). Na rysunku 1.1 przedstawiono udział w globalnym rynku trzech głównych trendów rozwoju komputerów na przełomie lat [2]. Rys. 1.1. Główne trendy rozwoju komputerów. Pierwszy okres (era mainframe) to początki komputerów wytwarzanych masowo. Mowa tu o latach 60-tych XX wieku. Był to okres, w którym do obsługi jednego komputera potrzebnych było wielu ludzi. Komputery nie były dostępne dla wszystkich. Obsługą komputera zajmowali się wyłącznie ludzie o wysokich kwalifikacjach występujący w trzech rolach: zarządzający, programiści, operatorzy [4]. Zarządzający nadzorowali projekty, programiści tworzyli programy, operatorzy natomiast obsługiwali komputer. Interfejsy komunikacyjne były wtedy bardzo proste. Programy zapisywane były na kartach perforowanych lub taśmach perforowanych. Jeden program mógł liczyć kilkaset, a nawet kilka tysięcy kart, które były kolejno wprowadzane do czytnika komputera. Na wynik czekało się nawet kilka dni, a w przypadku pomyłki w zapisie programu całą operację zaczynano od początku. Drugi okres (era komputerów osobistych) to okres przełomowy. Jego początek określa się na lata 80-te XX wieku. Faktycznie został zapoczątkowany w latach 70-tych w wyniku wpro8 wadzenia do sprzedaży komputerów osobistych [5]. W tym okresie na jeden komputer przypadał jeden użytkownik. Korzystanie z komputera nie było jeszcze powszechne. Wiele firm i instytucji wprowadzało komputery dla usprawnienia pracy, ale dla większości ludzi dostęp do komputera był trudny i niekoniecznie potrzebny. Wraz ze wzrostem wydajności komputerów i spadkiem ich ceny znajdowały coraz szersze grono użytkowników. W tym okresie ustandaryzował się, stosowany do dziś, schemat komunikacji zaproponowany już w 1963 roku przez Ivana Sutherlanda [6]. Jako interfejsy wejścia wykorzystywano mysz komputerową (początkowo pióro świetlne) oraz klawiaturę. Mysz była stosowana jako urządzenie wskazujące natomiast klawiatura służyła do sterowania pracą komputera i wprowadzania tekstu. Jako interfejs wyjścia na stałe wprowadzono monitor. Lata 80-te były również początkiem rozwoju graficznych interfejsów użytkownika. Początkowo nowy sposób prezentacji informacji był uciążliwy dla stałych użytkowników przyzwyczajonych do wprowadzania poleceń. Graficzne interfejsy były natomiast atrakcyjne dla nowych użytkowników i użytkowników okazjonalnych. Przyczyniły się one do poprawy komfortu pracy z komputerem, a tym samym powiększyły grono zainteresowanych komputerem ludzi [4]. Trzeci okres (era wszechstronności) przypada na początek XXI wieku. Rozwój technologii pozwolił przyśpieszyć pracę komputerów. Stały się one tańsze, a tym samym powszechniejsze i obecne w wielu dziedzinach życia codziennego. Na jednego człowieka zaczęło przypadać wiele komputerów. Wymusiło to bardzo szybki rozwój interfejsów komunikacyjnych. Interfejsy musiały być dostosowywane już nie tylko do różnych użytkowników, ale i różnych urządzeń. Pierwsza prognoza uformowania się tzw. trzeciej fali, tj. ery wszechstronności (wielu komputerów przypadających na jednego człowieka), pojawiła się w roku 1998. Sformułował ją Mark Weiser z Computer Science Lab w Xerox PARC [2]. W literaturze można znaleźć podział ery wszechstronności. Okres w jakim się teraz znajdujemy nazywany jest erą mobilności [1]. Na jednego człowieka przypada kilka komputerów. W dużym stopniu przyczynił się do tego rozwój komputerów przenośnych. Początkowo laptopów później dużo mniejszych i lżejszych ultrabooków i netbooków. Największy rozwój w ostatnich latach notują smartfony i tablety. W przypadku laptopów schemat komunikacji był identyczny jak w przypadku komputerów stacjonarnych. Jedynie mysz komputerowa została zastąpiona touchpadem. Dużym przełomem było upowszechnienie się początkowo smartfonów a następnie tabletów. Klawiaturę i mysz zastąpiły ekrany dotykowe. Jedno urządzenie realizuje zarówno wejście jak i wyjście. Ekran nie tylko służy do prezentacji użytkownikowi informacji, 9 ale również do wskazywania i wybierania poprzez dotyk. Ta forma komunikacji niezwykle szybko została zaakceptowana przez rożnych użytkowników z różnych części świata. Prawdziwa era wszechstronności ma się dopiero zacząć. Rozwój techniki komputerowej jest bardzo szybki. Według prawa Moore'a ekonomicznie optymalna liczba tranzystorów w układzie scalonym zwiększa się dwukrotnie z każdym rokiem [7]. W rzeczywistości dwukrotny wzrost następuje w ciągu 24 miesięcy. Najnowsze odkrycia z dziedziny inżynierii materiałowej, jak choćby grafen [8, 9], pozwalają przypuszczać, że rozwój ten utrzyma się na co najmniej tak wysokim poziomie albo zostanie przyspieszony. Szacuje się, że w latach 20-tych XXI wieku na jednego człowieka będą przypadać setki komputerów. Przyszłość HCI będzie dynamiczna i pełna niespodzianek. Nie da się jednak przewidzieć jak będą wyglądały interfejsy przyszłości. Jest to zależne od postępu w branży informatyki i psychologii człowieka. Jeżeli lepiej zrozumiemy człowieka będziemy mogli kreować lepsze rozwiązania komunikacyjne. Obszary, takie jak AI i rzeczywistość wirtualna, otwierają nowe drzwi przed komunikacją człowiek-komputer. Nowe urządzenia komunikacyjne noszone jak ubrania lub w postaci niewielkich gadżetów są przyszłością HCI [10]. Niektórzy naukowcy próbują przewidzieć przyszły rozwój komputerów i interfejsów komunikacyjnych człowiek-komputer. Komputery staną się tak duże jak wyświetlacze, które to będą dostosowane do potrzeb i przeznaczenia. Będą tak duże jak biurko albo jak ściana. Sterowanie komputerem będzie interakcją z wyświetlaczem [11]. Nie będzie potrzeby przenoszenia komputera. W kolejnym pomieszczeniu będzie następny (większy lub mniejszy), a wychodząc z domu będziemy mieli przy sobie jeszcze jeden mały i lekki. Wszystkie będą miały dostęp do tych samych danych niezależnie gdzie będziemy. Typowa stacja robocza przestanie istnieć. Komputery będą niemal wszędzie i będą sterowały i wspomagały każdą dziedzinę naszego życia. Główny problem twórców interfejsów komunikacyjnych człowiek-komputer zostanie zdefiniowany jako wizualizacja człowieka w całkowicie cyfrowej przyszłości, gdzie technologia będzie rozumieć ludzkie pragnienia, oczekiwania i aspiracje z uwzględnieniem etyki i wartości społecznych [12]. 10 1.1 Model komunikacji Komunikację człowiek-komputer można podzielić na dwie zasadnicze grupy pod względem kierunku komunikacji. Komunikacja może odbywać się od człowieka do komputera i mówimy wtedy o interfejsach wejścia. Możliwa jest również komunikacja w drugą stronę, tj. od komputera do człowieka, tzw. interfejsy wyjścia. Model komunikacji człowiek-komputer składa się z czterech elementów (rysunek 1.2) [10]: • człowiek/użytkownik, • komputer/system, • interfejs wejścia, • interfejs wyjścia. Rys. 1.2. Model komunikacji człowiek-komputer. Człowiek/użytkownik Przez użytkownika rozumiemy człowieka korzystającego z komputera bądź systemu. Jest to najważniejszy element całego modelu. Człowiek rozpoczyna komunikację i na człowieku komunikacja się kończy. Wszystkie elementy interfejsu powinny cechować się wysoką użytecznością i być dostosowane do możliwości i komfortu człowieka [13]. Do obsługi interfejsów wejścia człowiek najczęściej używa rąk. Ręce umożliwiają wykonywanie bardzo skomplikowanych ruchów z dużą szybkością i precyzją. Są wykorzystywane przez człowieka do wykonywania bardzo wielu czynności w życiu codziennym i pracy, dlatego też zostały wykorzystane przez twórców interfejsów jako naturalna możliwość komunikacji 11 człowieka z komputerem. Człowiek może również wykorzystać do komunikacji ruchy innych części ciała [14], mowę lub nawet myśli [15]. Do odbioru informacji najczęściej wykorzystuje się wzrok. Człowiek najwięcej bodźców zewnętrznych odbiera poprzez zmysł wzroku. Jest to zatem najwygodniejsza forma komunikacji. Część komunikacji jest również realizowana poprzez słuch. Do rzadziej spotykanych form komunikacji należy, np dotyk. Komputer/system Komputer bądź system jest celem komunikacji, obiektem któremu wydawane są polecenia i do którego wprowadzane są dane. Rolą komputera jest również prezentowanie danych użytkownikowi. Możliwości komunikacji komputera z człowiekiem są bardzo duże. Istniejące interfejsy pozwalają wykorzystać do komunikacji niemal wszystkie zmysły człowieka. Interfejs wejścia Jest to interfejs odpowiedzialny za przekazywanie informacji bądź poleceń od człowieka do komputera. Tego typu interfejsy są projektowane tak, by rejestrowały pewne określone zachowanie człowieka i przenosiły je na komputer w postaci zrozumiałych dla niego informacji. Interfejsy wejścia są bardzo zróżnicowane. Nie chodzi tylko o rodzaj rejestrowanych zachowań, ale również o sposób tej rejestracji, metody łączności z komputerem, kształt i ergonomię. Zdecydowana większość interfejsów wejścia obsługiwana jest poprzez dłonie. Sposobów sterowania dłońmi i rodzajów generowanych w ten sposób informacji jest bardzo wiele. Nie są jednak jedyną metodą sterowania pracą komputera. Istnieją interfejsy wykorzystujące ruch innych części ciała, np. głowy lub wręcz ruchy całego ciała [14]. Możliwe jest również sterowanie poprzez rejestrację i analizę mowy lub analizę fal elektromagnetycznych emitowanych przez mózg [15]. Interfejs wyjścia Jest to interfejs umożliwiający prezentowanie informacji wygenerowanych przez komputer człowiekowi. Interfejsy tego typu są równie istotne, jak interfejsy wejścia. Komputer realizuje polecenia człowieka w wyniku czego generuje dużą ilość informacji. Człowiek oczekuje wglą12 du do danych wygenerowanych przez komputer, co determinuje istnienie interfejsu, który to umożliwia. Sposób prezentacji danych może być bardzo różny i opierać się na wielu zmysłach człowieka. Nie mniej jednak większość interfejsów wyjścia wykorzystuje wzrok człowieka. Mowa tu o wszelkiego rodzaju ekranach, których rozwój jest bardzo dynamiczny. Na przełomie lat zmieniła się technologia działania ekranów, liczba wyświetlanych barw i rozdzielczość. 1.2 Przegląd powszechnych rozwiązań komunikacyjnych człowiek-komputer Najbardziej rozpowszechnionym duetem interfejsów wejścia realizujących komunikację człowieka z komputerem są mysz komputerowa i klawiatura. Prototyp myszy komputerowej został opracowany w 1963 roku przez Douglasa Engelbarta a oficjalna publikacja dotycząca tego urządzenia pojawiła się w 1965 roku [16]. Mysz pozwala przenieść ruch ręki człowieka na ruch kursora na ekranie. Jest to najpowszechniejsze urządzenie wskazujące wykorzystywane w pracy z komputerem. Dodatkowo mysz została wyposażona w przyciski (początkowo w jeden przycisk), które umożliwiają wykonywanie poleceń systemowych. Przez lata mysz komputerowa mocno ewoluowała. Początkowo myszy były wyposażone w kulkę, która obracała się podczas przesuwania myszy. Kulka przenosiła ruch na dwa wałki ustawione prostopadle względem siebie. Ruch jednego wałka determinował ruch kursora w osi pionowej a drugiego w osi poziomej [17]. Z czasem kulka została zastąpiona czujnikiem optycznym i laserem. Zmieniła się też metoda przesyłania informacji z myszy do komputera. Wiele współczesnych myszy pracuje bezprzewodowo i łączy się z komputerem drogą radiową. Nie mniej jednak do dnia dzisiejszego produkowane są myszy przewodowe i nie dotyczy to wyłącznie tanich modeli, ale również bardzo zaawansowanych i drogich najczęściej przeznaczonych dla graczy komputerowych. Duży postęp nastąpił w sferze wyglądu i ergonomii. Współczesne myszy są zaprojektowane tak, by dobrze leżały w dłoni a rozmieszczenie przycisków ułatwia ich używanie. By zwiększyć funkcjonalność myszy projektanci stopniowo wprowadzali coraz większą liczbę przycisków i dodatkowe kółka do szybszego i wygodniejszego przewijania tekstu. Klawiatura jest urządzeniem przeznaczonym głównie do wprowadzania tekstu. Koncepcja urządzenia została zapożyczona z maszyn do pisania. Klawiatury są jednym z podstawowych urządzeń wejścia w komputerach klasy PC. Przez lata zmieniała się technologia produkcji 13 i wygląd klawiatur, ale zasada działania jak i ogólny kształt pozostał niezmienny. Klawiatury znalazły również zastosowanie w komputerach przenośnych. Wprowadzanie tekstu poprzez klawiaturę jest na tyle skuteczne i wygodne, że nawet najnowsze urządzenia takie jak smartfony czy tablety, niewyposażone w fizyczne klawiatury, udostępniają klawiaturę ekranową wyświetlaną na ekranie urządzenia, której używanie jest niemal identyczne jak zwykłej klawiatury. Powstało wiele innych urządzeń komunikacyjnych sterowanych dłonią. Do bardziej znanych należą: trackball, joystick, joypad, touchpad, trackpoint, pióro świetlne [17-19]. Trackball jest urządzeniem koncepcyjnie bardzo zbliżonym do myszy kulkowej. Zasadnicza różnica polega na usytuowaniu kulki. W myszy kulka jest umieszczona od strony podłoża, by ruch dłoni mógł być przenoszony na ruch kursora. W trackballu kulka umieszczona jest na górze urządzenia, którego kształt umożliwia wygodne obracanie kulki palcami. Zasada przenoszenia ruchów kulki na ruch kursora jest identyczna jak w myszy. Takie rozwiązanie znalazło zastosowanie przy wykonywaniu wszelkiego rodzaju projektów graficznych. Przy takim usytuowaniu kulki, wykonywanie kliknięć przycisków urządzenia nie jest przenoszone na ruch kursora, co bardzo pozytywnie wpływa na precyzję. Trackball został zaprojektowany przez Ralpha Benjamina w roku 1946 a następnie opatentowany w roku 1947, czyli dużo wcześniej niż pierwsza mysz komputerowa. Początkowo trackball jako tajemnica wojskowa był stosowany wyłącznie w rozwiązaniach militarnych. Joystick jest manipulatorem złożonym z drążka umieszczonego na podstawce. Umożliwia przesyłanie do komputera informacji o przesunięciu w dwóch osiach. Stopień wychylenia drążka determinuje wartość przesunięcia. Pierwszy elektroniczny joystick został opatentowany przez Carlosa B. Miricka już w roku 1926 [20]. Pierwsze zastosowanie joysticka w grach wideo miało miejsce w roku 1967. Ta metoda sterowania znalazła szerokie zastosowanie. Joysticki stosuje się do sterowania wieloma maszynami od dźwigów przez wózki inwalidzkie po samoloty. W komputerach domowych joysticki wykorzystywane są głównie do sterowania grami komputerowymi i symulatorami lotów. Joypad znany również pod nazwami gamepad lub po prostu pad jest kontrolerem wykorzystywanym wyłącznie do gier komputerowych; częściej w konsolach niż komputerach klasy PC. Sterowanie w joypadzie odbywa się poprzez przyciski lub ewentualne gałki sterujące. Touchpad jest propozycją zastąpienia myszy w komputerach przenośnych. Jest to panel dotykowy umożliwiający zmianę położenia kursora na ekranie poprzez przesuwanie palca po 14 jego powierzchni. Najczęściej touchpady wykorzystują w swoim działaniu wykrywanie pojemności elektrycznej palca. Touchpady rozpoczęto stosować w komputerach przenośnych w latach 90-tych XX wieku i szybko stały się standardowym wyposażeniem niemal każdego laptopa. Trackpoint (lub inaczej pointing stick) to mały joystick umieszczony na środku klawiatury laptopa. Reaguje na siłę i kierunek nacisku, które są przekładane na zmianę położenia kursora na ekranie. Jego przeznaczeniem jest zastąpienie myszy, a dokładniej został zaprojektowany tak, by zminimalizować czas potrzebny na przeniesienie ręki z klawiatury na mysz. Został zgłoszony do patentu w roku 1996 przez IBM a jego twórcą był Edwin Joseph Selker [21, 22]. Pióro świetlne jest urządzeniem wskazującym. Dotknięcie piórem świetlnym ekranu pozwala wskazać na nim wybrany punkt. Wyposażone jest dodatkowo w przycisk, dzięki któremu możliwe jest wykonywanie określonych poleceń systemowych we wskazanym piórem miejscu ekranu. Pióra świetlne pojawiły się około 1955 roku. Obecnie są raczej nie stosowane. Na oddzielną uwagę zasługują ekrany dotykowe. Wraz z dynamicznym rozwojem i powszechnym wykorzystaniem smartfonów i tabletów ich zastosowanie w ostatnich latach rośnie bardzo szybko. Ekran dotykowy łączy w sobie dwa interfejsy. Z jednej strony jest to standardowy interfejs wyjścia, tj. ekran, na którym informacje są prezentowane użytkownikowi. Z drugiej strony ekran ten umożliwia poprzez dotyk wskazywanie na ekranie wybranych punktów. Dzięki tak zwanej funkcji multi-touch możliwe jest jednoczesne wskazywanie na ekranie wielu punktów. Wskazywanie wielu punktów i wzajemne relacje pomiędzy wskazywanymi punktami umożliwiają stosowanie dużej liczby gestów a tym samym dają szerokie możliwości sterowania komputerem. Rozwiązanie to spotkało się z bardzo pozytywnym odbiorem przez użytkowników. Wynika to z bardzo intuicyjnej i naturalnej dla człowieka metody sterowania polegającej na dotykaniu zaobserwowanych wzrokiem obiektów. Mysz czy klawiatura nie daje takiej możliwości. Na uwagę zasługuje fakt, że wspólną cechą powszechnie stosowanych rozwiązań komunikacyjnych jest wykorzystanie do sterowania rąk i fizyczny kontakt z urządzeniem sterującym. Jak już zostało nadmienione, człowiek wykorzystuje ręce do wykonywania bardzo dużej liczby czynności w życiu codziennym. Ręce umożliwiają dodatkowo wykonywanie różnorodnych ruchów z dużą precyzją i szybkością. Dlatego też twórcy interfejsów wejścia często wybierają taką formę komunikacji. 15 1.3 Przegląd rozwiązań komunikacyjnych do specjalnych zastosowań Oprócz powszechnie stosowanych rozwiązań komunikacyjnych człowiek-komputer wyróżnić należy rozwiązania o specjalnym zastosowaniu. Są to interfejsy mniej popularne, stosowane przez znacznie mniejszą liczbę użytkowników. Najczęściej rozwiązania te są bardzo zaawansowane technicznie. Spotyka się je w zastosowaniach medycznych, militarnych, przemysłowych, często służą poprawie jakości życia osób niepełnosprawnych bądź do rozrywki. Najbardziej znane interfejsy tego typu bazują na rozpoznawaniu gestów dłoni, analizie fal mózgowych, analizie ruchów głowy i oczu oraz na analizie ruchów całego ciała. Rozpoznawanie gestów dłoni to bardzo szerokie zagadnienie. W szczególności należy rozróżnić interfejsy wymagające fizycznego kontaktu z urządzeniem i interfejsy bezdotykowe. Te pierwsze najczęściej przybierają postać rękawic wyposażonych w szereg czujników pozwalających określić wzajemne ułożenie palców [23-26]. Interfejsy bezdotykowe są bardzo szeroko opisane w literaturze. W zdecydowanej większości schemat działania jest bardzo podobny. Optyczny rejestrator rejestruje obraz jednej lub obu dłoni użytkownika a komputer przetwarza i rozpoznaje pozyskane obrazy celem identyfikacji gestów. Próby budowy interfejsów umożliwiających sterowanie komputerem poprzez proste i intuicyjne gesty dłoni są podejmowane przez niezliczoną rzeszę naukowców. Niestety niewiele z nich cechuje się wysoką skutecznością i precyzją. Wynika to z trudności w prawidłowym rozpoznawaniu dłoni i jej ułożenia. Problemem jest zarówno wydobycie dłoni z obrazu jak i określenie, najczęściej na podstawie obrazu 2D, wzajemnego ułożenia palców. Uniemożliwia to swobodne i intuicyjne sterowanie. Wiele interfejsów rozpoznaje dłoń na podstawie barwy skóry [27-33]. Jest ona na tyle wyjątkowa wśród barw występujących w przyrodzie, że wyodrębnienie jej z obrazu nie powinno stanowić problemu [34]. Bardzo popularnym i skutecznym rozwiązaniem do wyodrębnienia z obrazu barwy skóry jest zastosowanie odległości Mahalanobisa [35]. Utrudnieniem jest jednak zewnętrzne oświetlenie, które może zmodyfikować barwę skóry, a tym samym uniemożliwić rozpoznanie. Bardziej zaawansowane rozwiązania wykorzystują między innymi falki Haara [36]. Niektóre rozwiązania bazują na kamerach rejestrujących głębię (odległość obiektów od kamery) [37-39]. Takie interfejsy pozwalają dokładniej zlokalizować dłoń, a nawet w większym stopniu zidentyfikować ułożenie palców. Do wyznaczania odległość obiektów od kamery możliwe jest wykorzystanie, np. stereowizji lub ultradźwięków [40]. 16 Niektórzy naukowcy podejmują próby rozpoznawania języka migowego zarówno metodami bezdotykowymi [41, 42], jak również z wykorzystaniem specjalnych rękawic [43, 44]. Jest to bardzo trudne zadanie i nie ogranicza się tylko do rozpoznawania gestów dłoni, ale również do wzajemnego ułożenia dłoni względem innych części ciała. Niezwykle interesującym i bardzo zaawansowanym technicznie rozwiązaniem komunikacyjnym jest analizowanie fal mózgowych [45]. Elektrody rozmieszczone na powierzchni skóry czaszki rejestrują zmiany potencjału elektrycznego. Zmiany te wynikają z aktywności neuronów kory mózgowej. Aktywność mózgu uzależniona jest od myśli badanego człowieka i od czynności jakie wykonuje on podczas badania. Istnieje zatem możliwość generowania przez człowieka zamierzonych, powtarzalnych sygnałów i ich detekcja poprzez elektroencefalograf. Nie jest to jednak zadanie proste. Natężenie fal mózgowych jest względnie małe, a sygnały rejestrowane elektrodami wymagają redukcji szumów. Zewnętrzne fale elektromagnetyczne, jak również bicie serca badanego czy mrugnięcia oczu [46], mogą zakłócać rejestrowane sygnały mózgowe. Głównym problemem jest niezwykle duża liczba neuronów w stosunku do liczby stosowanych elektrod. Nie mniej jednak podejmowane są próby analizy fal mózgowych i wykorzystania ich w komunikacji człowiek-komputer znanej lepiej pod nazwą komunikacja mózg-komputer (ang. BCI - Brain-Computer Interface). Komunikacja tego typu jest najczęściej skierowana do ludzi o wysokim stopniu niepełnosprawności ruchowej. Ludzie niemogący wykorzystać w komunikacji z komputerem żadnej znanej metody ruchowej, mogą sterować pracą komputera i komunikować się z otoczeniem poprzez myśli, tj. fale mózgowe. Sterowanie takie jest mocno uproszczone. Nie pozwala w sposób precyzyjny wskazać wybranego punktu ekranu ani szybko dokonywać wyborów [47-49]. Mimo to prowadzone są prace nad rozwojem interfejsów mózg-komputer przez wiele ośrodków naukowych [50-57]. Podjęto nawet próby budowy wózków inwalidzkich sterowanych poprzez analizę fal mózgowych [58, 59]. Choć interfejsy te znajdują zastosowanie głównie przez osoby niepełnosprawne, nie wykluczone, że dzięki rozwojowi techniki i determinacji naukowców interfejsy mózg-komputer staną się przyszłością komunikacji człowieka z maszynami, a może nawet innymi ludźmi. Już teraz prowadzone są prace nad interfejsami, które mogłyby być stosowane w życiu codziennym np. do sterowania urządzeniami w domu takimi jak oświetlenie czy klimatyzacja [60], komunikacji z telefonem komórkowym [61], zastąpienia myszy komputerowej [62] a nawet do sterowania grami komputerowymi [63, 64]. 17 Microsoft w 2010 roku wprowadził do sprzedaży urządzenie pozwalające sterować komputerem poprzez ruchy całego ciała - Kinect [65]. W założeniu jest to urządzenie przeznaczone do rozrywki i jest sprzedawane razem z konsolą gier Xbox. Wykrywa ono w czasie rzeczywistym położenie ciała użytkownika i na jego podstawie pozwala sterować wirtualnymi postaciami w grach [66]. Kinect umożliwia rejestrowanie obrazu otoczenia jak zwykła kamera, tj. rejestruje obrazy w przestrzeni barw RGB. Dodatkowo umożliwia rejestrowanie odległości obiektów od kamery a tym samym pozwala wydobyć z przestrzeni postać użytkownika. Specjalny algorytm rozpoznaje ułożenie ciała i prezentuje je w postaci szkieletu. Rejestracja głębi realizowana jest w paśmie światła podczerwonego. Emiter oświetla przestrzeń światłem podczerwonym w postaci siatki punktów. Kamera pracująca w paśmie światła podczerwonego rejestruje obraz tak oświetlonej przestrzeni. Analizując odległość pomiędzy sąsiednimi punktami, możliwe jest określenie odległość oświetlonego obiektu od kamery [65]. Kinect szybko został zastosowany do innych rozwiązań komunikacyjnych niż jego pierwotne przeznaczenie. Wielu konstruktorów interfejsów wykorzystało tę wydajną kamerę głębi do, np. rozpoznawania gestów dłoni [14, 67]. Śledzenie ruchów oczu (ang. eyetracking) jest ciekawym rozwiązaniem komunikacyjnym szczególnie w kontekście osób niepełnosprawnych. Należy wyróżnić dwa odmienne koncepcyjnie systemy tego typu. Jedna grupa to urządzenia montowane na głowie [68]. Druga grupa to interfejsy bazujące na rejestracji obrazów twarzy użytkownika przez kamerę umieszczoną w pobliżu monitora i detekcja oczu na zarejestrowanych obrazach [69, 70]. Interfejsy z pierwszej grupy najczęściej bazują na rozpoznawaniu źrenicy i analizie jej położenia [68]. Reingold [71] wykorzystał odbicie światła od powierzchni oka. Odbicie światła od oka wykorzystali również Poole i Ball [72] oraz Boulay [73] jako punkt odniesienia do wyznaczenia lokalizacji źrenicy. Niestety precyzja wyznaczania lokalizacji jest uzależniona od rozdzielczości kamery, która najczęściej jest niższa od rozdzielczości ekranu. Uniemożliwia to, np. szybkie, precyzyjne i intuicyjne sterowanie kursorem, ale jest wystarczające do uproszczonego sterowania pracą komputera. Istnieją interfejsy, które mają na celu wykrywanie jedynie mrugnięć oczu. Desai [74] wykorzystał w tym celu elektrookulogram (EOG). Sun et al. [75] do wykrywania mrugnięć wykorzystali algorytm oparty o ukryty model Markowa (HMM, ang. Hidden Markov Model) oraz maszynę wektorów nośnych (SVM, ang. Support Vector Machine). Z kolei Pimplaskar et al. [76] oraz Sugur et al. [77] zastosowali binaryzację i proste metody przetwarzania obrazów. 18 Jak przedstawili w swojej pracy Chau i Betke [78] w specyficznych przypadkach możliwe jest również wykorzystanie różnic pomiędzy sąsiednimi klatkami rejestrowanymi przez kamerę. Bardziej złożoną metodę zaprezentowali Park et al. [79] bazującą na modelowaniu twarzy 3D. Królak i Strumiłło opracowali metodę wykrywania mrugnięć bazującą na porównywaniu zarejestrowanych przez kamerę obrazów z pobranym wcześniej wzorcem [80]. Oprócz śledzenia oczu istnieją interfejsy śledzące ruchy głowy. Tu również możemy wyróżnić urządzenia montowane na głowie i takie, które rejestrują obraz głowy użytkownika poprzez kamerę umieszczoną w pobliżu monitora. Te drugie najczęściej opierają swoje działanie na wyznaczeniu trójwymiarowego modelu głowy bazując na obrazach dwuwymiarowych, co jest kosztowne obliczeniowo. Zostało to przedstawione w pracach La Cascji et al. [81] oraz Basu et al. [82]. Interfejsy wymagające montażu całego bądź pewnych elementów urządzenia na głowie użytkownika, choć mogą wydawać się mniej komfortowe w użytkowaniu, cechują się wysoką precyzją, jak na przykład metoda Houge et al. [83] i czasem nie wymagają od użytkownika, by jego twarz była zwrócona w kierunku kamery, co zaprezentowali Allison et al. [84]. Większość metod śledzenia głowy bazuje na przetwarzaniu i rozpoznawaniu obrazów pobranych z kamer. Liu et al. [85] wykorzystali techniki bazujące na szacowaniu ułożenia głowy pomiędzy kolejnymi klatkami wideo. Dobranie odpowiednich punktów pomiędzy dwoma sąsiednimi klatkami opiera się na metodzie SIFT (Skaloniezmiennicze przekształcenie cech, ang. Scale-Invariant Feature Transform). Murphy-Chutorian oraz Trivedi [86] oszacowali statyczne ułożenie głowy wykorzystując algorytm wirtualnego śledzenia bazującego na przetwarzaniu i rozpoznawaniu obrazów. Znajduje tu zastosowanie oparty o falki Haara algorytm AdaBoost. Kupetz et al. [87] wprowadzili przymocowaną do głowy tablicę diod IR (2x2). System śledzenia ruchów głowy wykorzystuje kamerę podczerwieni i algorytm do analizy rejestrowanych obrazów. Song et al. [88] opracowali metodę bazującą na detekcji twarzy wykorzystującą algorytm AdaBoost. Ruchy głowy są tu analizowane poprzez lokalizację twarzy. Twarz jest również źródłem informacji w pracy Mandala et al. [89]. W pierwszym kroku, z kilku inicjujących klatek, wyselekcjonowana zostaje barwa ludzkiej skóry. Pozwala to wykryć początkowe ułożenie twarzy/głowy. Następnie ruchy głowy są klasyfikowane przy użyciu SVM. Jian-Zheng i Zheng [90] ustalają pozycję głowy poprzez śledzenie cech punktów twarzy takich jak nozdrza. Użyli w tym celu algorytmu Lucasa-Kanadea (LK) do śledzenia cech punktów. Podobną metodę i ten sam algorytm LK użyli Z. Zhao et al. [91]. Y. Zhao i Yan [92] wykrywają skórę twarzy wykorzystując model barwy skóry YCbCr a następnie klasyfikują pozycję głowy wykorzystując 19 sztuczne sieci neuronowe. Kapoor i Picard [93] opisali system wizyjny, który wykrywa kiwanie i drgania głowy wykorzystując w tym celu kamerę rejestrującą światło podczerwone wyposażoną w diody IR. Do analizy obrazów z kamery wykorzystali HMM. Interesującym źródłem informacji może być również uzyskana w wyniku przetwarzania obrazów trajektoria głowy. Może być wykorzystana do rozpoznawania zachowania przy zastosowaniach w systemach nadzoru i wykrywaniu upadku. Moreno et al. [94] wykorzystali złożony system kamer: skalibrowany system stereowizyjny do śledzenia głowy w 3D. W systemie tym kształt głowy jest modelowany jako elipsa i jest śledzony z użyciem aktualizowanego histogramu barw. Rougier et al. [95] wykorzystując jedną kamerę i używając właściwego algorytmu analizy obrazów oblicza trajektorię 3D w czasie rzeczywistym. Do wykrywania ruchów głowy mogą zostać wykorzystywane akcelerometry i czujniki żyroskopowe montowane na głowie. Manogna et al. [96] wykorzystali akcelerometr zainstalowany na czole użytkownika. Sygnały sterujące z urządzenia pozwalają ustalić obroty głowy. King et al. [97] i Nguyen et al. [98] wykorzystali podobną technikę. Zbierają sygnały z dwuosiwego akcelerometru i uczą sztuczną sieć neuronową z wykorzystaniem informacji o orientacji głowy. S. Kim et al. [99] analizuje sygnały generowane przez czujnik żyroskopowy. Pozwala to na oszacowanie względnych współrzędnych ułożenia głowy. Wykrywanie ruchów głowy jest możliwe również poprzez wykorzystanie metod bazujących na sygnałach dźwiękowych. Sasou [100] analizuje sygnały z tablicy mikrofonów. W jego metodzie, głowa jest lokalizowana na podstawie dźwięków generowanych przez użytkownika. Można wyróżnić również metody wykorzystujące hybrydowe techniki śledzenia. Satoh et al. [101] wykorzystali żyroskop zamontowany na głowie i dodatkowo jedną kamerę rejestrującą obrazy z "lotu ptaka". J. Kim et al. [102] zintegrowali systemy śledzenia głowy i oczu. Zainstalowali oni diody LED na kasku i wykorzystali je do określenia pozycji i rotacji głowy poprzez analizę obrazów. Te same diody są wykorzystywane w systemie śledzenia oczu. Iwata i Ebisawa [103] zaproponowali system, w którym wykrywane są źrenice do śledzenia oczu a nozdrza do określenia obrotu głowy. Ruchy głowy są określane po analizie tych dwóch informacji. Perez [104] opisał system, w którym używane są dwie różne techniki: interfejs wizyjny wykorzystujący kamerę internetową i czujniki inercyjne. Orientacja głowy jest wyznaczana poprzez algorytm Kalman Fusion. Al-Rahayfeh i Faezipour [105] zaprezentowali przegląd metod stosowanych do śledzenia oczu i wykrywania ruchów głowy. Przegląd metod śledzenia oczu został również zaprezentowany w pracy H. Singha i J. Singha [106]. 20 Warto także wspomnieć o pracach polskich. Strumiłło i Pajor [107] zaproponowali metodę wykrywania ruchów głowy oraz identyfikacji zamknięcia/otwarcia oczu bazującą na rozpoznawaniu twarzy. Z kolej Bratoszewski i Czyżewski [108] zaproponowali metodę śledzenia głowy przy wykorzystaniu kamery mierzącej czas powrotu wiązki promieniowania podczerwonego odbitej od oświetlanego obiektu (ang. Time Of Flight). Po zastosowaniu odpowiednich metod przetwarzania obrazu możliwe jest zlokalizowanie głowy w przestrzeni 3D. Znaczna część interfejsów przedstawionych powyżej została zaprojektowana z myślą o osobach niepełnoprawnych. Osoby takie rzadko kiedy mogą korzystać z powszechnie stosowanych interfejsów. Komunikacja z komputerem jest dla nich mocno utrudniona i niekomfortowa. Tradycyjne interfejsy komunikacyjne są zatem niewystarczające. Liczba rozwiązań umożliwiających komunikację z komputerem osobom niepełnosprawnym i ich różnorodność świadczy o złożoności problemu. Rozwiązanie nie jest trywialne. Przede wszystkim stopień niepełnosprawności jest zróżnicowany. Interfejsy często są projektowane pod konkretną grupę osób niepełnosprawnych wykorzystując ich możliwości. Złożoność problemu wynika również z wykorzystywanych w komunikacji rejestrowanych zachowań człowieka i sposobu ich rejestracji. Rejestrowane zachowania są często nieintuicyjne a wręcz nieakceptowalne dla osób pełnosprawnych, a metody rejestracji mogą bazować na złożonych obliczeniowo analizach obrazów czy sygnałów. Ogromna liczba interfejsów przeznaczonych dla osób niepełnosprawnych świadczy o dużym zapotrzebowaniu na tego typu interfejsy. Badania przeprowadzone w ramach niniejszej rozprawy koncentrują się nad zagadnieniem komunikacji człowiek-komputer w kontekście osób niepełnosprawnych. Założono, że możliwa jest komunikacja poprzez ruchy głowy i elementy mimiki twarzy. Przeprowadzone badania i eksperymenty znajdowały się na pograniczu śledzenia ruchów głowy i oczu. Zbadano możliwe rozwiązania i je opisano. W wyniku badań wykazano możliwość budowy interfejsu realizującego przesuwanie kursora na ekranie w miejsce, na które zwrócona jest twarz użytkownika. Dodatkowo wykazano możliwość interpretacji mrugnięć oczu i wykonywanie na ich podstawie poleceń systemowych. Przeprowadzając eksperymenty wykazano wysoką skuteczność i ergonomię badanych rozwiązań. Zbudowany w oparciu o wyniki przeprowadzonych badań interfejs, nie został odnaleziony w literaturze. Został on zatem zgłoszony do Urzędu Patentowego jako wynalazek [109]. Badania literatury i zgłoszeń patentowych przeprowadzone przez Urząd Patentowy również nie wykazały istnienia podobnego rozwiązania. 21 Rozdział 2 Cel, teza i zakres pracy Biorąc pod uwagę potrzebę komunikacji człowiek-komputer przez osoby niepełnosprawne i możliwości sterowania jakimi te osoby dysponują oraz zakładając, że w rozwiązaniu zostanie wykorzystana kamera rejestrująca ekran umieszczona na głowie użytkownika, oraz dwa czujniki rejestrujące mrugnięcia oczu, postawiono w pracy następującą tezę: „Wykorzystanie ruchów głowy oraz mrugnięć oczu pozwala na skuteczne sterowanie kursorem ekranu oraz generowanie sygnałów sterujących pracą komputera w komunikacji człowiek-komputer”. Do udowodnienia postawionej tezy przy uwzględnieniu wyżej omówionych założeń konieczna była realizacja sześciu zadań: 1. Zbadanie możliwości szybkiej i precyzyjnej zmiany położenia kursora na ekranie poprzez niewielkie ruchy głowy. 2. Zbadanie możliwości precyzyjnego identyfikowania mrugnięć oczu. 3. Opracowanie puli ergonomicznych gestów oczu wraz z metodą przypisania do nich poleceń systemowych. 4. Zbadanie możliwości zbudowania urządzenia realizującego opracowane metody sterowania. 5. Budowa prototypu urządzenia. 6. Przeprowadzenie eksperymentów z wykorzystaniem prototypu, celem weryfikacji poprawności i skuteczności opracowanych metod sterowania. Praca została podzielona na dziewięć rozdziałów. Dwa pierwsze to rozdziały wstępne zawierające opis ogólnych problemów komunikacji człowiek-komputer. Opisano w nich rodzaje i metody komunikacji. Wyszczególniono interfejsy ogólnego zastosowania oraz te o specjalnym przeznaczeniu, projektowane głównie z myślą o osobach niepełnosprawnych. Dodatkowo w rozdziale 2 postawiono tezę oraz nakreślono główne zadania do realizacji i zakres pracy. 23 Rozdział 3 zawiera opis motoryczności człowieka w zakresie wymaganym do sterowania komputerem poprzez opracowane rozwiązanie komunikacyjne. Największy nacisk został położony na możliwości ruchowe głowy. Przedstawiono dane z literatury odnoszące się do zakresów ruchowych człowieka oraz przedstawiono z jakimi ograniczeniami się to wiąże. Przedstawiono również możliwości człowieka w zakresie mrugnięć oraz ich wpływ na sterowanie poprzez opracowaną metodę. Dodatkowo omówiono problem wpływu światła podczerwonego na gałkę oka. Kolejny rozdział (rozdział 4) zawiera analizę rozwiązania. Jest to największy rozdział i składa się z trzech części odzwierciedlających trzy opracowane metody sterowania. W pierwszej części (podrozdział 4.1) opisano sterowanie kursorem poprzez niewielkie ruchy głowy. Zamieszczono szczegółowy opis wszystkich badanych zagadnień związanych ze zmianą położenia kursora w opracowanej metodzie od wyświetlenia kursora na ekranie, przez jego rejestrację, przetwarzanie i rozpoznawanie, po lokalizację i wyznaczenie zmiany położenia. Przedstawiono cztery opracowane i zbadane grupy kursorów omawiając, dla każdej z nich osobno, zagadnienia prezentacji na ekranie oraz przetwarzania i rozpoznawania. Zwrócono uwagę na problemy pojawiające się w każdej grupie wraz z metodami rozwiązania niektórych z nich oraz nakreślono obszary zastosowania. W drugiej części czwartego rozdziału (podrozdział 4.2) przedstawiono opracowaną metodę sterowania poprzez mrugnięcia oczu. Opisano tam zasadę działania opracowanego rozwiązania komunikacyjnego, wraz ze szczegółowym objaśnieniem badanych zagadnień z nim związanych. Skupiono się na problemie rozproszenia światła odbitego od rożnych powierzchni oraz na sposobie wykorzystania tego zjawiska przy rozpoznawaniu mrugnięć oczu. Dodatkowo w tej części rozdziału poświęcono dużo uwagi analizie sygnałów generowanych na podstawie mrugnięć oczu oraz przypisaniu im poleceń systemowych. W trzeciej części (podrozdział 4.3) przedstawiono metodę wprowadzania tekstu poprzez zastosowanie klawiatury ekranowej z wykorzystaniem opracowanych rozwiązań komunikacyjnych. Wskazano możliwość wykorzystania niewielkich ruchów głowy i mrugnięć oczu do skutecznego wprowadzania tekstu. Umieszczono tam ogólne informacje o klawiaturach ekranowych. Podano też jakie klawiatury możliwe są do wykorzystania przy proponowanej metodzie sterowania. Dodatkowo przedstawiono możliwości w zakresie szybkości wprowadzania tekstu poprzez klawiaturę ekranową i jakie czynniki wpływają na ten parametr. 24 W rozdziale 5 zaprezentowano model matematyczny opisujący sterowanie poprzez niewielkie ruchy głowy. Przeanalizowano wpływ ruchu głowy na zmianę położenia kursora na ekranie w zależności od różnego rodzaju parametrów takich jak: odległość użytkownika od ekranu, przekątna ekranu, proporcja ekranu oraz rozdzielczość. Wyznaczono wzory opisujące niezbędne zależności oraz sporządzono wykresy prezentujące uzyskane wyniki. Rozdział 6 zawiera rozważania nad możliwością budowy interfejsu wykorzystującego opracowane rozwiązania komunikacyjne. Przedstawiono w nim wyniki badań nad szczegółami budowy interfejsu realizującego opracowane metody sterowania, warianty wykonania oraz wyznaczone eksperymentalnie parametry podzespołów. Dodatkowo zaznaczono wpływ zewnętrznych warunków oświetleniowych na pracę urządzenia. W rozdziale 6 skupiono się również na opisie prototypu urządzenia zbudowanego w ramach pracy. Posłużył on do wykazania skuteczności opracowanych metod sterowania oraz do przeprowadzenia niezbędnych eksperymentów. Zaprezentowano zarówno opis zbudowanego urządzenia jak i oprogramowania wspomagającego jego pracę. W kolejnym rozdziale (rozdział 7) przedstawiono opis najważniejszych przeprowadzonych eksperymentów. Opisano badania szybkości i precyzji zmiany położenia kursora na ekranie, skuteczności rozpoznawania mrugnięć oczu oraz opinie użytkowników. Przedstawiono tam sposób przeprowadzenia badań, ich rezultat oraz analizę wyników. W rozdziale 8 nakreślono potencjalne obszary zastosowania opracowanego interfejsu komunikacyjnego. Rozdział 9 zawiera podsumowanie. Przedstawiono stopień realizacji nakreślonych w pracy zadań oraz uzyskane rezultaty, które potwierdziły słuszność postawionej w pracy tezy. Rozdział ten jest także próbą opisu indywidualnych osiągnięć autora. 25 Rozdział 3 Wybrane problemy motoryczności człowieka Opracowany interfejs komunikacyjny bazuje na ruchach głowy i elementach mimiki twarzy. Ważną kwestią jest zbadanie w jakim zakresie człowiek może wykonywać ruchy głowy. Jakie są możliwość i ograniczenia w tym zakresie oraz jaki ma to wpływ na opracowaną metodę. Należy określić, w jakim zakresie możliwe jest zastosowanie opracowanego rozwiązania komunikacyjnego, by jego używanie nie wykraczało poza możliwości ruchowe człowieka i co bardzo ważne, by było komfortowe. Mimika twarzy, wykorzystana w opracowanej metodzie sterowania, ogranicza się do mrugnięć oczu. Konieczne jest zbadanie, jakie możliwości mrugania posiada człowiek, by opracowana metoda sterowania nie obciążała potencjalnego użytkownika. Sterowanie w zakresie mimiki również musi być komfortowe. Opracowana metoda sterowania poprzez mrugnięcia bazuje na oświetleniu oka światłem podczerwonym (podrozdział 4.2). Ważne jest określenie normy dopuszczalnego natężenia światła, które jest nieszkodliwe dla ludzkiego oka. 3.1 Motoryczność człowieka w zakresie ruchów głowy Do sterowania kursorem w opracowanej metodzie konieczne jest wykonywanie czterech rodzajów ruchów głowy. Są to: rotacja w lewo, rotacja w prawo, zgięcie i wyprost. Ruchy te przedstawiono na poglądowym rysunku 3.1. Ruchy polegające na pochyleniu głowy w prawo lub w lewo nie są wykorzystywane do sterowania w opracowanej metodzie, dlatego zakresy tych ruchów nie zostały uwzględnione w tym rozdziale. Nie mniej jednak wpływ tych ruchów na zmianę położenia kursora na ekranie opisano w podrozdziale 4.1.4 W literaturze można spotkać dużą rozbieżność w opisie maksymalnych ruchów głowy. Wynika to z indywidualnych 27 Rys. 3.1. Rodzaje ruchów głowy wykorzystane do sterowania. możliwość badanych osób. Dodatkowo należy zwrócić uwagę na rodzaj ruchu. Można wyróżnić aktywny zakres ruchu, bierny zakres ruchu oraz strefę neutralną [110]. Istotny dla opracowanej metody sterowania jest aktywny zakres ruchu, czyli ruchy możliwe do samodzielnego wykonania przez człowieka oraz strefa neutralna, czyli zakres ruchów w kręgosłupie szyjnym przy minimalnym napięciu mięśni i więzadeł. Ograniczenie ruchów głowy do strefy neutralnej gwarantuje użytkownikowi największy komfort pracy. W tabeli 3.1 zestawiono zakresy ruchów głowy odszukane w literaturze [110-114]. Tab. 3.1. Zakresy ruchów głowy człowieka. prawa/lewa rotacja [ °] zgięcie [ °] wyprost [ °] aktywny zakres ruchu 48-82 35-70 48-90 strefa neutralna ~35 ~10 ~10 Duży wpływ na zakres ruchów ma również wiek badanych osób. Z wiekiem spada możliwość wykonywania ruchów głową [111]. Spadek ten został zaprezentowany na rysunku 3.2 z uwzględnieniem średniego zakresu ruchów głowy w przedziale wiekowym od 10 do 90 lat dla czterech ruchów istotnych dla opracowanej metody sterowania. Na maksymalny zakres ruchów głowy może mieć również wpływ różnego rodzaju upośledzenie. Wpływ ten jest trudny do przewidzenia i zależy od indywidualnej sytuacji badanej osoby. 28 Rys. 3.2. Zmniejszenie zakresu ruchów głowy z wiekiem. Zakres zastosowania opracowanej metody sterowania Znając możliwości ludzkiego organizmu w zakresie ruchów głowy, możliwe jest wyznaczenie potencjalnego zakresu zastosowania, opracowanego interfejsu komunikacyjnego. Wykorzystując dane z tabeli 3.1 i wzory 5.1a i 5.1b wyprowadzone w rozdziale 5 sporządzono wykres zależności pomiędzy maksymalną możliwą do zastosowania wielkością ekranu, a odległością użytkownika od ekranu (rysunek 3.3). Na wykresie naniesiono dwie krzywe prezentujące opisywaną zależność dla: • maksymalnego zakresu ruchu, • strefy neutralnej. Przez maksymalny zakres ruchu należy rozumieć najmniejszą wartość aktywnego zakresu ruchów głowy człowiek odszukaną w literaturze. Celowo wybrano najmniejszą wartość, by określić możliwości wykorzystania opracowanej metody sterowania przez wszystkich potencjalnych użytkowników. Wyznaczone proste dzielą obszar wykresu na trzy strefy. Najmniejsza z nich znajduje się poniżej prostej opisującej strefę neutralną. Układy ekranów i odległości od nich, znajdujące się w tej strefie, umożliwiają sterowanie przy minimalnym wysiłku użytkownika. Właściwy dobór monitora do odległości z jakiej następuje sterowanie, pozwala obniżyć wysiłek podczas sterowania do minimum, zapewniając użytkownikowi wysoki komfort pracy. Druga strefa znajduje się poniżej prostej określającej najniższą zanotowaną wartość maksymalnego ruch głowy. 29 Rys. 3.3. Wykres zależności pomiędzy maksymalną możliwą do zastosowania wielkością ekranu a odległością użytkownika od ekranu. Kombinacje ekranów i odległości od nich znajdujące się w tej strefie, mogą być obsługiwane przez wszystkich ludzi. Choć wymagają trochę więcej wysiłku niż zestawienia z poprzedniej strefy, mogą być z powodzeniem stosowane. Ostatnia strefa znajduje się powyżej najmniejszej wartości maksymalnego ruchu głowy, co oznacza, że sterowanie kursorem na całym ekranie jest niemożliwe dla wszystkich ludzi. Nie oznacza to, że sterowanie w tej strefie jest w ogóle niemożliwe. Większość użytkowników może z powodzeniem korzystać z tak dobranych ekranów, ale należy pamiętać, by uwzględnić indywidualne możliwości człowieka. Na rysunek 3.3 naniesiono dodatkowo prostą określającą rekomendowaną wielkość ekranu w zależności od odległości. Bardzo istotny jest fakt, że prosta ta znajduje się w pierwszej opisanej strefie, tj. poniżej prostej określającej strefę neutralną. Oznacza to, że prawidłowo dobierając wielkość ekranu do odległości pracy, wymagany zakres ruchów głowy nie wykracza poza strefę neutralną. Wykorzystanie opracowanej metody sterowania w niewielkim stopniu obciąża użytkownika. Ruchy głowy odbywają się przy minimalnym napięciu mięśni i więzadeł. Należy pamiętać, że możliwe jest również zastosowanie ekranu o przekątnej nawet trzy i pół razy większej, nie wykraczając poza maksymalny zakres ruchów głowy jaki może wykonać każdy człowiek. 30 3.2 Motoryczność człowieka w zakresie mrugnięć oczu Do sterowania w opracowanej metodzie wykorzystywane są mrugnięcia oczu. Przeciętny człowiek wykonuje od 15 do 20 mrugnięć na minutę [115, 116]. Według rożnych źródeł czas trwania mrugnięcia oka to ok. 0,27-0,4s [115, 117]. Mrugnięcie jest jednak procesem polegającym na stopniowym zamykaniu i otwieraniu oka. Czas, kiedy oko jest całkowicie zamknięte, jest zatem krótszy niż czas mrugnięcia. Wynosi on ok. 0,025-0,05s [117]. Aby oko zostało uznane za zamknięte w opracowanej metodzie nie musi być w pełni zamknięte. Konieczne jest zakrycie powieką obszaru odbicia światła emitowanego przez diody. Stopień zamknięcia oka jest zatem zależny od wzajemnego usytuowania diody i kamery. W praktyce oznacza to niemal całkowite zamknięcie oka ale umożliwia wydłużenie czasu, w którym oko jest identyfikowane jako zamknięte. W oparciu o przedstawione dane i przeprowadzone eksperymenty ustalono, że zastosowana zostanie rejestracja obrazów oka z częstotliwością 25 klatek na sekundę. Oznacza to rejestrację kolejnych obrazów co 0,04s. Taka częstotliwość zapewnia wystarczającą precyzję do prawidłowego identyfikowania gestów wykonanych oczami. Choć istnieje pewne ryzyko, że nie wszystkie naturalne mrugnięcia oka zostaną rozpoznane, nie stanowi to utrudnienia w sterowaniu pracą komputera za pomocą opracowanej metody. Do sterowania wykorzystywane są jedynie świadome mrugnięcia o czasie trwania dłuższym niż pewien ustalony czas. Rozpoznane naturalne mrugnięcia i tak są pomijane (podrozdział 4.2.3). Ważną umiejętnością człowieka wykorzystaną do sterowania jest niezależne przymknięcie jednego oka, tj. zamknięcie oka lewego przy zachowaniu otwartego prawego lub zamknięcie oka prawego przy zachowaniu otwartego lewego. Pozwala to wygenerować na podstawie mrugnięć oczu dużą liczbę gestów (podrozdział 4.2.3). Jednak nie wszyscy ludzie potrafią niezależne przymykać oko lewe i prawe, dlatego umiejętność ta nie jest niezbędna do sterowania pracą komputera w opracowanej metodzie. Wystarczy, że użytkownik potrafi przymknąć jedno dowolne oko. Ogranicza to pulę możliwych do wykonania gestów, ale umożliwia sterowanie. 31 3.3 Wpływ światła podczerwonego na gałkę oka W opracowanej metodzie sterowania poprzez mrugnięcia, oczy użytkownika są oświetlane światłem podczerwonym. Zbyt silne promieniowanie podczerwone może być szkodliwe dla zdrowia. Dodatkowo, ustalona niewielka odległość diody od oka (podrozdział 4.2.1), może powodować silne oddziaływanie promieniowania na gałkę oka. Konieczny jest zatem taki dobór diod oświetlających oczy, by długość fali i natężenie światła przez nie emitowanego mieściło się w określonych normach bezpieczeństwa. Przyjmuje się, że długość fali światła podczerwonego, która jest bezpieczna dla ludzkiego oka, powinna być większa niż 1400nm. Fale takie nie wnikają w siatkówkę oka. Przyjmuje się ponadto, że na poziomie siatkówki emisja nie powinna przekraczać 100W/m2 [118]. 32 Rozdział 4 Analiza rozwiązania 4.1 Sterowanie kursorem poprzez niewielkie ruchy głowy Badania przeprowadzone w ramach niniejszej rozprawy umożliwiły opracowanie metody sterowania polegającej na zmianie położenia kursora na ekranie poprzez niewielkie ruchy głowy. Opracowana metoda opiera się na wykorzystaniu kamery rejestrującej obraz ekranu monitora. Na zarejestrowanym obrazie powinien znajdować się kursor. W wyniku przetwarzania i rozpoznawania obrazów rejestrowanych przez kamerę zostaje on wyodrębniony i zlokalizowany (na zarejestrowanym obrazie). Wyznaczając wektor pomiędzy pozycją zlokalizowanego kursora, a punktem domyślnym obrazu, (najczęściej centrum zarejestrowanego obrazu) możliwe jest obliczenie kierunku i dystansu przesunięcia dla kursora systemowego. Ogólny schemat przedstawiający wzajemne rozmieszczenie kamery i ekranu oraz metody zmiany położenia kursora został pokazany na rysunku 4.1. Jak widać kamera znajduje się naprzeciwko ekranu rejestrując jego fragment, na którym znajduje się kursor. Rys. 4.1. Schemat wzajemnego rozmieszczenia kamery i ekranu oraz sposób zmiany położenia kursora. 33 Sterowanie kursorem w opracowanej metodzie odbywa się wieloetapowo. Uproszczony schemat zaprezentowany na rysunku 4.2, przedstawia kolejne etapy opracowanego procesu, począwszy od wyświetlenia kursora na ekranie, aż do wyznaczenia zmiany jego położenia. Każdy z etapów ma istotny wpływ na jakość sterowania, tj. na szybkość zmiany położenia kursora oraz na precyzję tej zmiany. Rys. 4.2. Schemat zmiany położenia kursora na ekranie. Przedstawione na rysunku 4.2 etapy są realizowane częściowo przez urządzenie sterujące, a częściowo przez komputer. Dokładne rozdzielenie etapów zależy od zastosowanego wariantu urządzenia (podrozdział 6.1). Na rysunku 4.3 i 4.4 przedstawiono kolejno przepływ informacji i podział etapów wyznaczania przesunięcia kursora dla urządzenia w wariancie przewodowym i bezprzewodowym. W wariancie przewodowym, rolą urządzenia jest tylko rejestracja obrazu ekranu i przesyłanie obrazów do komputera. Wszystkie obliczenia związane z wyznaczaniem przesunięcia kursora wykonywane są przez komputer. W wariancie bezprzewodowym, obliczenia wykonywane są przez procesor umieszczony w urządzeniu. Do komputera wysyłane są jedynie informacje o proponowanej zmianie położenia kursora. Sterownik w systemie może te dane skorygować bądź bez żadnych modyfikacji wykorzystać je do zmiany położenia kursora systemowego. 34 Rys. 4.3. Schemat podziału zadań i przepływu informacji podczas zmiany położenia kursora w wariancie przewodowym. 4.1.1 Prezentacja kursora na ekranie Sposób prezentacji kursora na ekranie jest bardzo ważnym elementem opracowanego rozwiązania komunikacyjnego. Można powiedzieć, że rozpoczyna on proces sterowania kursorem i determinuje dalsze działania związane ze zmianą położenia kursora na ekranie. Wpływa przede wszystkim na rodzaj i parametry algorytmu przetwarzającego obrazy pobrane z kamery głównej urządzenia oraz algorytmu rozpoznawania kursora. Ma również istotny wpływ na komfort pracy użytkownika. Jest to element, na który zwrócona jest uwaga użytkownika podczas pracy z wykorzystaniem opracowanej metody sterowania. Kształt kursora jak i jego barwa wpływa zatem na odbiór całego opracowanego interfejsu. Z wyżej wymienionych powodów, prawidłowo zaprojektowany kursor musi spełniać szereg wymagań. Nie może on być zbyt mały, by jego dostrzeżenie na ekranie nie sprawiało 35 Rys. 4.4. Schemat podziału zadań i przepływu informacji podczas zmiany położenia kursora w wariancie bezprzewodowym. użytkownikowi problemu. Ten warunek łatwo spełnić, ponieważ do lepszego rozpoznania kursora na zarejestrowanym obrazie, bądź by rozpoznanie w ogóle było możliwe, niezbędne jest powiększenie jego rozmiarów. Tu zaczyna się kolejny warunek związany z wielkością kursora. Kursor nie może być za duży. Po pierwsze, jest to związane z odbiorem takiego kursora przez użytkownika – zbyt dużym kursorem trudno nawigować i przysłania on w znacznym stopniu treści wyświetlane na ekranie. Po drugie, są to ograniczenia systemowe. Dla systemów Windows maksymalny rozmiar kursora to 32x32 piksele. Pomimo, że są to wartości maksymalne i tak są stosunkowo małe. Nie mniej jednak, jak pokazano w podrozdziałach 4.1.5 oraz 4.1.6, taka wielkość kursora jest wystarczająca do prawidłowego rozpoznania. Po trzecie, na wielkość kursora wpływ może mieć specyfika zastosowanego wariantu opracowanej metody. By rozpoznanie kursora było możliwe, nie może on wychodzić poza krawędzie ekranu. Przy zastosowaniu większego kursora większa część ekranu może (ale nie musi) być wyłączona z możliwości obsługi. Występuje wtedy efekt brzegowy (podrozdział 4.1.9). Jest to zależne zarówno od wielkości kursora jak i jego punktu aktywnego. 36 Barwa bądź barwy zastosowane w kursorze muszą być tak dobrane, by użytkownik był w stanie łatwo zidentyfikować kursor. Nie jest to trudny do spełnienia warunek. Dla człowieka bardziej istotny jest kształt kursora niż jego barwa. Dodatkowo sprawdzono, że łatwiej rozpoznawalne dla człowieka są kursory zawierające kontur (obramowanie kształtu kursora o szerokości jednego piksela i czarnej barwie). Barwa kursora jest natomiast bardzo istotna dla algorytmów przetwarzania i rozpoznawania. W zależności od wariantu rozwiązania, barwa zastosowana w kursorze musi być unikatowa w skali barw wyświetlanych na ekranie bądź, w przypadku kursorów wielobarwnych, choć jedna barwa powinna być możliwie rzadko występująca, a wzajemne rozmieszczenie barw w kursorze łatwe do identyfikacji. Opracowane kursory, rozpoznawane na podstawie ich kształtu, wymagają natomiast, by kontrast pomiędzy ich barwami składowymi były jak największy. Kolejnym parametrem kursorów jest ich kształt. Ma on znaczenia zarówno dla użytkownika jak i dla metody rozpoznawania. Użytkownicy są przyzwyczajeni do kształtu strzałki. Zachowanie właśnie takiego kształtu przy projektowaniu kursora znacząco wpływa na polepszenie komfort pracy w opracowanej metodzie. Oczywiście kształt może być inny. Ważne jest, by był on szybko i prawidłowo identyfikowany przez człowieka. W zależności od algorytmu rozpoznającego, kształt kursora może być ogromnie ważny bądź nieistotny. Wszystko zależy od zastosowanego wariantu. Opracowane warianty wykorzystują tylko barwę, tylko kształt bądź obie te cechy kursora. W wariantach, w których istotną rolę odgrywa barwa kursora, kształt powinien być tak dobrany, by możliwie maksymalnie wypełniał dostępny obszar. W ramach pracy opracowano kształt kursora (rysunek 4.5), który spełnia wymagania związane Rys. 4.5. Opracowany kursor spełniający wymagania związane z komfortem pracy użytkownika i algorytmów rozpoznających barwę. 37 z komfortem użytkownika, tj. zachowuje kształt strzałki oraz w bardzo dużym stopniu wypełnia obszar przydzielony na kursor. Zajmuje go aż w 83,2%. Reasumując, kursor prezentowany na ekranie powinien spełniać wymagania związane z zastosowanymi w danym wariancie algorytmami przetwarzania i rozpoznawania oraz z komfortem pracy użytkownika. W trakcie prowadzenia badań powstała znaczna liczba kursorów. Zostały one podzielone na cztery grupy różniące się metodami prezentacji, przetwarzania i rozpoznawania. Kursory każdej grupy posiadają odmienne ograniczenia i przewidywane zastosowanie. Wyznaczone warianty to: • kursory jednobarwne, • kursory wielobarwne, • kursory o unikatowym kształcie, • unikatowy wzór wyświetlany w sąsiedztwie kursora systemowego. Dwa pierwsze warianty bazują głównie na identyfikacji kursora poprzez jego barwę. Kolejne dwa warianty zakładają identyfikację kursora na podstawie unikatowego kształtu lub wzoru. Metody prezentacji kursorów z wyżej wymienionych grup zostały szeroko opisane kolejno w podrozdziałach 4.1.5-8. 4.1.2 Rejestracja obrazu z kursorem Kamera główna w opracowanym rozwiązaniu komunikacyjnym ustawiona jest w taki sposób, by rejestrowała obraz całego ekranu bądź przynajmniej jego część. By sterowanie było możliwe, na zarejestrowanym obrazie powinien znajdować się kursor. Jakość rejestracji jest niezwykle istotna dla kolejnych etapów zmiany położenia kursora systemowego na ekranie, tj. dla przetwarzania i rozpoznawania zarejestrowanego obrazu z kursorem. Wpływ na rejestrację mają parametry zastosowanej kamery oraz monitora. Jak stwierdzono, najważniejszą kwestią w przypadku monitora jest jego wielkość i rozdzielczość oraz dokładność odwzorowania barw. Znacznie więcej istotnych parametrów opisuje zastosowaną kamerę. Parametry te oraz badania nad ich wpływem na rejestrację zostały przedstawione w podrozdziale 6.1.3. 38 Zniekształcenie barw Barwy kursora systemowego i kursora na obrazie zarejestrowanym przez kamerę różnią się w pewnym stopniu. Wynika to z faktu zniekształcania barw przez urządzenia wyświetlające i rejestrujące. Niezależnie od parametrów i jakości zastosowanego monitora pierwsze zniekształcenie barw kursora następuje już w trakcie jego wyświetlania. Tak zniekształcony pod względem barw kursor rejestrowany jest przez kamerę. Na tym etapie również dochodzi do zniekształcenia barw. Od momentu wyświetlenia kursora na ekranie do zakończenia rejestracji jego obrazu następują aż dwa zniekształcenia barw. Stopień zniekształcenia zależny jest od jakości i parametrów zarówno ekranu jak i kamery głównej urządzenia. Na rysunku 4.6 zaprezentowano stopień zniekształcenia barw przykładowego kursora na zarejestrowanym obrazie. Widać, że oprócz samej zmiany barwy występuje również zmiana rozkładu barw. Obszar, który na oryginalnym kursorze miał jednolitą barwę na obrazie zarejestrowanym posiada wiele barw o rożnych parametrach. Rys. 4.6. Stopień zniekształcenia barw w wyniku wyświetlania i rejestracji. Na zniekształcenie barw wpływ ma również kąt rejestracji oraz obszar na ekranie, na którym znajduje się kursor. Wadą wielu monitorów jest zniekształcanie barw przy zmianie kąta obserwacji. W szczególności jest to zauważalne przy monitorach z matrycami TFT [119], ale nie tylko. Dodatkowo niektóre monitory wyświetlają barwy nierównomiernie na całej swojej powierzchni. Wszystko to ma wpływ na barwę kursora na zarejestrowanym obrazie. Problem zniekształcenia barw jest bardzo istotny przy zastosowaniu kursorów rozpoznawanych na podstawie barwy. Należy wziąć poprawkę na zniekształcenia wynikające z zastosowanego monitora i kamery podczas procesu przetwarzania obrazów pobranych z kamery. Problem ten natomiast nie wpływa na jakość rozpoznawania kursorów o unikatowym kształcie. 39 Względna wielkość kursora na zarejestrowanym obrazie Względna wielkość kursora na zarejestrowanym obrazie jest wyznaczana poprzez porównanie wymiarów kursora systemowego z wymiarami kursora na zarejestrowanym obrazie. W zależności od rozdzielczości kamery i kąta widzenia, kursor na zarejestrowanym obrazie może być taki sam, większy lub mniejszy od kursora systemowego (rysunek 4.7). Porównywana jest wielkość obu kursorów wyrażona w pikselach. Rys. 4.7. Różnica wielkości pomiędzy kursorem wyświetlanym na ekranie i tym na zarejestrowanym obrazie. Tylko w sytuacji, gdy kursor na zarejestrowanym obrazie jest taki sam lub większy od kursora systemowego, możliwe jest uzyskanie największej precyzji sterowania, tj. umieszczenie kursora dokładnie w punkcie docelowym ekranu (wskazanym przez użytkownika). Gdy kursor na zarejestrowanym obrazie jest mniejszy od kursora systemowego, oznacza to zmniejszenie precyzji. Im większa różnica pomiędzy kursorem systemowym, a tym na zarejestrowanym obrazie, tym mniejszą precyzję można uzyskać. Na rysunku 4.8 przedstawiono teoretyczną zależność pomiędzy względną wielkością kursora na zarejestrowanym obrazie, a precyzją sterowania. Na osi odciętych umieszczono stosunek kursora oryginalnego do tego na zarejestrowanym obrazie. Na osi rzędnych zaznaczono odpowiadającą jemu precyzję sterowania. Wartość na tej osi określa maksymalną liczbę pikseli dzielącą pozycje kursora po przesunięciu i punkt docelowy ekranu. Niższa wartość oznacza wyższą precyzję sterowania. Oczywiście wykres ten nie uwzględnia pozostałych czynników wpływających na precyzję sterowania, takich jak choćby niedokładne przetwarzanie obrazów, wystąpienie zaszumienia bądź zastosowanie nieodpowiedniego algorytmu do zmiany położenia kursora. 40 Rys. 4.8. Wykres zależności precyzji sterowania od wielkości kursora na zarejestrowanym obrazie. Eksperymentalnie stwierdzono, że nie powinno się stosować rejestracji, w której stosunek kursora systemowego do tego na zarejestrowanym obrazie jest większy niż trzy, co oznacza precyzję do dwóch pikseli. Zebrano 50 obrazów zarejestrowanych kursorów przy zachowaniu różnych współczynników rejestracji (od 0,4 do 6,3). Po przekroczeniu wartości trzy, wymiary kursorów spadały poniżej 10 pikseli. Sprawiało to, że były one zbyt małe by ich rozpoznanie było bezbłędne na każdym zarejestrowanym obrazie. Było to szczególnie wyraźnie widoczne przy zastosowaniu kursorów wielobarwnych. W sytuacji gdy współczynnik rejestracji nie przekraczał wartości trzy, nie stwierdzono błędów rozpoznawania, które mogłyby wpłynąć na jakość sterowania. Do osiągnięcia największej precyzji (na poziomie zero pikseli), konieczne jest natomiast zastosowanie małego kąta widzenia i podwyższonej rozdzielczości kamery, tak by współczynnik rejestracji nie przekraczał wartości jeden. Jest to jak najbardziej możliwe do osiągnięcia lecz nie zawsze opłacalne, przez wzgląd na spadek szybkości zmiany położenia kursora i większy koszt obliczeniowy. 4.1.3 Rozpoznawanie i lokalizacja kursora Obraz z kursorem zarejestrowany przez kamerę główną poddawany jest procesowi rozpoznawania. Jest to proces kilkuetapowy i jest ściśle uzależniony od typu rozpoznawanego kursora. We wszystkich przypadkach rozpoczyna się on od etapu przetwarzania, w którym ob41 raz z kamery głównej zostaje poddany filtracji. Celem tego etapu jest przygotowanie obrazu do identyfikacji na nim kursora. W przypadku kursorów rozpoznawanych na podstawie barwy, filtracja jest stosowana do wyodrębnienia z obrazu pikseli reprezentujących kursor, usuwając wszystkie pozostałe informacje. Kolejny etap to rozpoznawanie właściwe. Rozpoczyna się ono od analizy przetworzonego obrazu i wskazaniu na nim obiektów będących potencjalnym kursorem. W przypadku wykrycia jednego obiektu, celem tego etapu jest stwierdzenie, czy wykryty obiekt jest szukanym kursorem, natomiast w sytuacji, kiedy wykryto więcej niż jeden obiekt, wybór tego właściwego. Ostatni etap to lokalizacja. Polega ona na ustaleniu dokładnej pozycji kursora na zarejestrowanym obrazie. Od rozpoznawania uzależnione jest prawidłowe działanie opracowanej metody sterowania. Jeżeli podczas pracy tego etapu wskazany zostanie obiekt nie będący kursorem bądź nie wskazany zostanie żaden obiekt, uniemożliwi to zmianę położenia kursora zgodnie z intencją użytkownika. Przetwarzanie obrazu pobranego z kamery jak i lokalizacja w największym stopniu wpływają na precyzję zmiany położenia kursora. Niewłaściwe przetworzenie obrazu, a w szczególności nieodfiltrowanie szumu (o ile występuje on na zarejestrowanych obrazach), może wpłynąć na błędne wyznaczenie położenia kursora. Metoda lokalizacji również powinna być tak dobrana, by niewielkie zmiany rozpoznanego kształtu w kolejnych klatkach bądź nie całkiem odfiltrowany szum, nie wpływały na zmianę wyznaczonego położenia. Wspólną cechą wszystkich etapów rozpoznawania jest ukierunkowanie na małą złożoność obliczeniową. Jest to szczególnie istotnie przy wariancie bezprzewodowym urządzenia, w którym wszystkie bądź część etapów wykonywane są przez procesor urządzenia. Nawet w wariancie przewodowym, gdzie to komputer jest odpowiedzialny za kwestie obliczeniowe, pożądana jest mała złożoność zastosowanych algorytmów, by praca urządzenia nie obciążała zbytnio procesora komputera. Metody rozpoznawania i lokalizacji poszczególnych grup kursorów były zatem optymalizowane pod kontem wydajności. Ostateczny kształt badanych rozwiązań, stanowi kompromis pomiędzy wydajnością a dokładnością sterowania. Metody przetwarzania, rozpoznawania oraz lokalizacji dla poszczególnych grup kursorów, zostały szeroko opisane w podrozdziałach 4.1.5-8. 42 4.1.4 Zmiana położenia kursora w systemie Zmiana położenia kursora systemowego zależna jest od położenia rozpoznanego kursora na zarejestrowanym przez kamerę główną obrazie ekranu, które zostało wyznaczone po procesie lokalizacji. Zależy również od zastosowanego algorytmu wyznaczającego kierunek przesunięcia kursora systemowego i wielkości przesunięcia w każdej z osi. Jak stwierdzono, właściwy dobór algorytmu i jego parametrów jest bardzo istotny do prawidłowego działania opracowanej metody sterowania oraz komfortu pracy użytkownika. Kursor powinien być przesuwany w sposób iteracyjny. Ważne jest, by zmiana jego położenia nie następowała w dużej liczbie iteracji. Efektem tego byłby bardzo powolny ruch kursora, co z kolei mogłoby mieć negatywny wpływ na komfort użytkownika. Natomiast zbyt szybka zmiana położenia kursora może skutkować obniżeniem precyzji sterowania. Niezależnie od zastosowanego algorytmu, każda iteracja procesu zmiany położenia rozpoczyna się od wyznaczenia kierunku zmiany. Wykorzystuje się w tym celu położenie rozpoznanego kursora, wyznaczone podczas obróbki obrazu pobranego z kamery głównej. Wyznaczony zostaje wektor, o początku w punkcie wskazanym jako położenie kursora i końcu w punkcie domyślnym obrazu. Jako punkt domyślny obrazu zostało ustalone centrum kadru kamery głównej (połowa szerokości i wysokości zarejestrowanego obrazu). Na rysunku 4.9 przedstawiono metodę wyznaczania wektora określającego kierunek przesunięcia. Widać na nim rozpoznany kursor, osie wskazujące położenie kursora (punkt startowy), osie wskazujące punkt domyślny ekranu (centrum kadru kamery głównej) oraz wektor łączący te dwa punkty. Parametry wyznaczonego wektora, tj. długość wzdłuż osi x i osi y zostają zapisane i przekazane do kolejnego etapu zmiany położenia. Rys. 4.9. Wyznaczanie wektora kierunku zmiany położenia kursora. 43 Kolejny etap zależny jest od zastosowanego algorytmu. Zbadano trzy metody zmiany położenia kursora: • zmiana położenie o stałą wartość w każdej z osi, • zmiana położenia o stałą wartość w kierunku wyznaczonym przez wektor, • adaptacyjna zmiana położenia w kierunku wskazanym przez wektor. Zmiana położenia kursora o stałą wartość w każdej z osi Metoda ta polega na zmianie położenia kursora systemowego o tę samą, stałą wartość w każdej osi. Kierunek zmiany dla każdej osi określony jest przez wersor wektora zmiany kierunku, zrzutowanego na daną oś (rysunek 4.10). Gdy wersor ma wartość zero, kursor w danej osi nie jest przesuwany w aktualnej iteracji. Gdy wersor przyjmuje wartość dodatnią, kursor przesuwany jest wzdłuż danej osi, o ustaloną wartość przesunięcia w kierunku dodatnim. Analogicznie, przy ujemnej wartości wersora, kursor przesuwany jest w kierunku ujemnym. Rys. 4.10. Rozkład wektora przesunięcia na wersory. Przy omawianym algorytmie, zmiana położenia kursora może następować wyłącznie po osiach pionowych, poziomych i pod kątem 45o do tych osi (rysunek 4.11). Taki ruch kursora jest mało intuicyjny dla człowieka. Wartość zmiany położenia kursora musi być kompromisem pomiędzy szybkością a precyzją. Mała wartość przesunięcia gwarantuje wysoką precyzję, ale skutkuje bardzo wolnym ruchem kursora i dużą liczbą wymaganych do przesunięcia iteracji. Zastosowanie zbyt dużej wartości przesunięcia, zmniejsza liczbę wymaganych iteracji i przyspiesza zmianę położenia kursora, ale odbywa się to kosztem precyzji (podrozdział 7.1). Jak wykazano, precyzja w omawianej metodzie zmiany położenia jest równa wielkości przesunięcia kursora w pojedynczej 44 Rys. 4.11. Zmiana położenia kursora o stałą wartość w każdej z osi. iteracji pomniejszonej o jeden piksel. Wykorzystując stałą wartość przesunięcia kursora, istnieje duże prawdopodobieństwo przeskoczenia kursora za punkt docelowy, a wręcz sytuacja taka jest nieunikniona. Zostało to szerzej omówione w dalszej części rozdziału. Zmiana położenia kursora o stałą wartość w kierunku wskazanym przez wektor przesunięcia W tej metodzie zmiana położenia kursora jest zgodna z kierunkiem wyznaczonym przez wektor przesunięcia. Oznacza to ruch kursora po najkrótszej drodze do punktu docelowego na ekranie. W każdej iteracji wielkość przesunięcia kursora jest stała, ale różna dla każdej osi. Wyznaczanie przesunięcia rozpoczyna się od normalizacji wektora zmiany położenia. Następnie wektor jest mnożony przez ustaloną stałą, określającą wielkość przesunięcia. Tak przygotowany wektor jest rzutowany na każdą z osi (rysunek 4.12). Kursor jest przesuwany zgodnie z wartościami wyznaczonych wektorów. Rys. 4.12. Rozkład wektora przesunięcia na wektory zmiany kierunku. 45 Jak już zostało nadmienione kursor przesuwa się po najkrótszej drodze do punktu docelowego (rysunek 4.13), co pozytywnie przekłada się na komfort użytkownika. Podobnie jak w poprzedniej metodzie, wielkość przesunięcia musi być kompromisem pomiędzy szybkością a precyzją (podrozdział 7.1), która jest równa wielkości przesunięcia kursora w pojedynczej iteracji pomniejszonej o jeden piksel. Tu również występuje duże prawdopodobieństwo przeskoczenia kursora za punkt docelowy. Rys. 4.13. Zmiana położenia kursora o stałą wartość w kierunku wskazanym przez wektor przesunięcia. Adaptacyjna zmiana położenia kursora w kierunku wskazanym przez wektor przesunięcia Metoda ta polega na przeskalowaniu wektora przesunięcia o pewną ustaloną stałą (rysunek 4.14). Kolejnym krokiem jest przesunięcie kursora zgodnie z parametrami wektora. Dobór właściwej stałej skalowania jest niezwykle istotny (podrozdział 7.1). Zbyt duża jej wartość, choć umożliwia zmianę położenia kursora nawet w jednej iteracji, może spowodować efekt Rys. 4.14. Rozkład przeskalowanego wektora przesunięcia na wektory zmiany kierunku. 46 znany z poprzednich metod zmiany położenia, tj. przeskok kursora za punkt docelowy, a tym samym zmniejszyć precyzję sterowania. Zmniejszanie wartości stałej skalowania bardzo szybko zwiększa liczbę koniecznych do wykonania iteracji nie zwiększając precyzji (w porównaniu z właściwym doborem stałej). Dobór stałej skalowania zależny jest od wielu czynników. Głównie od odległości użytkownika od ekranu oraz parametrów kamery. Prawidłowy dobór wartości stałej skalowania umożliwia przesunięcie kursora systemowego w wyznaczone miejsce w pojedynczych iteracjach przy zachowaniu bardzo wysokiej precyzji (przesunięcie kursora dokładnie w punkt docelowy na ekranie). Wartość przesunięcia kursora na ekranie, w pojedynczej iteracji w opisywanej metodzie, jest zależna od długości wektora zmiany kierunku. Im rozpoznany kursor na obrazie z kamery głównej jest dalej od punktu domyślnego obrazu, tym przesunięcie kursora systemowego jest większe. Umożliwia to szybką zmianę położenia kursora na ekranie, gdy znajduje się on daleko od punktu docelowego. Jednocześnie pozwala zachować wysoką precyzję przesuwając kursor o małą wartość, gdy znajduje się on blisko punktu docelowego. Sposób zmiany położenia kursora na ekranie w opisywanej metodzie przedstawiono na rysunku 4.15. Rys. 4.15. Adaptacyjna zmiana położenia kursora w kierunku wskazanym przez wektor przesunięcia. W podrozdziale 7.1 wykazano, że jest to najlepsza z badanych metod zmiany położenia kursora na ekranie. Rozwiązuje wszystkie problemy występujące w poprzednich metodach. Jest bardzo precyzyjna i pozwala osiągnąć przez kursor punkt docelowy bardzo szybko, tj. w pojedynczych iteracjach. Metoda jest również przyjazna użytkownikowi i intuicyjna. Większość przeprowadzonych w pracy badań i eksperymentów było opartych o tę metodę zmiany położenia kursora na ekranie. 47 Problem przeskoku kursora za punkt docelowy Częstym problemem, przy zastosowaniu metod przesuwania kursora bazujących na stałej wielkości przesunięcia, jest możliwość przeskoczenia kursora za punkt docelowy. Ta sytuacja może również wystąpić w metodzie adaptacyjnej, ale w tej metodzie jest to tylko skutek błędnego dobrania współczynnika skalowania, co zostało opisane w podrozdziale 7.1. Problem ten występuje w sytuacji, gdy odległość pomiędzy kursorem a punktem docelowym jest mniejsza niż wyznaczona wartość przesunięcia. Kursor po zmianie położenie pojawi się po przeciwnej stronie punktu docelowego (rysunek 4.16). W kolejnej iteracji ponownie zostanie przesunięty w kierunku punktu docelowego i ponownie pojawi się po przeciwnej jego stronie. Jest to sytuacja niedopuszczalna. Nawet przy małej wartości przesunięcia, ciągła zmiana pozycji kursora oscylująca wokół punktu docelowego może być uciążliwa dla użytkownika i powodować problemy ze wskazaniem na ekranie wybranego punktu. Rys. 4.16. Problem przeskoku kursora za punkt docelowy. Problem ten można jednak rozwiązać. Konieczne jest w tym celu wprowadzenie blokady przesunięcia kursora. Jeżeli kursor na zarejestrowanym obrazie znajduje się w mniejszej odległości od punktu domyślnego obrazu niż pewna ustalona wartość, to przesunięcie się nie odbywa. Takie rozwiązanie zapobiega oscylowaniu kursora wokół punktu docelowego. Ustalono, że prawidłowo dobrana wartość blokady pozwala dodatkowo zwiększyć precyzję sterowania do połowy jednorazowego przesunięcia kursora. Możliwe jest wtedy jednorazowe przeskoczenie kursora za punkt docelowy tylko w sytuacji, jeżeli po takim przeskoku, kursor znajdzie się bliżej punku docelowego niż był przed przeskokiem. Dobór wartości blokady zależny jest od wielkości przesunięcia kursora w pojedynczej iteracji oraz od współczynnika rejestracji (stosunek wielkości wyświetlanego kursora i tego na zarejestrowanym obrazie). Nieprawidłowy dobór wielkości blokady może spowodować zmniejszenie precyzji, jeżeli blokada jest zbyt duża bądź brak efektu działania blokady, jeżeli blokada jest zbyt mała. 48 Problem pochylenia głowy w prawo lub w lewo Przeanalizowano jaki wpływ na szybkość i precyzję sterowania ma wykonanie przez człowieka ruchu głowy nie wykorzystywanego do sterowania, a mianowicie pochylenie głowy w prawo lub w lewo. Zauważono, że pochylenie głowy zmienia trajektorię, po której kursor podąża do punktu docelowego. Ruch ten przypomina łuk bądź wycinek spirali. W przypadku metod zmiany położenia kursora bazujących na stałej zmianie przesunięcia w każdej iteracji może to skutkować zwiększeniem liczb potrzebnych do wykonania iteracji o około 5%. W przypadku najlepszej z badanych metod, tj. w metodzie adaptacyjnej, pochylenie głowy w prawo lub w lewo nie powoduje zwiększenia liczby koniecznych do wykonania iteracji. Ponadto w żadnej z badanych metod takie pochylenie głowy nie wpływa na precyzję. Można zatem stwierdzić, że pochylenie głowy w prawo lub w lewo w znikomy sposób wpływa na sterowanie z wykorzystaniem opracowanej metody. 4.1.5 Kursory jednobarwne Prezentacja na ekranie Kursory takie, charakteryzują się tym, że wypełnione są jednolitą barwą. Czasem kursor zawiera również czarny kontur. Nie ma żadnych szczególnych ograniczeń na kształt kursora oprócz opisanych w podrozdziale 4.1.1, tj. kursor powinien być łatwo identyfikowany przez człowieka, a jego kształt powinien możliwie w dużym stopniu wypełniać obszar przewidziany na kursor. Na rysunku 4.17 przedstawiono przykładowe kursory jednobarwne. Jak widać, kursory te znacząco się od od siebie różnią. Mogą przyjmować różnorodne barwy jak i kształt. Tylko niektóre kursory przypominają strzałkę (rysunek 4.17a). Część z nich przybiera kształt celownika (rysunek 4.17b). Inne to po prostu obszar o danej barwie z dodatkowym elementem wskazującym (rysunek 4.17c). Rys. 4.17. Przykładowe kursory jednobarwne. 49 Kursory jednobarwne zastępują kursor systemowy, dlatego ich wymiary są ograniczone do wymiarów kursora systemowego. Mogą przyjąć dowolny kształt i barwę. Nie mniej jednak kształt kursora powinien przypominać strzałkę. Barwa tego typu kursora, powinna być z kolei wyróżniającą się z pośród barw innych elementów wyświetlanych na ekranie oraz możliwie łatwa w identyfikacji przez algorytm rozpoznawania. Zauważono, że kursory tego typu mają jedno poważne ograniczenie. Kursory takie, by mogły być prawidłowo rozpoznane, nie powinny wychodzić poza krawędzie ekranu. Z tego powodu, część ekranu (niewielka część) nie może być wskazana, a przez to nie mogą być na niej wykonywane niektóre polecenia systemowe. Problem ten wraz z metodą rozwiązania został szerzej omówiony w podrozdziale 4.1.9. Przetwarzanie Przy tego typu kursorach, przetwarzanie powinno odbywać się poprzez binaryzację obrazu zarejestrowanego przez kamerę. Taka operacja gwarantuje małą złożoność obliczeniową oraz możliwość wydobycia z obrazu pożądanych informacji. Parametry binaryzacji są uzależnione nie tylko od barwy nadanej kursorowi. Muszą one dodatkowo uwzględniać zniekształcenia barw wynikające z właściwości monitora oraz kamery. Problem ten został szerzej opisany w podrozdziale 4.1.2. Do przetwarzania obrazów z kursorami tej grupy, wystarczający jest algorytm binaryzacji klasyfikujący piksele znajdujące się w określonym obszarze zastosowanej przestrzeni barw [120]. Może on pracować zarówno w przestrzeni barw RGB, HSV, jak i dowolnej innej. Z uwagi na to, że zarówno monitor jak i przede wszystkim kamera rejestrująca obraz z kursorem, wykorzystują przestrzeń barw RGB, to właśnie ta przestrzeń jest najwłaściwsza do przeprowadzenia przetwarzania. Unika się dzięki temu kosztownej obliczeniowo konwersji jednej przestrzeni barw w drugą [121]. Proces binaryzacji polega na sprawdzeniu czy wartości kolejnych kanałów barwy rozpatrywanego piksela mieści się w zadanym przedziale. Przedział dla każdego kanału jest zależny od barwy poszukiwanego kursora i powinien uwzględniać zniekształcenie barw opisane w podrozdziale 4.1.2. Przykładowo gdy poszukiwany kursor jest barwy czerwonej [255;0;0] (R=255; G=0; B=0) to na zarejestrowanym obrazie nie wystarczające będzie wyselekcjonowanie pikseli o barwie [255;0;0]. Jak pokazano na rysunku 4.6 barwa czerwona może zostać zniekształcona. Kanał R może przyjąć wartości z przedziału od 234 do 255 a ponadto kanały G i B od 0 do odpowiednio 11 i 29 (na rysunku 4.6 zaznaczono wartości 50 tylko przykładowych pikseli). Tylko wtedy gdy wartość badanego piksela mieści się w tak określonym przedziale, tj. kanał R ma wartość większą bądź równą 234, kanał G ma wartość mniejszą bądź równą 11, a kanał B ma wartość mniejszą lub równą 29, taki piksel zostanie zidentyfikowany jako składowy kursora. Efektem tak przeprowadzonej binaryzacji jest obraz, na którym zaznaczone są tylko piksele reprezentujące potencjalny kursor. Przykładowe efekty binaryzacji przedstawiono na rysunku 4.18. Niestety prostota tej metody przekłada się na jej ograniczenia. Gdy na ekranie wyświetlone zostaną inne obiekty o barwie zbliżonej do barwy kursora, możliwe jest błędne wskazanie tych obiektów jako potencjalny kursor. Przykłady tego typu problemów przedstawione zostały na rysunku 4.19. Rys. 4.18. Efekt przetwarzania kursorów jednobarwnych. Rys. 4.19. Efekt błędnego przetwarzania kursorów jednobarwnych. 51 Dodatkowym etapem przetwarzania obrazów w tej grupie kursorów może być usunięcie szumu. Jego pojawienie się wynika z typu i jakości zastosowanego w kamerze przetwornika. Różne kamery wyposażone są w przetworniki różnego typu i o różnej jakości dlatego trudno określić charakter ewentualnego szumu. Jego pojawienie się, może wynikać między innymi z tolerancji wykonania matrycy. Pomimo, że matryce produkowane są z zachowaniem wysokiej jakości to i tak różnica czułości na światło pomiędzy dwoma sąsiadującymi ze sobą senselami (komórkami światłoczułymi) może wynieść 1% wartości średniej sygnału przy zastosowaniu matrycy CCD i aż 5% przy zastosowaniu matrycy CMOS. Dodatkowo w matrycach CCD może wystąpić szum transportowy a w matrycach CMOS szum resetowania. Niezależnie od rodzaju matrycy, pojawienie się szumu może wynikać z interferencji elektromagnetycznych. Nieuniknione jest również wystąpienie szumu śrutowego, który spowodowany jest przez fluktuacje w ilości fotonów docierających do sensela w jednostce czasu. Przy zastosowaniu kamery wysokiej jakości powstały szum jest na tyle mały, że proces jego usuwania może zostać pominięty, zmniejszając tym samym złożoność obliczeniową przetwarzania. Jeżeli jednak na zarejestrowanych obrazach wystąpi duże zaszumienie, jego usunięcie pozwoli lepiej przygotować obraz przed etapem rozpoznawania. Usuwanie szumu może być zastosowane na początku tego etapu, czyli przed binaryzacją bądź na końcu tego etapu, przed przesłaniem obrazu do rozpoznawania. Usuwanie szumu przed binaryzacją zmniejsza różnice barw pomiędzy sąsiadującymi pikselami. Dzięki temu, proces binaryzacji lepiej klasyfikuje piksele potencjalnego kursora przy zastosowaniu mniejszego marginesu wynikającego ze zniekształcenia barw. Bardzo dobre efekty przynosi zastosowanie zamknięcia morfologicznego [122], czyli zastosowanie dylatacji a następnie erozji. Badania przeprowadzono na czterdziestu obrazach z kursorami o różnych barwach zarejestrowanych poprzez cztery kamery o różnej jakości. Zastosowanie usuwania szumu pozwoliło na zmniejszenie przedziałów binaryzacji w granicach 12-43%. Ostateczny efekt zależny jest od barwy zastosowanej w kursorze oraz od barwy tła pod kursorem. Zastosowanie filtracji po procesie binaryzacji, pozwala usunąć z przetworzonego obrazu pojedyncze piksele błędnie zidentyfikowane jako fragmenty kursora. W tym celu najlepiej sprawdza się efekt otwarcia morfologicznego [122], tj. zastosowanie erozji, a następnie dylatacji (przy założeniu, że piksele opisujące potencjalny kursor są traktowane jako obiekt, czyli po procesie binaryzacji mają wartość 1, natomiast pozostałe piksele traktowane są jako tło, czyli mają wartość 0). Dla uproszczenia przetwarzania możliwe jest zastosowanie tylko erozji. Nale- 52 ży pamiętać, by element strukturalny zastosowanego filtru nie przekraczał rozmiarem kursora na zarejestrowanym obrazie. Spowodowałoby to usuniecie go z obrazu i uniemożliwiło jego identyfikację. Jako, że filtr ten jest stosowany wyłącznie do usunięcia szumu, czyli najczęściej pojedynczych pikseli, wystarczające jest zastosowanie filtru możliwe niskiego stopnia. Zaletą zastosowania filtracji po procesie binaryzacji jest możliwość zastosowania filtru tylko na wybranych fragmentach obrazu, w miejscach, gdzie pojawiły się rozpoznane obiekty. Takie rozwiązanie pozwala przyspieszyć etap usuwania szumu od 85% nawet do ponad 95% gdy po procesie binaryzacji wyodrębnionych z obrazu będzie mała liczba obiektów. W procesie usuwania szumu niezalecane jest stosowanie bardziej złożonych filtrów, np. filtru medianowego. Filtr taki, z powodu konieczności sortowania, znacząco spowalnia przetwarzanie obrazów. Rozpoznawanie W wersji podstawowej rozpoznawanie kursora polega na odnalezieniu na przetworzonym obrazie pikseli wyodrębnionych w wyniku przetwarzania. Wyodrębnione piksele zgrupowane są blisko siebie tworząc pojedynczy obiekt. Tak wyznaczony obiekt przekazywany jest dalej do etapu wyznaczania położenia. Jest to jednak przypadek idealny i występuje jedynie w systemach sztucznie przystosowanych do pracy z tego typu kursorami. Może się zdarzyć, że kursory jednobarwne znajdą zastosowanie w tradycyjnych systemach operacyjnych. W takiej sytuacji znacznie częściej na przetworzonym obrazie wyodrębnionych zostaje więcej niż jeden obiekt, w tym obiekty wielkości jednego lub kilku pikseli, jeżeli na etapie przetwarzania nie zastosowano usuwania szumu. Zachodzi zatem potrzeba prawidłowego wskazania obiektu reprezentującego kursor. Niestety metoda rozpoznawania tego typu kursorów bazuje jedynie na barwie, pomijając kształt kursora. Wskazanie prawidłowego obiektu jest trudne. Już na etapie rozpoznawania możliwe jest jednak zebranie kilku informacji o rozpoznanym obiekcie, takich jak: • powierzchnia (liczba pikseli budujących obiekt), • wysokość (w pikselach), • szerokość (w pikselach), • rozkład pikseli (środek ciężkości). 53 Dane te pozwalają na wyeliminowanie większości błędnie rozpoznanych obiektów. Skuteczność rozpoznawania jest jednak zależna od barw wyświetlanych na ekranie, rozkładu tych barw oraz barwy samego kursora. Testy symulujące pracę z wykorzystaniem tej grupy kursorów w systemie pokazały, że sytuacja, w której kursor zostanie błędnie rozpoznany, tj. inny obiekt na obrazie zostanie uznany za kursor, mogą się zdarzyć raz na kilka minut lub nawet raz na minutę gdy barwa kursora często występuje na wyświetlanych treściach. Możliwe jest również wykorzystanie ostatniej znanej pozycji kursora, by ustalić, który z rozpoznanych obiektów ma wyższe prawdopodobieństwo bycia kursorem. W ogólnym rozrachunku skuteczność tej metody jest bardzo mała. Lokalizacja Jest to niezwykle ważny etap decydujący o precyzji sterowania. Uzależniony jest on jednak od jakości przetwarzania obrazów. Celem tego etapu jest wyznaczenie możliwie dokładnego położenia kursora na zarejestrowanym obrazie. Zbadano, jak zmienia się wyznaczona lokalizacja, gdy kolejne zarejestrowane obrazy różną się pod względem jakości przetwarzania i poziomem szumu. Łącznie do testów wykorzystano 25 sekwencji po 50 klatek każda. Najskuteczniejszymi i najbardziej dokładnymi metodami wyznaczenia położenia są metody polegające na określeniu środka ciężkości rozpatrywanego obiektu. Inne badane metody okazały się bardzo podatne na szum oraz błędy przetwarzania i zmniejszały precyzję sterowania nawet o trzy piksele. Środek ciężkości można wyznaczyć na dwa sposoby: • poprzez wyznaczenie średniej skrajnych pikseli obiektu, • poprzez uwzględnienie lokalizacji wszystkich pikseli obiektu. Pierwsza metoda jest prostsza obliczeniowo i wymaga tylko parametrów prostokąta opisującego badany obiekt, tj. współrzędne wzdłuż osi x pikseli położonych maksymalnie po lewej (minx) i prawej (maxx) stronie obiektu oraz współrzędne wzdłuż osi y pikseli położonych maksymalnie w górę (miny) i w dół (maxy). Lokalizacja kursora w takiej sytuacji, to średnia arytmetyczna skrajnych wartości (wzór 4.1a i 4.1b). Ten sposób wyznaczania lokalizacji najlepiej sprawdza się przy kursorach o regularnym kształcie (rysunek 4.17c) a jego dokładność wynosi do jednego piksela. 54 x= minx+maxx 2 (4.1a) y= miny+maxy 2 (4.1b) Druga metoda wymaga więcej obliczeń, ale jest dokładniejsza. Uwzględnia ona faktyczny rozkład pikseli w obiekcie. Wyznaczenie lokalizacji, polega na wyznaczeniu średniej arytmetycznej lokalizacji wszystkich pikseli obiektu wzdłuż osi x i osi y. Opisują to wzory 4.2a i 4.2b, gdzie n oznacza liczbę pikseli obiektu. Ta metoda powinna być stosowany głównie przy kursorach o nieregularnym kształcie np. kształcie strzałki (rysunek 4.17a). Wystąpienie szumu na przetworzonych obrazach w niewielkim stopniu wpływa na wyznaczoną lokalizację i wpływ ten rzadko kiedy osiąga jeden piksel. n ∑ xi (4.2a) x= i=1 n n ∑ yi (4.2b) y= i=1 n W obu omówionych metodach, zebranie danych potrzebnych do wyznaczenia lokalizacji powinno nastąpić na poprzednich etapach rozpoznawania. Podczas przetwarzania lub rozpoznawania, gdy zachodzi konieczność odwołania się do każdego piksela obrazu, możliwe jest jednoczesne zgromadzenie wymaganych informacji. Ogranicza to liczbę odwoływania się do obrazu, a tym samym przyspiesza cały proces rozpoznawania i lokalizacji kursora. Zastosowanie To najprostsza grupa kursorów pod względem prezentacji jak i algorytmów przetwarzania i rozpoznawania. Przekłada się to jednak na skuteczność. Ograniczona liczba danych pozyskanych podczas przetwarzania nie pozwala jednoznacznie zidentyfikować kursor, gdy na ekranie pojawią się obiekty podobne do niego. Skutkuje to ograniczonym zakresem zastosowania tego typu kursorów. Kursory jednobarwne są przeznaczone do odpowiednio przygotowanych systemów, tzn. kursor powinien mieć unikatową barwę. Żaden inny obiekt wyświetlany na ekranie 55 nie powinien posiadać barwy takiej samej lub zbliżonej do barwy kursora. Pozwala to wyeliminować sytuacje, w których na przetworzonym obrazie występuje więcej niż jeden obiekt reprezentujący kursor. Stosowanie tego typu kursorów w nieprzystosowanych systemach może powodować błędną identyfikację kursora, co znacząco utrudni bądź uniemożliwi prawidłowe sterowanie. 4.1.6 Kursory wielobarwne Prezentacja na ekranie Grupa ta charakteryzuje się wypełnieniem powierzchni kursora co najmniej dwoma barwami. Czasem stosuje się również czarny kontur, by kursor był łatwiej rozpoznawany przez człowieka. Podobnie jak w przypadku kursorów jednobarwnych kształt jak i dobór barw mogą być dowolne. Na rysunku 4.20 przedstawiono przykładowe kursory wielobarwne. Jak widać kursory te są zróżnicowane pod względem kształtów, barw oraz liczby zastosowanych barw. Niektóre kursory przypominają strzałkę (rysunek 4.20a). Część z nich przybiera kształt celownika (rysunek 4.20b). Inne to wielobarwny obszar z dodatkowym elementem wskazującym (rysunek 4.20c). Rys. 4.20. Przykładowe kursory wielobarwne. Kursory wielobarwne posiadają podobne ograniczenia jak kursory jednobarwne. Przede wszystkim zaleca się stosowanie kursorów o kształcie przyjaznym użytkownikowi oraz taki dobór barw, by wyraźnie różniły się od siebie i co najmniej jedna z zastosowanych barw rzadko występowała na innych elementach wyświetlanych na ekranie. Dodatkowo rozmiar kursora ograniczony jest do rozmiaru kursora systemowego. W tej grupie również występuje efekt brzegowy (podrozdział 4.1.9). 56 Liczba zastosowanych barw też nie może być dowolna. Specyfika tej grupy wymaga co najmniej dwóch barw. Maksymalna liczba barw jest ograniczona przez możliwości rejestracji i rozpoznawania. Zbyt duża liczba zastosowanych barw determinuje małą powierzchnię przydzieloną na pojedynczą barwę. W takiej sytuacji, rozpoznanie niektórych barw składowych kursora może być trudne bądź niemożliwe. Najczęściej stosuje się dwie barwy. Górna granica wyznaczona eksperymentalnie to cztery barwy, plus ewentualny czarny kontur. Próby rozpoznawania kursorów wielobarwnych przeprowadzono na 100 obrazach. Obrazy te przedstawiały 10 różnych kursorów zarejestrowanych pod różnymi kątami (od 0 do 15 stopni) i przy zastosowaniu różnych współczynników rejestracji (od 0,4 do 3). Kursory różniły się między sobą liczbą zastosowanych barw oraz ich rozkładem. Największą liczbą barw składowych kursora, która umożliwiała bezbłędną identyfikację okazała się wartość 4. Kursory zbudowane z pięciu barw były prawidłowo rozpoznawane ze skutecznością nie przekraczającą 70%. Dalsze zwiększanie liczby barw składowych kursora skutkowało radykalnym spadkiem skuteczności rozpoznawania. Przetwarzanie W przypadku kursorów wielobarwnych konieczne jest przeprowadzenie kilkuetapowego procesu przetwarzania. W pierwszej kolejności przeprowadzona zostaje binaryzacja. Taka sama jak w przypadku kursorów jednobarwnych z uwzględnieniem zniekształcenia barw wynikającego z zastosowanego ekranu oraz kamery (podrozdział 4.1.2). Do binaryzacji wybierana jest barwa składowa kursora, która statystycznie najrzadziej występuje na ekranie. Umożliwia to ograniczenie liczby wykonywanych operacji. Binaryzacja nie jest przeprowadzana bezpośrednio na całym ekranie. Każdorazowo, gdy podczas przetwarzania obrazu, zidentyfikowany zostanie piksel spełniający warunek binaryzacji, przetwarzanie zostaje chwilowo wstrzymane. W wyznaczonym w ten sposób punkcie rozpoczyna się drugi etap przetwarzania. Jego złożoność zależy od liczby zastosowanych w kursorze barw. Dla każdej barwy przeprowadzana jest oddzielna binaryzacja (uwzględniająca oczywiście zniekształcenia barw) na fragmencie obrazu, w którym powinna znajdować się szukana barwa zgodnie z budową zastosowanego kursora. Pozycja punktu rozpoczynającego drugi etap przetwarzania jest zapisywana na potrzeby rozpoznawania. Po zakończeniu drugiego etapu przetwarzania wznawiany jest pierwszy etap w celu przeszukania pozostałej części ekranu i wyodrębnienia innych potencjalnych kursorów. 57 Podobnie jak w przypadku przetwarzania obrazów na potrzeby identyfikacji kursorów jednobarwnych, tu również możliwe jest zastosowanie filtrów usuwających szum. Znajdują tu zastosowanie wszystkie kwestie zbadane i omówione w podrozdziale 4.1.5. Tu również stosowanie tego etapu nie jest wymagane a wręcz niezalecane. Zastosowanie filtrów usuwających szum może w niewielkim stopniu zmodyfikować kształt całego kursora bądź niektórych jego fragmentów. Może mieć to wpływ na wyznaczanie cech w procesie rozpoznawania. Rozpoznawanie Rozpoznawaniu poddawane są fragmenty obrazu, wyodrębnione podczas etapu przetwarzania. Punkty startowe zapisane podczas przetwarzania stanowią punkty odniesienia dla algorytmu rozpoznającego. Analizie poddane zostają zbinaryzowane obszary odpowiadające budowie kursora. Sprawdzane są: • bezwzględna wielkość każdego z obszarów (liczba pikseli), • względna wielkość wszystkich obszarów, • wzajemne rozmieszczenie barw w kursorze. Efekt rozpoznawania przykładowego kursora wielobarwnego został zaprezentowany na rysunku 4.21. Widać tu, że kursor zostaje prawidłowo rozpoznany nie tylko na jednolitym tle, ale również, gdy tło barwą przypomina kursor. Rzadko kiedy po etapie rozpoznawania wskazany zostaje więcej niż jeden potencjalny kursor. Jeżeli jednak taka sytuacja wystąpi, konieczny jest wybór tego właściwego. Opracowano trzy metody wyboru właściwego kursora: • ustalenie prawdopodobieństwa dla każdego obiektu na podstawie wyżej opisanych cech, • porównanie aktualnej pozycji kursora z poprzednią, • porównanie wyżej omówionych cech z cechami poprzednio rozpoznanego kursora. Pierwsza metoda polega na porównaniu ze sobą cech rozpoznanych obiektów i wyborze tego, który w największym stopniu odpowiada poszukiwanemu kursorowi. Sytuacje kiedy rozpoznanych potencjalnych kursorów jest więcej niż jeden zdarzają się na tyle rzadko, że ta metoda jest wystarczająca. 58 Rys. 4.21. Efekty rozpoznawania kursora wielobarwnego. Kolejna metoda to porównanie pozycji rozpoznanych obiektów z poprzednią znaną pozycją kursora. Na tej podstawie podejmowana jest próba ustalenia, który z obiektów najprawdopodobniej jest poszukiwanym kursorem. Skuteczność tej metody jest jednak niska. Najdokładniejsza metoda wyboru kursora, polega na porównaniu cech rozpoznanych obiektów z cechami poprzednio rozpoznanego kursora. Obiekt, który w największym stopniu przypomina wcześniej rozpoznany kursor, zostaje oznaczony jako aktualny kursor. Pierwszą i trzecią metodę zastosowano na specjalnie przygotowanych obrazach (20 obrazów), na których znajdowała się duża liczba obiektów o barwach zbliżonych i takich samych co barwy składowe kursora. Nie zdarzyło się, by trzecia metoda błędnie wskazała obiekt nie będący kursorem. Pierwsza metoda trzykrotnie błędnie wskazała kursor. Przeprowadzono również testy symulujące pracę z kursorem wielobarwnym w systemie. Zarówno metoda pierwsza jak i trzecia działały bezbłędnie. Druga metoda wielokrotnie wskazała obiekt nie będący kursorem gdy zidentyfikowanych było więcej niż jeden potencjalny kursor. Wszystkie omówione metody cechują się porównywalną złożonością i nie wymagają dodatkowych danych poza tymi już wyznaczonymi na etapie przetwarzania. 59 Lokalizacja Lokalizacja kursorów wielobarwnych przebiega podobnie jak kursorów jednobarwnych. Możliwe jest ustalenie pozycji kursora na trzy sposoby, w tym dwa zbadane i omówione w podrozdziale 4.1.5: • wykorzystanie pozycji obiektów z etapu przetwarzania, • poprzez wyznaczenie średniej skrajnych pikseli obiektu, • poprzez uwzględnienie lokalizacji wszystkich pikseli obiektu. Pierwsza metoda jest mało precyzyjna, ale nie wymaga żadnych dodatkowych obliczeń. Podczas etapu przetwarzania wyznaczane są punkty, będące odniesieniem do dalszej obróbki potencjalnych kursorów w kolejnych etapach przetwarzania oraz przy rozpoznawaniu. Punkty te po zakończeniu etapu rozpoznawania mogą zostać wykorzystane jako lokalizacja rozpoznanego kursora. Jest to rozwiązanie niezwykle proste, ale podatne na wszelkiego rodzaju szumy i błędy przetwarzania. Dokładność lokalizacji kursora w tej metodzie nie przekracza trzech pikseli. Pozostałe dwie metody są identyczne jak w przypadku kursorów jednobarwnych. Należy jedynie pamiętać, że przy wyznaczaniu lokalizacji brane są pod uwagę wszystkie piksele budujące kursor, tj. piksele o wszystkich barwach składowych kursora. Wszystkie trzy metody zbadano tak samo jak metody lokalizacji kursorów jednobarwnych. Uzyskane wyniki dla metod opartych na wyznaczaniu środka ciężkości były identyczne jak w poprzedniej grupie. Zastosowanie Kursory wielobarwne to grupa o bardzo szerokim zastosowaniu. Wyodrębnienie kursora z obrazu jest jednoznaczne przy umiarkowanej złożoności algorytmów przetwarzania i rozpoznawania. Co bardzo ważne, kursory wielobarwne mogą być powszechnie stosowane bez konieczności specjalnego przystosowania systemu operacyjnego. Większość przeprowadzonych w pracy badań i eksperymentów było opartych o tę grupę kursorów. 60 4.1.7 Kursory o unikatowym kształcie Prezentacja na ekranie Kursory tej grupy zbudowane są z dwóch, silnie kontrastujących barw (najczęściej białej i czarnej) i powinny przedstawiać kształt unikatowy w skali ekranu. Przykładowe kursory tego typu zostały przedstawione na rysunku 4.22. Kursory te również zastępują kursor systemowy, co sprawia, że system ogranicza ich maksymalną wielkość. Podobnie jak w dwóch opisanych wyżej grupach, tu również występuje efekt brzegowy (podrozdział 4.1.9). Rys. 4.22. Przykładowe kursory o unikatowym kształcie. Ze względu na maksymalną wielkość kursora, możliwość rejestracji i rozpoznawania oraz percepcję człowieka, liczba kombinacji jest mocno ograniczona. Wzór nie może posiadać zbyt dużej liczby detali. Podczas rejestracji zostaną one zniekształcone lub całkowicie zanikną, co uniemożliwi rozpoznanie wzorca. Wzór nie może się też zbytnio zlewać z tłem, by był on możliwy do rozpoznania przez człowieka. Przedstawione na rysunku 4.22 wzory to nieliczne spośród badanych, które są zarówno szybko identyfikowane przez człowieka jak i możliwe do rozpoznania przez zaadaptowany algorytm. Przetwarzanie Tego typu kursory przetwarzane są poprzez binaryzację [123]. Barwy składowe kursorów o unikatowym kształcie powinny być tak dobrane, by możliwie mocno kontrastowały. Próg binaryzacji należy dobrać tak, by skutecznie rozdzielał barwy składowe kursora. Najczęściej stosuje się barwę białą i czarną. Przy tak dobranych barwach, progiem binaryzacji może być połowa zakresu sumy kanałów R, G i B. Maksymalna wartość sumy trzech kanałów to 765. Możemy przyjąć, że piksel którego suma kanałów R, G i B jest mniejsza bądź równa 382 zostanie potraktowany jako piksel czarny. Natomiast piksel o sumie kanałów większej od 382 zostanie potraktowany jako piksel biały. Wpływ binaryzacji na pozostałe elementy wyświetlane na ekranie jest nieistotny. Kursor rozpoznawany jest wyłącznie na podstawie kształtu, więc 61 binaryzacja ma na celu jedynie wyodrębnienie wzoru na kursorze, a nie usunięcie z obrazu wszystkich elementów poza kursorem. W procesie przetwarzania nie należy stosować dodatkowych filtrów, np. usuwających szum. Taka filtracja mogłaby zmodyfikować kształt kursora, co miałoby bardzo negatywny wpływ na skuteczność rozpoznawania. Rozpoznawanie Po zastosowaniu zaadaptowanego algorytmu rozpoznającego, wyznaczany jest prostokąt opisujący kursor. Parametry prostokąta przesyłane są do wyznaczenia lokalizacji. Kursory o unikatowym kształcie są bardzo trudne w identyfikacji. Wynika to z wielkości kursora na zarejestrowanym obrazie. Jest on na tyle mały i zniekształcony, że niezwykle trudno odróżnić go od innych obiektów wyświetlanych na ekranie. Problem stanowi również wysoka złożoność obliczeniowa i mała skuteczność algorytmów potrzebnych do rozpoznania takiego kursora. Lokalizacja Lokalizacja kursora odbywa się poprzez wyznaczenie centrum prostokąta opisującego kursor, wyznaczonego w procesie rozpoznawania. Zastosowanie Kursory o unikatowym kształcie są wyjątkowo trudne w identyfikacji zarówno przez człowieka jak i przez algorytmy rozpoznające. Dodatkowo, złożoność obliczeniowa algorytmów jest bardzo duża. Przeprowadzono badania, polegające na próbie rozpoznania kursorów z tej grupy. Zbadano 40 obrazów z czterema rożnymi kursorami przy zachowaniu współczynnika rejestracji z przedziału od 0,4 do 3. Prawidłowo rozpoznanych zostało zaledwie 70% kursorów. Stwierdzono zatem bardzo niską przydatność kursorów z tej grupy do zastosowania w opracowanej metodzie sterowania. 62 4.1.8 Unikatowy wzór wyświetlany w sąsiedztwie kursora systemowego Prezentacja na ekranie Opisywana metoda polega na wyświetleniu w bliskim sąsiedztwie kursora systemowego łatwego do rozpoznania wzoru (rysunek 4.23). Wzór ten podąża za kursorem w stałej odległości od niego. Po rozpoznaniu i zlokalizowaniu wzoru możliwe jest wyznaczenie pozycji kursora systemowego. Rozwiązanie takie, nie wpływa na odbiór samego kursora przez użytkownika, ponieważ możliwe jest zastosowanie dowolnego kursora, w tym również pozostawienie standardowego kursora systemowego. Rys. 4.23. Unikatowy wzór wyświetlany obok kursora. Przykładowe wzory możliwe do wykorzystania w opracowanej metodzie sterowania zostały zestawione na rysunku 4.24. Jak widać, część z tego typu wzorów może przypominać kod kreskowy. Dzięki temu są one łatwe do rozpoznania i zachowują unikatowość w skali całego ekranu. Rys. 4.24. Przykładowe unikatowe wzory. 63 Ta grupa kursorów nie posiada ograniczenia na wielkość unikatowego wzoru. Może on być dowolnie duży, co znacząco wpływa na łatwość i skuteczność prawidłowej jego identyfikacji i lokalizacji. Możliwe jest też zastosowanie kamery głównej o niższej rozdzielczości. Nie mniej jednak należy zauważyć, że wzór wyświetlany obok kursora przysłania fragment ekranu przed użytkownikiem. Im taki wzór jest większy, tym większą część ekranu przysłania. Z tego powodu, dobór wielkości wzoru musi uwzględniać komfort pracy użytkownika. Zazwyczaj przysłaniana część ekranu nieznacznie przekracza 3%. Pomimo iż znajduje się ona blisko kursora nie wpływa to na użyteczność systemu. Użytkownik zmieniając położenie kursora może odsłonić przysłaniane przez unikatowy wzór treści. Ponadto ustalono, że jest możliwe zastosowanie wzoru o pewnym stopniu przezroczystości (rysunek 4.25). Prawidłowe rozpoznanie jest możliwe nawet przy zastosowaniu przezroczystości na poziomie bliskim 50%, co skutecznie odsłania przed użytkownikiem treści znajdujące się pod unikatowym wzorem. Podobnie jak we wszystkich wyżej opisanych typach kursorów, tu również zachodzi konieczność uwzględnienia efektu brzegowego. O ile kursor systemowy może wyjść częściowo lub całkowicie poza ekran, o tyle unikatowy wzór wyświetlany obok niego już nie. Musi on być przez cały czas w całości widoczny. Problem ten można łatwo rozwiązać zmieniając pozycję unikatowego wzoru względem kursora systemowego. Szczegółowy opis tego zagadnienia został zamieszczony w podrozdziale 4.1.9. Przetwarzanie Podobnie jak w przypadku kursorów o unikatowym kształcie, przetwarzanie ma na celu uwydatnienie unikatowego wzoru, a nie usunięcie z ekranu zbędnych elementów. Dlatego stosuje się binaryzację [123], której jedynym celem jest rozdzielenie barw składowych unikatowego wzoru (rysunek 4.26). Tak przetworzony obraz przekazywany jest do procesu rozpoznawania. Rozpoznawanie Najlepsze efekty wykazuje stosowanie unikatowych wzorów przypominających tradycyjny kod kreskowy. Głównie za sprawą małej złożoności obliczeniowej algorytmów opracowanych do rozpoznania i ich bardzo wysokiej skuteczności. Omówiona w tym rozdziale metoda rozpoznawania, dotyczy właśnie takich wzorów. 64 Rys. 4.25. Prawidłowo przetworzony unikatowy wzór o pewnym stopniu przezroczystości. Rys. 4.26. Efekt przetwarzania unikatowego wzoru wyświetlanego w sąsiedztwie kursora systemowego. Do rozpoznawania zastosowanie znajduje algorytm skaningowy. Przetworzony obraz binarny badany jest wzdłuż kolejnych poziomych linii. W każdej badanej linii poszukiwana jest sekwencja odpowiadająca zadanemu kodowi kreskowemu. W przypadku stwierdzenia poprawnej sekwencji, zapisywane są w pamięci współrzędne jej początku i końca. Przykład rozpoznania prawidłowych sekwencji na obrazie został przedstawiony na rysunku 4.27. Wystąpienie w jednej linii prawidłowej sekwencji jest jednak niewystarczające do stwierdzenia, że został odnaleziony poszukiwany wzór. Na obrazie może przypadkowo powstać sekwencja odpowiadająca poszukiwanemu kodowi. Taka sytuacja bardzo często występuje, gdy na ekranie jest wyświetlany tekst. Jego binaryzacja powoduje powstanie wielu losowych sekwencji na przemian występujących pól czarnych i białych o różnych szerokościach (widoczne na rysunku 4.28). Można jednak uniknąć błędnej identyfikacji poszukiwanego wzoru poprzez wprowadzenie konieczności wystąpienia prawidłowej sekwencji w kolejnych liniach. Liczba kolejnych linii o prawidłowej sekwencji jest określona przez specyfikę zastosowanego algorytmu oraz przez wysokość unikatowego wzoru z kodem kreskowym. Zapamiętywanie początku i końca prawidłowej sekwencji wykorzystywane jest do stwierdzenia, czy w kolejnych liniach 65 Rys. 4.27. Efekt rozpoznawania unikatowego wzoru wyświetlanego w sąsiedztwie kursora systemowego. Rys. 4.28. Efekt prawidłowego rozpoznawania unikatowego wzoru pomimo wystąpienia na obrazie poprawnych sekwencji poza unikatowym wzorem. prawidłowa sekwencja występuje bezpośrednio pod sekwencją z wyższej linii oraz, czy ich szerokość jest podobna. Dopiero wystąpienie określonej liczby linii z prawidłową sekwencją pozwala jednoznacznie stwierdzić, że badany obiekt, to poszukiwany wzór. W takiej sytuacji wyznaczany jest prostokątny kontur unikatowego wzoru (widoczny na rysunku 4.27 i 4.28), a jego parametry, tj. współrzędne wierzchołków przesyłane są do wyznaczenia lokalizacji kursora. Opisana metoda rozpoznawania jest bardzo wydajna obliczeniowo i niezwykle skuteczna. Niemniej jednak możliwa jest jej optymalizacja. Nie jest konieczne zastosowanie algorytmu skaningowego na wszystkich liniach obrazu. Wystarczy, że prawidłowa sekwencja będzie poszukiwana w co n-tej linii. Dobór współczynnika n jest zależny od wysokości unikatowego wzoru. Ważne, by poszukiwany kod kreskowy nie mógł znaleźć się pomiędzy badanymi liniami. Dopiero po stwierdzeniu wystąpienia prawidłowej sekwencji, badaniu poddawane są linie powyżej i poniżej i to nie całe. Wystarczające jest zbadanie wyłącznie odcinka linii odpowiadającego długości prawidłowo rozpoznanej sekwencji z uwzględnieniem pewnego niedużego marginesu z obu stron. Dzięki tej operacji możliwe jest znaczące ograniczenie koniecznych do wykonania operacji na obrazie nawet o 95%. Badane są tylko niektóre linie obrazu i często tylko fragmenty tych linii. 66 Lokalizacja Opisywana metoda zakłada wyświetlanie unikatowego wzoru w sąsiedztwie kursora systemowego. Aby zatem zlokalizować kursor systemowy nie wystarczy tylko zlokalizować unikatowy wzór. Konieczne jest również uwzględnienie dystansu dzielącego unikatowy wzór i kursor. Dodatkowo wyznaczanie lokalizacji uzależnione jest od trybu w jakim znajduje się kursor (podrozdział 4.1.9). Ustalanie lokalizacji rozpoczyna się od wyboru właściwego narożnika prostokąta opisującego unikatowy wzór. Należy wybrać ten, znajdujący się najbliżej kursora systemowego zgodnie z aktualnym trybem kursora. Współrzędne narożników prostokąta opisującego zostają wyznaczone w procesie przetwarzania. Kolejnym krokiem jest uwzględnienie dystansu dzielącego unikatowy wzór i kursor. Wielkość dystansu w każdej z osi wynika ze specyfiki zastosowanego rozwiązania. Kierunek przesunięcia punktu lokalizacji jest zależny od trybu kursora. Uwzględnienie dystansu dzielącego kursor i wzór nie zawsze jest jednak konieczne. Ustalenie położenia kurosa jako współrzędne odpowiedniego narożnika prostokąta opisującego wzór zazwyczaj jest wystarczające. Skutkuje jedynie niewielką niezamierzoną przez użytkownika zmianą położenia kursora systemowego przy zmianie trybu kursora. Przykłady lokalizacji kursora przy uwzględnieniu przesunięcia i bez niego zestawiono na rysunku 4.29. Rys. 4.29. Metody wyznaczania lokalizacji kursora względem unikatowego wzoru. Zastosowanie Jest to zupełnie inna koncepcja kursora niż w trzech grupach opisanych powyżej. Sposób lokalizacji kursora poprzez rozpoznawanie unikatowego wzoru wyświetlanego w jego sąsiedztwie, cechuje się wysoką skutecznością i nie wymaga żadnej ingerencji w system operacyjny. Rozpoznawanie unikatowego wzoru przebiega przy zastosowaniu algorytmów o małej złożoności obliczeniowej, zapewniając łatwą i bezbłędną jego identyfikację. Metoda ta może być zatem powszechnie stosowana. 67 4.1.9 Efekt brzegowy Kursory każdego typu zastępujące kursor systemowy oraz unikatowy wzór wyświetlany obok kursora systemowego muszą być widoczne przez cały czas na ekranie. Nie mogą tak jak kursor systemowy wyjść poza krawędzie ekranu. Gdy część kursora bądź unikatowego wzoru znajdzie się poza krawędzią ekranu, prawidłowe rozpoznanie kursora może być znacznie utrudnione bądź wręcz niemożliwe. Z tego powodu powstaje problem przy krawędziach ekranu. Aktywny punkt kursora nie możne się zbliżyć do wszystkich lub niektórych krawędzi. W wyniku tego, część ekranu pozbawiona jest możliwości sterowania. Możliwe jest tam wyświetlanie treści, ale niemożliwe jest wskazanie kursorem punktu na takim obszarze i wykonanie dla niego odpowiedniej akcji. Kursory zastępujące kursor systemowy W przypadku kursorów, które zastępują kursor systemowy, tj. kursorów jednobarwnych, wielobarwnych i tych o unikatowym kształcie ich aktywny punkt nie może zbliżyć się do wszystkich krawędzi. Gdy aktywny punkt znajduje się w rogu kursora, kursor taki może wskazywać punkty lezące tylko przy dwóch krawędziach. Od pozostałych dwóch krawędzi musi być zachowany odstęp równy szerokości bądź wysokości kursora minus jeden piksel (rysunek 4.30). Dla kursorów o maksymalnej wielkości dla systemu Windows, tj. 32x32 piksele, obszar nieaktywny zajmuje 31 pikseli od dwóch krawędzi ekranu. Gdy aktywny punkt kursora znajduje się w jego centrum konieczne jest zachowanie odstępu od wszystkich krawędzi równego połowie szerokości lub wysokości kursora plus/minus jeden piksel (rysunek 4.31). Dla kursorów o wielkości 32x32 pikseli obszar nieaktywny zajmie 15 lub 16 pikseli od każdej z krawędzi. Problem ten można rozwiązać poprzez wprowadzenie zmiennej orientacji kursora. Wraz z orientacją zmienia się również punkt aktywny kursora. W sytuacji, gdy kursor zbliży się do prawej krawędzi ekranu, jego orientacja zmieniana jest w taki sposób, by punkt aktywny kursora znajdował się maksymalnie po prawej stronie. W sytuacji, gdy kursor oddali się od prawej krawędzi, jego orientacji zmieniana jest w taki sposób, by punkt aktywny znajdował się maksymalnie po lewej stronie kursora. Analogicznie, gdy kursor zbliży się do dolnej krawędzi, jego orientacja zmieniana jest w taki sposób, by punkt aktywny znajdował się na dole. Gdy kursor oddali się od dolnej krawędzi punkt aktywny przesuwany jest na górę kursora. 68 Rys. 4.30. Wystąpienie efektu brzegowego dla kursorów zastępujących kursor systemowy z aktywnym punktem w rogu kursora. Rys. 4.31. Wystąpienie efektu brzegowego dla kursorów zastępujących kursor systemowy z aktywnym punktem w centrum kursora. Ustalono cztery osie, po przekroczeniu których następuje zmiana orientacji kursora. Wyznaczono dwie osie pionowe (x1, x2) i dwie poziome (y1, y2) znajdujące się równo w połowie ekranu (x1, y1) i w jednej trzeciej odległości od prawej (x2) i dolnej (y2) krawędzi ekranu (rysunek 4.32). Dodatkowo na rysunek 4.32 naniesiono numer trybu w jakiem znajduje się kursor w danej części ekranu wydzielonej przez osie. Jeżeli w jakiejś części ekranu kursor może występować w więcej niż jednym trybie oznacza to, że jest to obszar przejściowy i tryb kursora zależy od jego poprzedniego położenia. Takie rozwiązanie zostało wprowadzone, by zmiana trybu kursora nie następowała zbyt często w jednej konkretnej osi ekranu, co mogłoby być uciążliwe dla użytkownika. 69 Orientację kursora dla każdego z czterech trybów wraz z punktem aktywnym przedstawiono na rysunku 4.33. Przekroczenie przez kursor osi: • x1 (przy ruchu w lewą stronę) powoduje zmianę jego orientacji na tryb 1 (z trybu 2) lub tryb 3 (z trybu 4), • x2 (przy ruchu w prawą stronę) powoduje zmianę jego orientacji na tryb 2 (z trybu 1) lub tryb 4 (z trybu 3), • y1 (przy ruchu w górę) powoduje zmianę jego orientacji na tryb 1 (z trybu 3) lub tryb 2 (z trybu 4), • y2 (przy ruchu w dół) powoduje zmianę jego orientacji na tryb 3 (z trybu 1) lub tryb 4 (z trybu 2). Sposób ten umożliwia wyeliminowanie efektu brzegowego dla kursorów zastępujących kursor systemowy. Rozwiązanie to wymaga jednak zastosowania kursorów, które posiadają punkt aktywny w rogu kursora (np. kursory przedstawione na rysunku 4.17a i 4.17c oraz na rysunku 4.20a i 4.20c). Metoda ta jest nieskuteczna przy zastosowaniu na przykład kursorów o punkcie aktywnym w centrum (rysunek 4.17b i 4.20b). Dodatkowym utrudnieniem jest konieczność zmiany kursora systemowego, gdy zachodzi potrzeba zmiany jego orientacji, tj. przy przekraczaniu osi. Nie mniej jednak opracowane rozwiązanie umożliwia objęcie aktywnym polem kursora całego ekranu, co zostało przedstawione na rysunku 4.34. Rys. 4.32. Podział ekranu na osie zmieniające tryb kursora. Rys. 4.33. Orientacja kursora zastępującego kursor systemowy dla różnych trybów. 70 Rys. 4.34. Wyeliminowany efekt brzegowy dla kursorów zastępujących kursor systemowy z aktywnym punktem w rogu kursora. Unikatowy wzór wyświetlany w sąsiedztwie kursora systemowego Przy zastosowaniu unikatowego wzoru, który jest wyświetlany w stałej odległości od kursora systemowego, obszar nieaktywny jest większy niż przy kursorach zastępujących kursor systemowy. Przy wyznaczaniu nieaktywnego obszaru należy uwzględnić nie tylko rozmiar unikatowego wzoru, który jest większy niż kursor, ale również odległość wzoru od kursora systemowego (rysunek 4.35). Obszar nieaktywny występuje przy dwóch krawędziach ekranu. Problem ten można rozwiązać poprzez zmianę położenia unikatowego wzoru względem kursora systemowego. W sytuacji, gdy kursor znajdzie się blisko prawej krawędzi ekranu, unikatowy wzór zostanie przeniesiony na jego lewą stronę. Gdy kursor oddali się od prawej krawędzi unikatowy wzór zostanie ponownie przesunięty na prawą stronę. Analogicznie w sytuacji, gdy kursor znajdzie się blisko dolnej krawędzi. Wówczas unikatowy wzór zostanie przeniesiony powyżej kursora, a po oddaleniu się kursora od dolnej krawędzi wzór zostanie przesunięty powyżej kursora. Rys. 4.35. Wystąpienie efektu brzegowego dla unikatowego wzoru wyświetlanego w sąsiedztwie kursora systemowego. 71 Ustalono cztery osie po przekroczeniu których następuje zmiana położenia unikatowego wzoru względem kursora. Podobnie jak przy kursorach zastępujących kursor systemowy wyznaczono dwie osie pionowe (x1, x2) i dwie poziome (y1, y2) znajdujące się w połowie ekranu (x1, y1) i w jednej trzeciej odległości od prawej (x 2) i dolnej (y2) krawędzi ekranu (rysunek 4.32). Na rysunek 4.32 naniesiono również numer trybu jaki przyjmuje unikatowy wzór, gdy kursor znajduje się w danej części ekranu wydzielonej przez osie. Jeżeli w jakiejś części ekranu unikatowy wzór może występować w więcej niż jednym trybie oznacza to, że jest to obszar przejściowy i tryb unikatowego wzoru zależy od poprzedniego położenia kursora. Położenie unikatowego wzoru względem kursora systemowego dla każdego z czterech trybów wraz z punktem aktywnym kursora przedstawiono na rysunku 4.36. Przekroczenie przez kursor osi : • x1 (przy ruchu w lewą stronę) powoduje zmianę położenia unikatowego wzoru na tryb 1 (z trybu 2) lub tryb 3 (z trybu 4), • x2 (przy ruchu w prawą stronę) powoduje zmianę położenia unikatowego wzoru na tryb 2 (z trybu 1) lub tryb 4 (z trybu 3), • y1 (przy ruchu w gorę) powoduje zmianę położenia unikatowego wzoru na tryb 1 (z trybu 3) lub tryb 2 (z trybu 4), • y2 (przy ruchu w dół) powoduje zmianę położenia unikatowego wzoru na tryb 3 (z trybu 1) lub tryb 4 (z trybu 2). Rys. 4.36. Położenie unikatowego wzoru względem kursora systemowego dla rożnych trybów. Takie rozwiązanie pozwala zbliżyć się kursorowi do każdej krawędzi ekranu niwelując w ten sposób efekt brzegowy. Metoda ta nie wymaga ingerowania w kursor systemowy, a polega jedynie na zmianie położenia unikatowego wzoru względem kursora systemowego. Dzięki temu może być stosowana z dowolnym kursorem. Na rysunku 4.37 zaprezentowano aktywne pole kursora przy omówionym rozwiązaniu. Jak widać kursor obejmuje cały obszar ekranu. 72 Rys. 4.37. Wyeliminowany efekt brzegowy dla unikatowego wzoru wyświetlanego w sąsiedztwie kursora systemowego. 4.2 Sterowanie poprzez mrugnięcia oczu Opracowany interfejs umożliwia między innymi wykonywanie poleceń systemowych poprzez mrugnięcia oczu. W tym celu wykorzystywane są dwa moduły mikrokamer, które składają się z mikrokamer rejestrujących wyłącznie światło w paśmie podczerwonym oraz diod oświetlających oczy światłem podczerwonym. Zastosowanie światła podczerwonego, a nie światła widzialnego, zapobiega wystąpieniu zjawiska olśnienia a tym samym zapewnia możliwość normalnej pracy z wykorzystaniem opracowanego interfejsu. Ponadto takie rozwiązanie uniezależnia sterowanie poprzez mrugnięcia od zewnętrznych warunków oświetleniowych. Przetwarzanie i analiza obrazów pobranych z mikrokamer pozwala niezależnie ustalić stan oka lewego i prawego. Przez stan oka należy rozumieć jedną z dwóch możliwości - oko jest otwarte albo zamknięte. Jednoznaczne ustalenie stanu oka jest możliwe poprzez opracowaną metodę bazującą na analizie stopnia rozproszenia światła odbitego od oka. Metoda ta umożliwia bardzo dokładną analizę przy zachowaniu niskiego kosztu obliczeniowego, który jest bardzo pożądany szczególnie w wariancie bezprzewodowym urządzenia (podrozdział 6.1.1). Inne znane metody rozpoznawania oka koncentrują się na rozpoznaniu na zarejestrowanych obrazach kształtu oka, tj. zidentyfikowaniu źrenicy i tęczówki, modelowaniu twarzy 3D lub wykorzystują zaawansowane algorytmy przetwarzania obrazów (rozdział 1). Są to metody kosztowne obliczeniowo i nie zawsze skuteczne. Opracowana metoda pozwala w szybki i prosty sposób jednoznacznie określić, w jakim stanie aktualnie znajduje się oko, tak by sterowanie odbywało się zgodnie z intencjami użytkownika. 73 Sterowanie pracą komputera poprzez mrugnięcia oczu to proces wieloetapowy. Na rysunku 4.38 przedstawiono kolejne etapy opracowanego procesu, począwszy od oświetlenia oka światłem podczerwonym, aż do wykonania odpowiedniego polecenia systemowego. Każdy z wymienionych etapów jest istotny dla całego procesu i ma wpływ na dokładność sterowania. Rys. 4.38. Schemat sterowania poprzez mrugnięcia. Przedstawione na rysunku 4.38 etapy są realizowane częściowo przez urządzenie, a częściowo przez komputer. Podział pracy zależy od zastosowanego wariantu urządzenia (podrozdział 6.1.1). W wariancie przewodowym (rysunek 4.39), zadaniem urządzenia jest tylko oświetlenie i rejestracja obrazów oczu. Wszystkie pozostałe etapy realizowane są przez komputer. W wariancie bezprzewodowym (rysunek 4.40), urządzenie oprócz oświetlenia oczu i rejestracji ich obrazów dokonuje również przetwarzania zarejestrowanych obrazów, rozpoznawania gestów i generowania sygnałów na podstawie mrugnięć oczu. Zadaniem komputera jest tylko analiza wygenerowanych sygnałów i przypisanie im poleceń systemowych. Taki podział etapów w wariancie bezprzewodowym umożliwia dowolną zmianę opisu gestów i ich wpływu na pracę komputera bez ingerencji w urządzenie. Możliwe jest dzięki temu dostosowanie sterowania do preferencji użytkownika. 4.2.1 Rejestracja obrazów oczu Pierwszym etapem procesu sterowania pracą komputera poprzez mrugnięcia oczu jest rejestracja ich obrazów. Odbywa się ona przy pomocy dwóch modułów mikrokamer, po jednym na oko. Składają się one z mikrokamery rejestrującej wyłącznie światło w paśmie podczerwonym 74 Rys. 4.39. Schemat podziału zadań i przepływu informacji podczas sterowania mrugnięciami w wariancie przewodowym. oraz diody lub zestawu diod emitujących światło podczerwone. Mikrokamera umieszczona jest w sposób, umożliwiający rejestrację obrazów oka lub jego fragmentu. Dioda lub diody usytuowane są tak, by oświetlały oko światłem podczerwonym. Jakość rejestracji jest niezwykle istotna dla procesu przetwarzania i rozpoznawania. Jak zostało zbadane i omówione w podrozdziale 6.1.3, dla zapewnienia wysokiej skuteczności, mikrokamery powinny rejestrować obrazy o rozdzielczościach od 4,8 tysiąca pikseli (80x60) do 0,3 megapikseli (640x480). Wyższa rozdzielczość poprawia skuteczność rozpoznawania mru75 Rys. 4.40. Schemat podziału zadań i przepływu informacji podczas sterowania mrugnięciami w wariancie bezprzewodowym. gnięć oczu, nieznacznie podnosząc koszt obliczeniowy. Na rysunku 4.41 przedstawiono obrazy oczu zarejestrowane w rożnych rozdzielczościach. Moduły mikrokamer, podobnie jak kamera główna, powinny być sztywno przymocowane do głowy użytkownika. Nie jest istotne, z której strony rejestrowane będą obrazy oczu. Ważne jest natomiast, by mikrokamera nie przysłaniała użytkownikowi widoku na wprost. Rejestracja powinna zatem przebiegać pod dużym kątem. Ustalono, że kamery powinny obserwować oczy od dołu (rysunek 4.42) lub od strony zewnętrznej lekko z góry (rysunek 4.43). Obie lokalizacje kamer, gwarantują dobrą rejestrację obrazów oczu, nie wpływając znacząco na ograniczenie pola widzenia użytkownika. W zależności od zastosowanej formy urządzenia, tj. okulary, opaska, itp., sposób mocowania mikrokamer może się różnić, ale powinien być zachowany kąt rejestracji. 76 Rys. 4.41. Obrazy oka zarejestrowane w różnych rozdzielczościach. Rys. 4.42. Usytuowanie kamery przy rejestracji obrazów oka od dołu. Rys. 4.43. Usytuowanie kamery przy rejestracji obrazów oka od strony zewnętrznej lekko z góry. Odległość mikrokamery od oka powinna być na tyle mała, by na zarejestrowanym obrazie nie znajdowały się inne obiekty poza okiem, które mogłyby wpłynąć na poprawność identyfikacji mrugnięć. Poza tym, mała odległość mikrokamery od oka użytkownika, zmniejsza wymiary całego urządzenia. Zbyt mała odległość mikrokamery od oka też nie jest pożądana. Przede wszystkim, światło wyemitowane przez diodę musi się odbić od powierzchni oka pod możliwie małym kątem (kąt względem normalnej do powierzchni) i dostać się do obiektywu kamery. Mała odległość mikrokamery od oka może to uniemożliwić. Dodatkowo bliskość kamery przy gałce oka może być bardzo niekomfortowa dla użytkownika i znacząco ograniczyć jego pole widzenia. Optymalna wyznaczona odległość pomiędzy mikrokamerą a okiem wynosi od 20 do 25mm. 77 Diody zastosowane w module mikrokamery powinny znajdować się w bliskim sąsiedztwie obiektywu mikrokamery. Zamontowane powinny być w sposób, umożliwiający oświetlenie fragmentu oka będącego celem rejestracji. Bliskość kamery umożliwia, co było już nadmienione, emisję światła podczerwonego pod małym kątem w kierunku powierzchni oka. Zapewnia to większą dokładność rozpoznawania mrugnięć na podstawie stopnia rozproszenia światła odbitego. Na rysunku 4.44 przedstawiono odbicie światła od powierzchni oka pod małym i dużym kątem. Jak widać światło odbite od powierzchni kulistej ulega większemu rozproszeniu przy większym kącie padania. Mniejszy kąt padania zapewnia małe rozproszenie, dzięki czemu więcej światła odbitego dociera do obiektywu mikrokamery. Umieszczenie diody blisko mikrokamery, gdy znajduje się ona w jednej z ustalonych lokalizacji, zapobiega ponadto padaniu światła podczerwonego bezpośrednio w źrenicę. Rys. 4.44. Odbicie światła od oka pod małym i dużym kątem. 4.2.2 Rozpoznawanie mrugnięć oczu Obrazy zarejestrowane przez mikrokamery zostają przekazane do przetwarzania i rozpoznawania stanu oczu. Przez stan oka należy rozumieć jednoznaczne rozdzielenie sytuacji, w których oko jest otwarte, a w których zamknięte. Stany oczu przyjmują zatem wartości binarne i są one wyznaczane osobno dla każdego oka. Rozpoznawanie stanu oka odbywa się poprzez opracowaną metodę analizy stopnia rozproszenia światła odbitego od oka. Rozproszenie światła odbitego Światło, padając na dowolną powierzchnię ulega częściowemu odbiciu. W zależności od rodzaju powierzchni, światło ulega większemu lub mniejszemu rozproszeniu. Na rysunku 4.45 przedstawiono model odbicia światła od powierzchni gładkiej i chropowatej. Ta właściwość światła została wykorzystana w procesie rozpoznawania stanu oka. Powierzchnie gładkie odbi78 jają światło rozpraszając je w niewielkim stopniu. Natomiast powierzchnie chropowate rozpraszają światło bardzo mocno [124]. Przykłady odbicia światła od różnego rodzaju powierzchni zestawiono na rysunku 4.46. Obrazy te zostały wygenerowane komputerowo przy zastosowaniu modelu odbicia światła opracowanego przez Phonga [125]. Rys. 4.45. Model rozproszenia światła odbitego od powierzchni gładkiej i chropowatej. Rys. 4.46. Rozproszenie światła odbitego od powierzchni gładkich i chropowatych. Światło podczerwone wyemitowane przez diody może ulec odbiciu od gałki oka, jeżeli oko jest otwarte lub od powieki, jeżeli oko jest zamknięte. Gałka oka charakteryzuje się gładką, szklistą powierzchnią. Światło odbite od takiej powierzchni zostaje rozproszone w nieznacznym stopniu. Na obrazach zarejestrowanych przez mikrokamery widać niewielkich rozmiarów, wyraźne odbicie światła wyemitowanego przez diodę (rysunek 4.47). Skóra człowieka natomiast, posiada bardzo mocne właściwości rozpraszające światło. W sytuacji, gdy światło wyemitowane przez diody odbije się od powierzchni powieki, ulega bardzo silnemu rozproszeniu. Jest to widoczne na obrazach z mikrokamer (rysunek 4.48). Powieka oka jest oświetlona, ale nie widać na jej powierzchni wyraźnego, punktowego odbicia światła. Możliwe jest zatem określenie stanu oka wykorzystując różnice w stopniu rozproszenia światła odbitego od gałki oka i powieki. Silne rozproszenie światła oznacza jego odbicie od powieki, czyli oko jest zamknięte. Z kolei, gdy rozproszenie jest niewielkie, światło odbiło się od gałki oka, co oznacza, że oko jest otwarte. 79 Rys. 4.47. Zarejestrowane obrazy otwartych oczu z widocznym odbiciem światła wyemitowanego przez diodę. Rys. 4.48. Zarejestrowane obrazy zamkniętych oczu - duże rozproszenie światła odbitego. Przetwarzanie i rozpoznawanie obrazów z mikrokamery Możliwe jest ustalenie stanu oka poprzez przetwarzanie i rozpoznawanie obrazów dostarczonych z mikrokamery. Proces ten przebiega w trzech etapach. Jego celem jest pozyskanie z obrazu informacji o stopniu rozproszenia światła odbitego i ustaleniu na jego podstawie stanu oka, tj. wartości binarnej. Należy pamiętać, że w czasie rzeczywistym przetwarzane są obrazy z dwóch mikrokamer, co wymusza małą złożoność obliczeniową zastosowanego algorytmu. Pierwszy etap polega na wskazaniu na obrazie punktu odbicia światła. Punkt ten rzadko kiedy ma rozmiar jednego piksela. Jest to możliwe tylko przy zastosowaniu mikrokamery o bardzo małej rozdzielczości. Najczęściej punkt odbicia to grupa bardzo jasnych pikseli sąsiadujących ze sobą. Celem tego etapu jest odszukanie tego obszaru i określenie jego położenia. W najprostszej wersji efektem działania algorytmu do określania punktu odbicia jest wyszukanie na obrazie najjaśniejszego punktu. To rozwiązanie, pomimo dużej prostoty, daje bardzo dobre rezultaty i cechuje się małą złożonością obliczeniową. Przykłady wyznaczenia najjaśniejszego punktu obrazu dla oka otwartego przedstawiono na rysunku 4.49, a dla oka zamkniętego na rysunku 4.50. 80 Zastosowanie bardziej złożonych algorytmów umożliwia wyszukanie całej grupy najjaśniejszych pikseli i ustalenie pozycji odbicia na podstawie środka ciężkości takiej grupy. To rozwiązanie jest bardziej dokładne i teoretycznie daje możliwość wyeliminowania z obrazu innych jasnych obszarów, które mogłyby zostać błędnie rozpoznane jako punkt odbicia. Nie mniej jednak, jak pokazały eksperymenty przeprowadzone na zbiorze 5000 obrazów oka otwartego i 5000 obrazów oka zamkniętego, zastosowanie prostszej metody opisanej powyżej daje porównywalne rezultaty i jest wystarczające. Możliwe jest zmniejszenie złożoności obliczeniowej tego etapu poprzez wyłączenie pewnych fragmentów obrazu z rozpoznawania. Jest to możliwe, gdy znany jest przypuszczalny obszar wystąpienia odbicia. Obszary wyłączone z rozpoznawania są widoczne na rysunku 4.49 i 4.50. Kolejny etap, ma na celu wyznaczenie profilu jasności obrazu. Przez wyznaczony w poprzednim etapie punkt, przeprowadzana jest pozioma oś o szerokości jednego piksela. Następnie generowany jest nowy obraz o szerokości równej szerokości obrazu zarejestrowanego przez mikrokamerę i wysokości 255 pikseli. Wysokość obrazu uzależniona jest od liczby stanów jakie może przyjąć piksel na obrazie szarościowym. W opracowanej metodzie stosuje się obrazy szarościowe ośmiobitowe. Oznacza to, że każdy z pikseli obrazu może przyjąć wartość od 0 do 255, co daje 256 możliwych stanów. Wartość 0 nie jest zaznaczana na obrazie z profilem jasności, dlatego wysokość obrazu wynosi 255 pikseli. Tak utworzony obraz przeznaczony jest do zapamiętania profilu jasności obrazu. Sprawdzana jest wartość pikseli wzdłuż wyznaczonej osi i zostaje ona naniesiona na nowo utworzony obraz w postaci linii. Linie te mają swój początek na dole obrazu a ich wysokość jest równa wartości rozpatrywanego piksela. Im piksel jest jaśniejszy, tym ma większą wartość i jest reprezentowany na profilu jasności przez dłuższą linię. Położenie linii wzdłuż osi x jest takie samo jak współrzędna x rozpatrywanego piksela. Przykłady wyznaczonych profili jasności zostały zestawione na rysunku 4.49 i 4.50, poniżej obrazów oka. Tak przygotowany profil jasności obrazu przekazywany jest do ostatniego etapu celem analizy i określenia stanu oka. Trzeci, a zarazem ostatni etap, polega na wyznaczeniu stanu oka poprzez analizę utworzonego profilu jasności. Jak widać na rysunku 4.49 i 4.50, profile jasności obrazów oka zamkniętego i otwartego wyraźnie się różnią. Gdy oko jest otwarte i rozproszenie światła jest niewielki, na profilu jasności widoczny jest wyraźny pik. Najjaśniejszy punkt obrazu i sąsiednie piksele mają dużą wartość tworząc słup o stromych krawędziach. W sytuacji, gdy na 81 Rys. 4.49. Zarejestrowane obrazy otwartych oczu z wyznaczonymi najjaśniejszymi punktami obrazów, zaznaczonymi obszarami wyłączonymi z rozpoznawania oraz z profilami jasności obrazów oczu. Rys. 4.50. Zarejestrowane obrazy zamkniętych oczu z wyznaczonymi najjaśniejszymi punktami obrazów, zaznaczonymi obszarami wyłączonymi z rozpoznawania oraz z profilami jasności obrazów oczu. zarejestrowanym obrazie jest widoczna powieka, profil jasności wygląda inaczej. Wartości pikseli coraz dalszych od najjaśniejszego, zmniejszają się powoli tworząc łagodne przejścia. Prawidłowość ta, pozwala z niezwykle dużą dokładnością stwierdzić, czy oko jest otwarte czy zamknięte. 82 Algorytm opracowany na potrzeby rozpoznawania stanu oka rozpoczyna działanie na profilu jasności w wyznaczonym punkcie, tj punkcie odpowiadającym najjaśniejszemu pikselowi obrazu. Następnie algorytm sprawdza szerokość kształtu utworzonego przez profil jasności w kolejnych liniach pod punktem startowym. W momencie, gdy algorytm wykryje zbyt szybki przyrost szerokości, zatrzymuje swoje działanie i zapisuje różnicę pomiędzy wysokością punku startowego i linii, w której wykryto szybki przyrost szerokości. W przypadku oka otwartego i wystąpienia stromych ścian pod punktem startowym, różnica wysokości będzie znacznie większa niż przy oku zamkniętym, gdzie łagodne zmiany wartości sąsiednich pikseli spowodują szybkie zatrzymanie algorytmu, a tym samym wyznaczenie małej różnicy wysokości. Jeżeli zatem, wyznaczona różnica wysokości przekroczy ustalony próg, mamy do czynienia z okiem otwartym. Jeżeli różnica wysokości, znajdzie się poniżej ustalonego progu, oko jest zamknięte. Wizualna prezentacja działania algorytmu została naniesiona na rysunek 4.49 i 4.50. Widać na nich wyznaczoną różnicę wysokości oraz naniesiony próg określający stan oka. Próg może być oczywiście dobrany dowolnie. Różnice wysokości pomiędzy okiem zamkniętym a otwartym są tak duże, że dobranie prawidłowej wartości progu nie stanowi problemu. Po przejściu trzech etapów, możliwe jest jednoznaczne stwierdzenie, czy oko użytkownika jest aktualnie otwarte czy zamknięte. Przy zastosowaniu optymalnej rozdzielczości mikrokamer (podrozdział 6.1.3), opracowana metoda umożliwia bardzo szybką identyfikację stanu oka ze skutecznością bliską 100% (podrozdział 7.2). 4.2.3 Analiza sygnałów generowanych na podstawie mrugnięć oczu W wyniku, odbywającego się w czasie rzeczywistym, przetwarzania i rozpoznawania obrazów pobranych z mikrokamer, generowane są dwa sygnały binarne. Każde oko generuje jeden sygnał opisujący aktualny stan oka. Jeden z dwóch możliwych stanów - oko może być zamknięte lub otwarte. Przykładowy zapis sygnałów zaprezentowano na rysunku 4.51. Tak generowane sygnały są analizowane pod kątem rozpoznania pewnych ustalonych zachowań użytkownika, które to mogą być wykorzystane w sterowaniu pracą komputera. Sygnały generowane na podstawie mrugnięć oczu są analizowane osobno oraz są porównywane ze sobą. 83 Rys. 4.51. Przykładowy zapis sygnałów wygenerowanych na podstawie mrugnięć oczu wraz z interpretacją gestów. W wyniku prowadzonych prac badawczych stwierdzono, że sygnały wygenerowane na podstawie mrugnięć oczu, powinny być klasyfikowane poprzez czas trwania zamknięcia oka. Opracowana została taka metoda klasyfikacji przez wzgląd na możliwość człowieka w zakresie mrugnięć. Przy wykorzystaniu tradycyjnych urządzeń sterujących, takich jak mysz czy klawiatura, stosuje się niemal wyłącznie szybkie kliknięcia, czy to przyciskami myszy czy klawiszami na klawiaturze. Nierzadko stosuje się szybkie podwójne kliknięcia. O ile wykonywanie takich czynności rękoma nie stanowi dla człowieka problemu, to szybkie mruganie jednym okiem już tak. Przeniesienie sposobu sterowania z urządzeń obsługiwanych rękoma na urządzenie obsługiwane mrugnięciami oczu skutkowałoby bardzo niską ergonomią bądź wręcz uniemożliwiłoby normalną pracę. Opracowano zatem rozwiązanie oparte o możliwości człowieka w zakresie mrugania. Gdy zostaje wykryte zamknięcie oka włączany jest licznik, który odmierza czas trwania tego zamknięcia. Od wartości tego czasu zależy odpowiednia klasyfikacja takiego sygnału. Wspólna analiza sygnałów generowanych na podstawie mrugnięć obojga oczu Porównanie ze sobą sygnałów generowanych na podstawie mrugnięć obojga oczu jest bardzo istotne i ma wyższy priorytet niż niezależna analiza każdego z kanałów. Każdorazowo, gdy wykryte zostanie zamknięcie obojgu oczu w tym samym czasie, przerywane jest niezależne analizowanie sygnałów. Wprowadzenia takiego rozwiązania było konieczne ze względu na potrzebę odfiltrowania z sygnałów naturalnych mrugnięć i zamknięć oczu oraz na sytuacje awaryjne. Naturalne mrugnięcie oczu charakteryzuje się jednoczesnym wystąpieniem na obu kanałach bardzo krótkiego sygnału. Podobnie w sytuacji, kiedy użytkownik świadomie zamknie oczy na pewien krótki okres czasu, na obu kanałach pojawi się sygnał. W obu przypadkach konieczne jest odfiltrowanie takiego gestu i pominięcie go, by nie wpływał na pracę systemu. 84 Jeżeli na obu kanałach wystąpi sygnał o czasie trwania równym lub krótszym niż ustalony czas t0 (rysunek 4.52), zostanie on pominięty i nie będzie miał wpływu na sterowanie pracą komputera. Taki gest jest klasyfikowany jako gest B0. Drugim powodem wspólnej analizy sygnałów generowanych na podstawie mrugnięć obojga oczu są sytuacje awaryjne. Może zaistnieć konieczność chwilowego lub całkowitego wyłączenia urządzenia. Użytkownik kończąc pracę bądź czasowo wyłączając urządzenie, by jego zachowanie nie miało wpływu na pracę systemu, musi zamknąć oboje oczu na czas dłuższy od ustalonego czasu t0 (np. na trzy sekundy) (rysunek 4.52). Takie zachowanie użytkownika klasyfikowane jest jako gest B1 i wyłącza sterowanie. Urządzenie nie wpływa wtedy na pracę systemu. Ponowne wykonanie gestu B1 powoduje przywrócenie pracy urządzenia. Czas t0 może być dobrany dowolnie zgodnie z preferencjami użytkownika. Rys. 4.52. Gesty B0 i B1. Analiza sygnału generowanego na podstawie mrugnięć jednego oka Generowany sygnał jest analizowany tylko w sytuacji, gdy drugie oko nie generuje w tym samym czasie żadnych sygnałów. W sytuacjach opisanych powyżej, gdy podczas analizy jednego z kanałów na drugim wystąpi jakikolwiek sygnał, analiza zostaje przerwana. Pozwala to jednoznacznie zidentyfikować gesty wykonywane przez użytkowania eliminując przypadkowe sygnały. Jak już zostało nadmienione, gesty wykonywane poprzez mrugnięcia oczu, klasyfikowane są ze względu na czas trwania mrugnięcia. Opracowano czterostopniową klasyfikację gestów. W tym celu wprowadzono zmienne t1, t2 i t3 określające upływ czasu, z założeniem, że t1 < t2 < t3. Zmienna t0 wprowadzona przy gestach wykorzystujących oboje oczu jest niezależny od zmiennych t1-3. 85 Jeżeli lewe oko zostanie zamknięte na czas równy lub krótszy niż czas t 1, zostanie to sklasyfikowane jako gest L0 (rysunek 4.53). Podczas zamknięcia oka lewego prawe musi być otwarte. W przeciwnym przypadku, analiza gestu zostanie przerwana. Analogicznie, jeżeli na czas równy lub krótszy niż czas t 1, zamknięte zostanie prawe oko, zostanie to sklasyfikowane jako gest R0 (rysunek 4.53). Wprowadzenie gestów L0 i R0 było konieczne w celu eliminacji przypadkowych mrugnięć (w tym naturalnych), rozpoznanych na jednym kanale oraz błędnie zidentyfikowanych mrugnięć oczu. Rozpoznane gesty L0 i R0 nie wpływają na sterowanie pracą komputera. Dłuższe zamknięcie oka, tj. na czas dłuższy od czasu t 1 i równy lub krótszy niż czas t2, powoduje sklasyfikowanie takiego zamknięcia jako inny gest (rysunek 4.54). Jeżeli zamknięte zostało oko lewe przy otwartym oku prawym, jest to klasyfikowane jako gest L 1. Natomiast, gdy zamknięte zostało oko prawe przy otwartym oku lewym, jest to klasyfikowane jako gest R1. Jeżeli lewe oko zostanie zamknięte na czas przekraczający czas t 2, ale krótszy od czasu t3 zostanie to sklasyfikowane jako gest L2 (rysunek 4.55). Analogicznie, jeżeli zamknięte zostanie prawe oko, gest taki zostanie sklasyfikowany jako R2 (rysunek 4.55). Oczywiście tak samo jak przy poprzednich gestach, drugie oko misi być w tym czasie otwarte. Ostatnie dwa gesty są identyfikowane, gdy oko zostanie zamknięte na czas dłuższy od czasu t3 (rysunek 4.56). Są to gesty L 3, gdy zamknięte zostanie oko lewe i R3, gdy zamknięte zostanie oko prawe. Przedstawiony powyżej podział czasu trwania zamknięcia oka na gesty jest tylko propozycją opracowaną przez autora pracy. Zarówno czasy t0-3 jak i rodzaje gestów mogą być dobrane dowolnie. Możliwe jest wprowadzenie większej lub mniejszej liczby przedziałów czasowych, jak również gestów wymagających kilkukrotnego przymknięcia oka. Nie mniej jednak opracowany podział jest komfortowy dla człowieka, pozwala na szybką pracę oraz daje duże możliwość sterowania komputerem. Przypisanie poleceń systemowych rozpoznanym gestom Opisane gesty, generowane na podstawie mrugnięć jednego lub obojga oczu, mogą być w sposób dowolny przełożone na polecenia systemowe. Użytkownik ma możliwość przypisania do każdego z gestów dowolnej akcji. 86 Rys. 4.53. Gesty L0 i R0. Rys. 4.54. Gesty L1 i R1. Rys. 4.55. Gesty L2 i R2. Rys. 4.56. Gesty L3 i R3. 87 Opracowano sposób przypisania poleceń systemowych rozpoznanym gestom (tabela 4.1). Przedstawiony sposób umożliwia szybką i wygodną pracę. Pomimo, iż do sterowania wykorzystywane są tylko dwa binarne kanały (zamknięte lub otwarte oko lewe i prawe), liczba możliwych do wykonania poleceń systemowych jest duża. Należy pamiętać, że wszystkie opisane polecenia systemowe, wykonywane są w sposób zapewniający użytkownikowi wysoki komfort pracy. Użytkownik nie jest zmuszany do wykonywania oczami gestów niewygodnych i trudnych. Tab. 4.1. Przypisanie poleceń systemowych gestom. Gest Czas zamknięcia (t) Polecenie systemowe oko lewe oko prawe B0 0 < t ≤ t0 0 < t ≤ t0 Brak B1 t0 < t t0 < t Wyłączenie lub włączenie urządzenia L0 0 < t ≤ t1 t=0 Brak L1 t1 < t ≤ t2 t=0 Pojedyncze kliknięcie lewego przycisku myszy L2 t2 < t ≤ t3 t=0 Podwójne kliknięcie lewego przycisku myszy L3 t3 < t t=0 Przytrzymanie lewego przycisku myszy R0 t=0 0 < t ≤ t1 Brak R1 t=0 t1 < t ≤ t2 Pojedyncze kliknięcie prawego przycisku myszy R2 t=0 t2 < t ≤ t3 Pojedyncze kliknięcie centralnego przycisku myszy; scroll R3 t=0 t3 < t Przytrzymanie prawego przycisku myszy 4.3 Klawiatura ekranowa i wprowadzanie tekstu Opracowany interfejs komunikacyjny umożliwia zmianę położenia kursora na ekranie poprzez niewielkie ruchy głowy oraz wykonywanie poleceń systemowych poprzez mrugnięcia oczu. Pozwala to na bardzo skuteczne zastąpienie myszy komputerowej. Możliwe jest jeszcze jedno zastosowanie opracowanego interfejsu, a mianowicie do wprowadzania tekstu. By było to możliwe, konieczne jest zastosowanie klawiatury ekranowej (rysunek 4.57). Klawiatura taka jest wyświetlana na pierwszym planie ekranu. Wskazanie kursorem wybranego klawisza i wykonanie gestu okiem oznaczającego pojedyncze kliknięcie myszy, skutkuje wprowadzeniem wybranego znaku bądź wykonaniem akcji przypisanej do 88 Rys. 4.57. Klawiatura ekranowa o klawiszach zbliżonych do wielkości kursora. wskazanego klawisza. Wprowadzanie znaków wymaga zastosowania obu opracowanych metody sterowania, tj. zmiany położenia kursora na ekranie oraz wykonywanie poleceń systemowych. Zastosowanie klawiatury ekranowej znacząco rozszerza możliwości sterowania. Dzięki wprowadzaniu tekstu i wykorzystywaniu innych klawiszy, użytkownik jest w stanie w pełni korzystać z komputera, tak samo, jak przy zastosowaniu tradycyjnej myszy i klawiatury. Najważniejsze, że wszystko to jest możliwe bez wykorzystania rąk. Całe sterowanie odbywa się poprzez niewielkie ruchy głowy i mrugnięcia oczu. Klawiatura ekranowa Klawiatura ekranowa symuluje zwykłą klawiaturę. Jest ona wyświetlana na ekranie w taki sposób, by inne obiekty wyświetlane na ekranie jej nie przysłaniały. Wyglądem jak i funkcjonalnością przypomina zwykłą klawiaturę. Systemy operacyjne zazwyczaj udostępniają klawiaturę ekranową. W przeciwnym przypadku możliwe jest zainstalowanie w systemie zewnętrznej klawiatury tego typu. Jak już zostało nadmienione, klawiatura ekranowa może posiadać identyczny rozkład klawiszy jak zwykła klawiatura. Jest to najczęściej spotykany wariant, ale nie jedyny. By praca z wykorzystaniem opracowanego interfejsu była bardziej efektywna, możliwe jest uproszczenie takiej klawiatury. Część rzadko używanych klawiszy bądź te w ogóle nieużywane mogą zostać usunięte, by zbędnie nie zajmowały miejsca na ekranie. Możliwe jest ograniczenie klawiszy tylko do cyfr, jeżeli w systemie w danym momencie wymagane jest od użytkownika wprowadzanie wartości liczbowej. Oprócz ograniczania liczby klawiszy można zastosować rozwiązanie odwrotne, tj. rozszerzenie klawiatury. Zastosowanie dodatkowych klawiszy wykonujących zaprogramowane polecenia systemowe, może być bardzo pomocne, np. przy wykorzystaniu opracowanego inter89 fejsu przez osoby niepełnosprawne. Możliwe jest w ten sposób uproszczenie niektórych skomplikowanych operacji wykonywanych w systemie, do wskazania i kliknięcia jednego klawisza. Ważnym parametrem klawiatury ekranowej jest jej wielkość, a dokładniej wielkość klawiszy i odstępów pomiędzy nimi. Biorąc pod uwagę, że opracowane rozwiązanie cechuje się bardzo wysoką precyzją, taka klawiatura może mieć niewielkie rozmiary. Dzięki temu nie przysłania dużej powierzchni ekranu. Należy jednak pamiętać, że nadmierne zmniejszenie klawiatury ekranowej obniży komfort pracy użytkownika. Ustalono, że szybką i komfortową pracę umożliwia klawiatura ekranowa, na której pojedyncze klawisze mają rozmiar zbliżony do rozmiaru kursora. Taka klawiatura jest czytelna, użytkownik bez trudu może umieścić kursor na wybranym klawiszu, a odstępy pomiędzy klawiszami umożliwiają szybkie wybieranie kolejnych znaków podczas wprowadzania tekstu. Przykład klawiatury ekranowej, o tak dobranych rozmiarach przedstawiono na rysunku 4.57. Klawiatura ekranowa może cały czas być widoczna na ekranie, stale zajmując wydzieloną część ekranu. Bardzo przydatnym rozwiązaniem jest jednak zastosowanie klawiatury ukrywanej. W takim wariancie, klawiatura pojawia się na ekranie tylko w sytuacji, gdy zachodzi potrzeba wprowadzenia tekstu czy użycia innego klawisza. Pojawienie się klawiatury może być wywołane na żądanie użytkownika bądź automatycznie, gdy użytkownik wskaże kursorem pole do wprowadzania tekstu albo liczb. Szybkość wprowadzania tekstu Podobnie jak w tradycyjnej klawiaturze, wprowadzanie tekstu odbywa się poprzez wybieranie kolejno pojedynczych znaków. Jednak użytkownik korzystający z tradycyjnej klawiatury, ma do dyspozycji dziesięć palców, co umożliwia bardzo szybkie wprowadzanie tekstu. W przypadku opracowanego interfejsu, podczas wprowadzaniu kolejnych znaków, konieczny jest ruch głowy powodujący przesunięcie kursora nad pożądany klawisz. Następnie użytkownik musi wykonać gest okiem, do którego przypisane jest pojedyncze kliknięcie myszy. Szybkość wprowadzania tekstu uzależniona jest od szybkości zmiany położenia kursora na ekranie, odległości pomiędzy klawiszami oraz szybkością wykonania przez użytkownika gestu okiem. Jako, że na klawiaturze ekranowej, klawisze są umieszczone blisko siebie, wartość ruchu głowy wymagana do przesunięcia kursora pomiędzy kolejnymi znakami podczas wprowadzania tekstu jest bardzo mała (od 0,5° do 5°). Szybkość przesunięcia kursora jest zależna od zastosowanej metody zmiany położenia kursora na ekranie. Przy prawidłowym 90 doborze metody i jej parametrów, przesunięcie powinno nastąpić w czasie nieprzekraczającym 0,2s (podrozdział 7.1). Zastosowanie opisanego w podrozdziale 4.2.3 gestu L1, tj. wykonanie pojedynczego kliknięcia lewym przyciskiem myszy, poprzez krótkotrwale zamknięcie lewego oka, umożliwia szybki wybór wskazanego znaku. Reasumując, wprowadzanie tekstu z wykorzystaniem opracowanego interfejsu jest wolniejsze od tradycyjnej klawiatury. Biorą jednak pod uwagę, że odbywa się ono bez użycia rąk, szybkość wprowadzania tekstu jest zadowalająca. Podczas eksperymentów udało się osiągnąć wprowadzanie tekstu na poziomie 50-60 znaków na minutę (podrozdział 7.3). Istnieje możliwość przyspieszenia procesu wprowadzania tekstu, poprzez zastosowanie zintegrowanego słownika. Każdorazowo, gdy użytkownik wprowadzi znak, poprzez klawiaturę ekranową, słownik wyświetla listę słów pasujących do wprowadzonej sekwencji. Dzięki takiemu rozwiązaniu, wprowadzanie szczególnie długich słów odbywa się szybciej. Słownik taki może podpowiadać również słowa wykorzystując kontekst, tj. słowa, które najczęściej występują ze słowem lub słowami poprzedzającymi aktualne. 91 Rozdział 5 Model matematyczny Opracowana metoda sterowania, zakłada zmianę położenia kursora na ekranie poprzez niewielkie ruchy głowy. Rozdział ten jest poświęcony wyjaśnieniu, jak ruch głowy wpływa na ruch kursora. Co wpływa na wielkość zmiany położenia i jakie ruchy głowy są konieczne do sterowania kursorem. Ogólny, uproszczony schemat sterowania został zamieszczony na rysunku 5.1. Przedstawiono na nim widok w rzucie perspektywicznym, by pokazać jak zmiana pochylanie głowy lub przekręcenie głowy o pewien kąt, wpływa na wskazywany na ekranie punkt. W pozycji zerowej, gdy wartość pochylenia i przekręcenia głowy wynosi zero stopni, wskazywane jest centrum ekranu (połowa wysokości i szerokości ekranu). Na podstawie tak przedstawionego modelu, możliwe jest wyznaczenie zależności opisujących wpływ ruchu głowy o wybrany kąt na zmianę wskazywanego punktu. Wzory 5.1a i 5.1b opisują kolejno odległość wskazywanego punktu od centrum ekranu na osi x (wyrażonej w centymetrach) przy przekręceniu głowy o kąt α (wyrażony w stopniach) i odległość wskazy- Rys. 5.1. Wpływ ruchów głowy na wskazywany na ekranie punkt. 93 wanego punktu od centrum ekranu na osi y przy pochyleniu głowy o kąt β. Wartości te są zależne od odległości kamery od ekranu d (wyrażonej w centymetrach). dx ( α , d )=d⋅tg (α ) (5.1a) dy ( β , d )=d⋅tg( β ) (5.1b) Wzory 5.1a i 5.1b zawierają trzy zmienne. Oznacza to, że dowolna ze zmiennych zależna jest od dwóch wartości. W tak przedstawionej postaci, odległość wskazywanego punktu od centrum ekranu jest uzależniona od odległości pomiędzy rejestratorem a ekranem d oraz od kąta rejestracji α lub β. Na rysunku 5.2 zaprezentowano wykres zależności odległości wskazywanego punktu od centrum ekranu względem kąta rejestracji przy zachowaniu stałej odległości od ekranu równej 50cm, 100cm i 150cm. Krzywe mają charakter potęgowy. Oznacza to, że zmiana kąta rejestracji, czyli ruch głowy, o ten sam kąt blisko centrum ekranu i na skraju ekranu powoduje przesunięcie wskazywanego punktu o inną wartość. Im dalej od centrum ekranu, tym ta zmiana jest większa. We wzorze 5.2 przedstawiono tę zależność. Na rysunku 5.3 zaznaczono wartość przesunięcia wskazywanego punktu przy zmianie ułożenia głowy o jeden stopień dla stałej odległości od ekranu równej 50cm, 100cm i 150cm. Δ x (α , d )=dx ( α +1, d )−dx (α , d ) Rys. 5.2. Wykres zależności odległości wskazywanego punktu od centrum ekranu względem kąta rejestracji. 94 (5.2) Rys. 5.3. Wartość zmiany położenia wskazywanego punktu na ekranie przy ruchu głowy o jeden stopień względem kąta rejestracji. Przy stałej odległości od ekranu równej 100cm, ruch głowy o jeden stopień w pobliżu centrum ekranu powoduje zmianę pozycji wskazywanego punktu o 1,75cm. Przy większej odległości od centrum ekranu (rejestracja pod kątem 30°) zmiana pozycji wynosi już 2,3cm. Dla odległości 50cm i 150cm, wartości te wynoszą kolejno: 0,87cm i 1,15cm oraz 2,63cm i 3,46cm. Modyfikując wzory 5.1a i 5.1b możliwe jest wyznaczenie, jaka jest wymagana wartość ruchu głowy, by wskazywany punkt znajdował się w ustalonej odległości od centrum ekranu (wzór 5.3a i 5.3b). ( dx ) y β ( y , d )=arctg ( ) d α ( x , d )=arctg (5.3a) (5.3b) Podobnie jak poprzednio, rozważmy trzy odległości kamery od ekranu: 50cm, 100cm i 150cm. Na rysunku 5.4 przedstawiono wykres zależności wymaganej wartości ruchu głowy w stopniach od zadanego położenia wskazywanego punktu. Ważną zależnością jest konieczny do wykonania ruch głowy, by wskazywany punkt przesunął się o jeden centymetr. Zależność tę opisano wzorami 5.4a i 5.4b oraz zaprezentowano na rysunku 5.5. Δ α ( x , d )=α (x+1, d )−α (x , d ) (5.4a) Δ β ( y , d )= β ( y+1, d )− β ( y , d ) (5.4b) 95 Rys. 5.4. Wykres zależności wymaganego zakresu ruchów głowy od zadanego położenia wskazywanego punktu. Rys. 5.5. Wartość koniecznego do wykonania ruchu głowy by wskazywany punkt na ekranie zmienił swoje położenie o jeden centymetr względem odległości wskazywanego punktu od centrum ekranu. Dla odległości od ekranu równej 100cm, konieczne jest wykonanie ruchu głowy o kąt 0,57°, by zmienić lokalizację wskazanego punktu o jeden centymetr w pobliżu centrum ekranu. Przy odległości wskazywanego punktu o 50cm od centrum ekranu, taka sama zmiana położenia wskazywanego punktu, wymaga ruchu głowy już tylko o kąt 0,46°. Dla odległości od ekranu równej 50cm i 150cm, wymagana wartość ruchu głowy wynosi odpowiednio: 1,15° i 0,58° oraz 0,38° i 0,34°. Na uwagę zasługuje fakt, iż dla małych odległości od ekranu, krzywa 96 ulega gwałtownemu spadkowi. Przy małym kącie, zmiana przesunięcia o jeden centymetr, wymaga znacznie większego ruchu głowy niż przy dużym kącie. Zwiększenie odległości od ekranu powoduje wyraźne złagodzenie krzywej, a tym samym wymagane wartości ruchów głowy do przesunięcia wskazywanego punktu o jeden centymetr przy małym i dużym kącie są zbliżone. Wzory 5.3a i 5.3b pozwalają ponadto wyznaczyć teoretyczne zależności wymaganych wartości ruchów głowy w osiach x i y, umożliwiających objęcie całego ekranu dla: • ekranów o różnej wielkości przy stałej odległości od ekranu, • różnej odległości od ekranu przy stałej wielkości ekranu. W obu przypadkach, do wzorów zostaną podstawione wymiary ekranów. Do wzoru 5.3a jako parametr x zostanie podstawiona połowa szerokość ekranu, a do wzoru 5.3b jako parametr y podstawiona zostanie połowa wysokości ekranu (rysunek 5.6). W wyniku uzyskamy wymagany zakres ruchów głowy do objęcia całego ekranu. Wynik określa ruch głowy w każdą ze stron od pozycji zerowej. Całkowity ruch głowy w płaszczyźnie poziomej jest zatem równy podwojonej wartości wyznaczonego kąta α, a w płaszczyźnie pionowej podwojonej wartości wyznaczonego kata β. Wymagany zakres ruchów głowy dla ekranów o różnej wielkości Zostały tu rozważone ekrany o różnej przekątnej wyrażonej w calach. Specyfika powszechnie stosowanych ekranów, nie pozwala jednoznacznie określić wysokości i szerokości Rys. 5.6. Wymagany zakres ruchów głowy do objęcia całego ekranu. 97 ekranu tylko na podstawie przekątnej. Ograniczono się zatem do najpopularniejszych stosowanych ekranów, tj. o stosunku szerokości do wysokości równej 16:9 i 4:3. Na rysunku 5.7 przedstawiono wykres wymaganego zakresu ruchów głowy w płaszczyźnie pionowej i poziomej, dla ekranów o różnej przekątnej, przy stałej odległości od ekranu równej 100cm. Różnice pomiędzy kątami dla osi poziomej i pionowej są większe przy ekranach o propozycjach 16:9 niż przy ekranach 4:3. Wyznaczone krzywe zachowują charakter potęgowy. Jednak na uwagę zasługuje fakt, że dla najczęściej stosowanych monitorów, tj. o przekątnych z zakresu od 15 do 30 cali, krzywe zachowują charakter niemal liniowy (rysunek 5.8). W tym przypadku, oznacza to, że dwukrotne zwiększenie przekątnej ekranu, powoduje dwukrotne zwiększenie wymaganego zakresu ruchów głowy. W tabeli 5.1 zestawiono wymagane zakresy ruchów głowy dla najczęściej spotykanych ekranów (odległość rejestracji wynosi 100cm). Tab. 5.1. Wymagany zakres ruchów głowy do objęcia całego ekranu z odległości 100cm. 16:9 [ °] 4:3 [ °] przekątna [in] α β α β 15 9,43 5,34 8,67 6,52 17 10,66 6,04 9,8 7,38 19 11,88 6,75 10,93 8,24 21 13,09 7,45 12,04 9,09 23 14,28 8,15 13,15 9,94 27 16,64 9,54 15,34 11,63 Dla wszystkich ekranów z omawianego przedziału, wymagany zakres ruchów głowy wynosi najwyżej kilkanaście stopni. To bardzo niewielki ruch. Wymagany zakres ruchów głowy dla różnej odległości Podobnie jak powyżej, rozważono tu ekrany o proporcjach 16:9 i 4:3. Wykorzystując wzory 5.3a i 5.3b, wyznaczono zależność wymaganego do objęcia całego ekranu zakresu ruchów głowy, względem odległości od ekranu (rysunek 5.9). Zastosowano ekran o stałej przekątnej równej 23 cale. Zwiększenie odległości od ekranu skutkuje zmniejszeniem wymaganego zakresu ruchów głowy. 98 Rys. 5.7. Wymagany zakres ruchów głowy do objęcia ekranów o różnej przekątnej przy rejestracji z odległości 100cm. Rys. 5.8. Wymagany zakres ruchów głowy do objęcia ekranów o przekątnej z przedziału od 15 do 30 cali przy rejestracji z odległości 100cm. 99 Rys. 5.9. Wymagany zakres ruchów głowy do objęcia ekranu o przekątnej 23 cale przy rejestracji z różnej odległości. Monitory Dotychczasowe wartości przesunięcia wskazywanego punktu były wyrażone w centymetrach. Istotną kwestią jest wyznaczenie teoretycznej pozycji kursora na ekranie. Lokalizacja ta, powinna być wyrażona w pikselach. Przeliczenie pozycji podanej w centymetrach na pozycję w pikselach nie jest jednoznaczne. Zależy ono od zastosowanego monitora. Najistotniejsze kwestie to przekątna ekranu oraz zastosowana rozdzielczość, z której wynika również proporcja ekranu. Liczbę pikseli przypadających na jeden centymetr lpx można wyznaczyć ze wzoru 5.5a. Parametry resX oraz resY określają rozdzielczość zastosowanego ekranu natomiast scrX i scrY oznaczają rozmiar ekranu w płaszczyźnie poziomej i pionowej wyrażoną w centymetrach (wzory 5.5b i 5.5c). Parametr scrP (wzór 5.5d) określa proporcję ekranu, która wynika bezpośrednio z zastosowanej rozdzielczości. lpx= resX resY = scrX scrY (5.5a) scrX =scrD⋅2,54⋅cos( arcctg ( scrP )) (5.5b) scrY =scrD⋅2,54⋅sin(arcctg (scrP )) (5.5c) scrP= resX resY (5.5d) 100 Na rysunku 5.10 przedstawiono liczbę pikseli przypadających na jeden centymetr dla różnych przekątnych ekranu o proporcji 16:9 dla kilku wybranych rozdzielczości (HDTV 720p 1280x720, HDTV 1080p - 1920x1080, Ultra HD - 3840x2160, UHDTV - 7680x4320). Na rysunku 5.11 przedstawiono bardziej szczegółową zależność dla ekranów o przeciętnej wielkości i powszechnie stosowanych rozdzielczościach. Dla rozdzielczości HDTV 1080p zastosowanej na ekranie o przekątnej 21 cali na jeden centymetr przypada 41 pikseli, natomiast dla ekranu o przekątnej 27 cali jest to już tylko 32 piksele. Taką samą zależność wyznaczono dla ekranów o proporcjach 4:3 dla czterech rozdzielczości (SVGA - 800x600, XGA - 1024x768, UXGA - 1600x1200, QXGA - 2048x1536). Zależność tę pokazano na rysunku 5.12. Dodatkowo na rysunku 5.13 pokazano bardziej szczegółową zależność liczby pikseli przypadających na jeden centymetr dla ekranów o przekątnych z zakresu od 15 do 30 cali. W tabelach 5.2 i 5.3 zestawiono liczbę pikseli przypadającą na jeden centymetr, dla przykładowych ekranów o różnej przekątnej i rozdzielczości. Tab. 5.2. Liczba pikseli przypadająca na jeden centymetr (ekrany o proporcji 16:9). przekątna [in] 16:9 [px] 1280x720 1920x1080 3840x2160 7680x4320 23 25 37 75 150 27 21 32 64 128 32 18 27 54 108 55 10 15 31 63 Tab. 5.3. Liczba pikseli przypadająca na jeden centymetr (ekrany o proporcji 4:3). przekątna [in] 17 21 23 27 800x600 23 18 17 14 4:3 [px] 1024x768 1600x1200 29 23 21 18 101 46 37 34 29 2048x1536 59 47 43 37 Rys. 5.10. Liczba pikseli przypadająca na jeden centymetr dla różnych ekranów o proporcji 16:9. Rys. 5.11. Liczba pikseli przypadająca na jeden centymetr dla różnych ekranów o proporcji 16:9 i przekątnej od 15 do 30 cali. 102 Rys. 5.12. Liczba pikseli przypadająca na jeden centymetr dla różnych ekranów o proporcji 4:3. Rys. 5.13. Liczba pikseli przypadająca na jeden centymetr dla różnych ekranów o proporcji 4:3 i przekątnej od 15 do 30 cali. 103 Dysponując wzorami 5.3a, 5.3b oraz 5.5a możliwe jest wyznaczenie ruchu głowy, jaki jest potrzebny do zmiany położenia kursora na ekranie o jeden piksel. Kąt ten jest zależny od odległości od ekranu, jego wielkości, zastosowanej rozdzielczości, jak również od odległości kursora od centrum ekranu (rysunek 5.4). By wyznaczyć tę zależność, w pierwszej kolejności konieczne jest wyprowadzenie wzoru opisującego wymagane wartości ruchów głowy w stopniach, by kursor pojawił się w podanej odległości od centrum ekranu (wyrażonej w pikselach), przy zadanej rozdzielczości ekranu, odległości od niego i jego wielkości. Wzór ten (wzór 5.6) można wyprowadzić ze wzoru 5.3a lub 5.3b podstawiając pod x lub y odległość kursora w pikselach od centrum ekranu (px) podzieloną przez liczbę pikseli przypadających na centymetr (lpx wzór 5.5a). α ( px)=arctg px ( lpx⋅d ) (5.6) Do wyznaczenia wymaganej wartości ruchu głowy do zmiany położenia kursora o jeden piksel, konieczne jest zastosowanie wzoru 5.7. Δ α ( px)=α ( px+1)−α ( px) (5.7) Zależność tę dla różnych monitorów i stałej odległości 50cm, 100cm i 150cm przedstawiono kolejno na rysunkach 5.14, 5.15 i 5.16. Dla małych odległości od ekranu, zmiana położenia kursora o jeden piksel, wymaga wyraźnie większego ruchu głowy gdy kursor znajduje się blisko centrum ekranu, niż gdy kursor znajduje się przy krawędzi ekranu. Przy większych odległościach od ekranu krzywe na wykresie mają charakter niemal liniowy. Oznacza to, że na całej powierzchni ekranu, ruch kursora o jeden piksel wymaga zbliżonego ruchu głowy. Warto zwrócić uwagę na jeszcze jeden aspekt rozpatrywanego zagadnienia. W tym rozdziale przedstawiono dane dotyczące wpływu ruchu głowy na punkt wskazywany na ekranie. Dane te nie uwzględniają minimalnego ruch głowy możliwego do wykonania przez człowieka. Istnieje prawdopodobieństwo, że zbyt duża odległość w stosunku do wielkości ekranu i jego rozdzielczości, uniemożliwi uzyskanie precyzji sterowania co do jednego piksela. Zagadnienie to powinno być uwzględnione podczas projektowania konkretnego interfejsu komunikacyjnego, opartego o opracowaną metodę sterowania. 104 Rys. 5.14. Wymagana wartość ruchu głowy do zmiany położenia wskazywanego punktu o jeden piksel względem odległości wskazywanego punktu od centrum ekranu przy rejestracji z odległości 50cm. Rys. 5.15. Wymagana wartość ruchu głowy do zmiany położenia wskazywanego punktu o jeden piksel względem odległości wskazywanego punktu od centrum ekranu przy rejestracji z odległości 100cm. 105 Rys. 5.16. Wymagana wartość ruchu głowy do zmiany położenia wskazywanego punktu o jeden piksel względem odległości wskazywanego punktu od centrum ekranu przy rejestracji z odległości 150cm. Wpływ usytuowania kamery na zakres ruchów Opisany powyżej model dotyczy prostego przypadku, w którym kamera główna znajduje się dokładnie w osiach obrotu. W praktyce usytuowanie kamery względem osi obrotu jest inne i zależy od miejsca jej przymocowania do urządzenia (rysunek 5.17). Niezależnie od lokalizacji, kamera powinna być tak zamocowana, by w pozycji zerowej (zerowy kąt obrotu i pochylenia głowy) wskazywała centrum ekranu. W takiej sytuacji, nieznaczne przesunięcie kamery względem osi obrotów ma niewielki wpływ na wyznaczone powyżej zależności. Może się jednak zdarzyć tak, że kamera w pozycji zerowej nie wskazuje centrum ekranu (rysunek 5.18). Skutkuje to inną wymaganą wartością ruchu głowy w każdą ze stron do objęcia całego ekranu. Jeżeli punkt wskazywany przez kamerę w pozycji zerowej, znajduje się na lewo od centrum ekranu, to wymagany zakres ruchu głowy w lewą stronę będzie mniejszy niż w prawą. Natomiast suma ruchu w prawo i w lewo będzie zbliżona niezależnie, czy kamera wskazuje centrum ekranu czy punkt oddalony od niego. Analogiczna sytuacji ma miejsce w przypadku pochylenia głowy do przodu i do tyłu. 106 Rys. 5.17. Przesunięcie kamery względem osi obrotów. Rys. 5.18. Kamera w pozycji zerowej nie wskazuje centrum ekranu. 107 Zniekształcenia geometryczne rejestrowanych obrazów Załóżmy, że człowiek znajduje się centralnie przed monitorem, którego wielkość jest maksymalna dla przyjętej odległości obserwacji zgodnie z wytycznymi producentów ekranów co zostało opisane w podrozdziale 3.1 i przedstawione na rysunku 3.3. W takiej sytuacji, opierając się na wzorach 5.3a i 5.3b oraz na rysunku 5.7 (rozdział 5), człowiek obserwuje obiekty położone przy bocznej krawędzi ekranu pod kątem 14 stopni. Oznacza to zniekształcenie zarejestrowanego kursora o 3% czyli w praktyce nie przekraczające jednego piksela. Tak małe zniekształcenie w najmniejszym stopniu nie wpływa na jakość rozpoznawania ani na szybkość i precyzję sterowania. Załóżmy jednak, że człowiek w naturalny sposób starając się usiąść centralnie przyjmie pozycję daleką od ideału. Przyjmijmy, że głowa będzie na osi prostopadłej do płaszczyzny ekranu ale oś ta niech przechodzi przez boczną krawędź ekranu – można założyć, że jest to skrajne położenie kiedy człowiek nie będzie poprawiał swojej pozycji. W takiej sytuacji, zachowując tę samą odległość i rozmiar ekranu, obiekty na ekranie będą obserwowane pod kątem co najwyżej 26 stopni co przekłada się na zniekształcenie na poziomie 10%. Takie zniekształcenie może mieć wpływ na rozpoznawanie kursorów o unikatowym kształcie, które zostały uznane za nieprzydane do wykorzystania w opracowanej metodzie sterowania. Na rozpoznawanie pozostałych trzech grupy kursorów, tj. kursorów jednobarwnych, wielobarwnych oraz unikatowego wzoru wyświetlanego w sąsiedztwie kursora systemowego, takie zniekształcenie nie ma wpływu. Ponadto, taki poziom zniekształcenia kursorów nie wpływa negatywnie na precyzję sterowania. Nie przekład się to również na szybkość zmiany położenia kursora w metodach polegających na stałej zmianie jego położenia w każdej iteracji. Zniekształcenie na poziomie 10% może mieć jednak wpływ na szybkość zmiany położenia kursora w metodzie adaptacyjnej i spowodować konieczność przeprowadzenia o jedną iterację więcej. Wydłuża to czas zmiany położenia kursora o 0,04s. Można stwierdzić, że nawet dalekie od ideału usytuowanie człowieka względem monitora w znikomym stopniu wpływa na sterowanie w opracowanej metodzie. 108 Rozdział 6 Rozwiązanie praktyczne 6.1 Projekt urządzenia W oparciu o przeprowadzone badania możliwe było zaprojektowanie urządzenia sterującego pracą komputera, które umożliwia zmianę położenia kursora na ekranie oraz wykonywanie poleceń systemowych. Do sterowania wykorzystywane są niewielkie ruchy głowy oraz mrugnięcia oczu. Urządzenie montowane jest na głowie użytkownika - może przybrać formę okularów. Zmiana położenia kursora bazuje na rejestracji jego obrazu poprzez kamerę główną urządzenia, co wynika ze specyfiki opracowanej metody sterowania. Zarejestrowany obraz z kursorem przechodzi proces przetwarzania i rozpoznawania. Celem tego procesu jest ustalenie dokładnego położenia kursora (na zarejestrowanym obrazie). Pomiędzy ustalonym położeniem a punktem domyślnym obrazu (najczęściej centrum kadru), wyznaczany jest wektor określający kierunek zmiany położenia kursora na ekranie. Metoda ta umożliwia przesunięcie kursora w miejsce, na które zwrócona jest kamera główna, a tym samym twarz użytkownika. Każdy ruch głowy użytkownika wpływa zatem na sterowanie kursorem. Użytkownik do zmiany położenia kursora na ekranie wykorzystuje pochylenie głowy do przodu lub do tyłu oraz przekręcenie głowy w prawo lub w lewo (rysunek 3.1). Pochylenie głowy do dołu lub do góry powoduje zmianę położenia kursora wzdłuż osi y. Przekręcenie głowy w prawo lub w lewo powoduje zmianę położenia kursora wzdłuż osi x. Zagadnienie zmiany położenia kursora poprzez niewielkie ruchy głowy zostało gruntownie zbadane i szeroko omówione w podrozdziale 4.1. Jak wynika z opracowanej metody sterowania, wykonywanie poleceń systemowych oparte jest o analizę mrugnięć. Konieczne jest prawidłowe określenie, w jakim stanie znajdują się oczy użytkownika - czy chociaż jedno z nich jest zamknięte. W tym celu wykorzystywane są 109 moduły mikrokamer. Dioda lub diody zainstalowane w module mikrokamery oświetlają oko użytkownika światłem podczerwonym. Światło odbite od powierzchni oka jest rejestrowane przez mikrokamerę, która pracuje w paśmie światła podczerwonego. Obrazy pobrane z mikrokamery zostają poddane procesowi przetwarzania i analizy. Badany jest stopień rozproszenia światła odbitego i na jego podstawie określany jest stan oka. Zagadnienie sterowania poprzez mrugnięcia oczu zostało gruntownie zbadane i szeroko omówione w podrozdziale 4.2. Stosowanie opracowanego interfejsu ma na celu zastąpienie tradycyjnej myszy i klawiatury, które do sterowania wymagają rąk. Opracowane rozwiązanie posiada takie same możliwości, ale do sterowania wymaga jedynie niewielkich ruchów głowy oraz mrugnięć. Urządzenie jest ponadto niewrażliwe na zewnętrzne warunki oświetleniowe. 6.1.1 Budowa urządzenia Opracowano dwa warianty wykonania urządzenia, tj. wariant przewodowy i bezprzewodowy. Zasadnicza część urządzenia realizująca opracowane metody sterowania w obu wariantach pozostaje niezmienna. Różnica polega na sposobie komunikacji urządzenia z komputerem oraz miejscu wykonywania obliczeń. Niezależnie od wariantu, urządzenie przystosowane jest do montażu na głowie użytkownika. W opracowanych wariantach wykonania urządzenie przybiera postać okularów. Nie mniej jednak może mieć inną formę, np. opaski, czapki, itp. Istotne jest sztywne przymocowanie urządzenia do głowy, tak by ruch głowy przekładał się na ruch urządzenia. Tym samym wpływał na kierunek rejestracji kamery głównej, która umieszczona jest w taki sposób, by rejestrowała obszar, na który zwrócona jest twarz użytkownika. Podczas pracy z urządzeniem kamera główna rejestruje obraz ekranu monitora bądź jego fragment. Urządzenie posiada również dwa moduły mikrokamer, które usytuowane są w taki sposób, by możliwa była rejestracja obrazów oczu użytkownika przy jednoczesnym nieograniczaniu pola widzenia użytkownika. Wariant przewodowy Urządzenie w wariancie przewodowym (rysunek 6.1) ma postać okularów montowanych na głowie (lub inną formę umożliwiającą prawidłowe rozmieszczenie podzespołów). Na bocz110 Rys. 6.1. Budowa urządzenia w wariancie przewodowym. nym ramieniu urządzenia zainstalowana jest kamera główna, w taki sposób, by naprzeciwko niej znajdował się ekran monitora. Kamera główna rejestruje obraz całego ekran lub jego części. Na przedniej części urządzenia zamontowane są moduły mikrokamer. Jeden naprzeciwko oka lewego i drugi naprzeciwko oka prawego. Moduł mikrokamery zbudowany jest z mikrokamery rejestrującej obrazy oka w paśmie światła podczerwonego oraz diody lub diod emitujących światło podczerwone (rysunek 6.2). Diody umieszczone są w sposób umożliwiający oświetlenie oka, tak by światło odbite od powierzchni oka dostawało się do obiektywu mikrokamery. Urządzenie jest połączone z komputerem poprzez przewód USB. Zapewnia on komunikację z komputerem oraz zasilanie urządzenia. Rys. 6.2. Moduł mikrokamery. 111 Wariant bezprzewodowy Urządzenie w wariancie bezprzewodowym (rysunek 6.3) podobnie jak w wariancie przewodowym ma postać okularów montowanych na głowie (lub inną formę umożliwiającą prawidłowe rozmieszczenie podzespołów). Na bocznym ramieniu urządzenia zainstalowana jest kamera główna w taki sposób, by naprzeciwko niej znajdował się ekran monitora. Na przedniej części urządzenia zamontowane są dwa moduły mikrokamer do rejestracji obrazów oka lewego i prawego (rysunek 6.2). Rys. 6.3. Budowa urządzenia w wariancie bezprzewodowym. W odróżnieniu od wariantu przewodowego wariant bezprzewodowy zawiera dodatkowo zainstalowany na drugim bocznym ramieniu moduł mikroprocesora. Moduł ten zbudowany jest z trzech wzajemnie połączonych elementów, są to: mikroprocesor, nadajnik i układ zasilający (rysunek 6.4). Przeznaczeniem procesora jest wstępne lub całkowite przetwarzanie i rozpoznawanie obrazów pobranych z kamery głównej i dwóch mikrokamer. Nadajnik jest niezbędny do zapewnienia urządzeniu jednostronnej komunikacji z komputerem. Jako, że urządzenie pracuje bezprzewodowo, tzn. nie jest podpięte w żaden sposób do komputera, do pracy wymaga układu zasilającego. 112 Rys. 6.4. Moduł mikroprocesora. 6.1.2 Parametry kamery rejestrującej obraz ekranu Zastosowana kamera ma największy wpływ na sterowanie kursorem. Do najistotniejszych parametrów kamery należą rozdzielczość oraz kąt widzenia. To one determinują wielkość kursora na zarejestrowanym obrazie. Ma to niebagatelny wpływ na precyzję sterowania. Im większy kąt widzenia, tym większą część ekranu rejestruje kamera, ale kursor na zarejestrowanym obrazie jest mniejszy. Również zmniejszenie rozdzielczości skutkuje zmniejszeniem kursora. Wpływ wielkości zarejestrowanego kursora na precyzję sterowania omówiono w podrozdziale 4.1.2. Zwiększanie rozdzielczości pozytywnie wpływa na precyzję sterowania, ale powoduje zwiększenie kosztów obliczeniowych podczas przetwarzania i rozpoznawania, które są niepożądane szczególnie w wariancie bezprzewodowym urządzenia. Z kolei zmniejszenie kąta widzenia skutkuje rejestracją mniejszego wycinak ekranu. Uniemożliwia to szybką zmianę położenia kursora na ekranie. Parametry te, tj. rozdzielczości i kąt widzenia, powinny być zatem dobierane w drodze kompromisu pomiędzy szybkością zmiany położenia kursora na ekranie, precyzją tej zmiany oraz kosztem obliczeniowym. Tendencję zmiany tych wartości w zależności od doboru parametrów przedstawiono w tabeli 6.1. 113 Tab. 6.1. Tendencja zmiany parametrów rejestracji w zależności od kąta widzenia i rozdzielczości kamery. Kąt widzenia duża średnia mała (>1Mpx) (0,3-1Mpx) (<0,3Mpx) Rozdzielczość mały (<10°) średni (10° - 25°) duży (>25°) precyzja: średnia precyzja: mała precyzja: bardzo mała szybkość: mała szybkość: średnia szybkość: duża obliczenia: szybkie obliczenia: szybkie obliczenia: szybkie precyzja: duża precyzja: średnia precyzja: mała szybkość: mała szybkość: średnia szybkość: duża obliczenia: średnie obliczenia: średnie obliczenia: średnie precyzja: bardzo duża precyzja: duża precyzja: średnia szybkość: mała szybkość: średnia szybkość: duża obliczenia: wolne obliczenia: wolne obliczenia: wolne Zwiększanie rozdzielczości powoduje stopniowe zwiększanie precyzji sterowania oraz kosztów obliczeniowych. Zwiększanie kąta widzenia powoduje natomiast zwiększanie szybkości sterowania kosztem precyzji. Wysoka rozdzielczość i mały kąt widzenia kamery jest bardzo ważny przy zastosowaniu kursorów o unikatowym kształcie. Ma natomiast dużo mniejsze znaczenie przy kursorach, których rozpoznanie bazuje na barwie. Parametry kamery są dodatkowo uzależnione od wymienionych wcześniej parametrów ekranu i odległości kamery od ekranu. Zwiększenie odległości wymaga, dla zachowania precyzji sterowania, zmniejszenia kąta widzenia lub zwiększenia rozdzielczości kamery. Odbywa się to jednak kosztem szybkości sterowania lub zwiększeniem kosztów obliczeniowych. Dobór parametrów powinien rozpoczynać się od wyznaczenia maksymalnej rozdzielczości kamery, przy której koszt obliczeniowy jest akceptowalny. Następnie należy dobrać kąt widzenia kamery w zależności od przewidywanego zastosowania. Możliwe jest zwiększenie precyzji kosztem szybkości lub zwiększenie szybkości kosztem precyzji. Przedstawione powyżej parametry kamery nie są jedynymi mającymi wpływ na rejestrację obrazu kursora. Szczególną rolę odgrywają takie parametry jak czas ekspozycji, balans bieli, jasność, nasycenie, kontrast. Podczas pracy urządzenia nie mogą być one zmieniane. Ich wartość powinna być tak dobrana, by możliwa była prawidłowa rejestracja barw wyświetlanych na 114 ekranie. Są one zatem zależne od zastosowanego ekranu. Ekran podczas pracy generuje światło. Ma ono stałe właściwości dzięki czemu możliwy jest jednorazowy dobór parametrów i pozostawienie ich bez zmian do czasu stosowania urządzenia z danym monitorem. Zastosowanie niezmiennych parametrów rejestracji pozwala uniezależnić urządzenie od zewnętrznych warunków oświetleniowych. Jest to bardzo ważna cecha urządzenia. Zewnętrzne oświetlenie bardzo często ma istotny wpływ na pracę systemów bazujących na rejestracji obrazów [126]. Ważnym parametrem jest również częstotliwość próbkowania. Parametr ten wpływa na szybkość sterowania. By ruch kursora był płynny i szybki konieczne jest pobieranie z kamery głównej nie mniej niż dwudziestu pięciu klatek na sekundę. Oczywiście im większa częstotliwość próbkowania, tym większe koszty obliczeniowe. Istotne jest utrzymanie próbkowania na co najmniej minimalnym dopuszczalnym poziomie, by zmiana położenia kursora nie następowała skokowo. Mogłoby to być uciążliwe dla użytkownika. 6.1.3 Parametry mikrokamer rejestrujących obrazy oczu Mikrokamery obserwujące oczy muszą być specjalnie przystosowana do tego celu. Podstawowym parametrem kamer jest pasmo rejestrowanego światła. Powinny one rejestrować wyłącznie światło podczerwone. Uniezależnia to pracę urządzenia od zewnętrznych warunków oświetleniowych. By sterowanie było precyzyjne, konieczna jest wysoka częstotliwość próbkowania. Jak ustalono w podrozdziale 3.2, każda z mikrokamer powinna pobierać dwadzieścia pięć klatek na sekundę. Zapewnienie wysokiej częstotliwości próbkowania pozwala prawidłowo zidentyfikować każde świadome przymknięcie oka. Ważnym parametrem mikrokamer jest rozdzielczość rejestrowanych obrazów. Korzystając z opracowanej metody wykrywania mrugnięć, opartej o analizę rozproszenia światła odbitego od oka, możliwe jest zastosowanie bardzo małej rozdzielczości mikrokamer. Mowa tu o rozdzielczościach rzędu 4,8 tysiąca pikseli, tj. obrazach 80 na 60 pikseli. Nawet tak niska rozdzielczość zapewnia zadowalający poziom skuteczności, ograniczając tym samym koszty obliczeniowe. Nie mniej jednak zastosowanie wyższej rozdzielczości w granicach 0,3 megapiksela, tj 640 na 480 pikseli, podnosi skuteczność rozpoznawania mrugnięć. Przy takiej rozdzielczości rejestrowanych obrazów możliwe jest uzyskanie skuteczność na poziomie bliskim 100% (podrozdział 7.2). Jak pokazały eksperymenty przeprowadzone na obrazach oka 115 zamkniętego i otwartego (łącznie 10000 obrazów), dalsze zwiększanie rozdzielczości nie wpływa na skuteczność. Opracowana metoda przetwarzania zarejestrowanych przez mikrokamery obrazów i rozpoznawania mrugnięć (zbadana i opisana w podrozdziale 4.2.2) cechuje się bardzo niskim kosztem obliczeniowym. Nawet zastosowanie podwyższonej rozdzielczości mikrokamer nie obciąża w znacznym stopniu procesora. Kolejny parametr mikrokamer, to kąt widzenia. Nie ma rygorystycznych ograniczeń na ten parametr. Mikrokamera może, ale nie musi, rejestrować obrazów całego oka. Ważne jest tylko, by na zarejestrowanych obrazach fragmentu oka było widoczne odbicie światła wyemitowanego przez diodę lub diody IR wchodzące w skład modułu razem z mikrokamerą. Z kolei zastosowane w urządzeniu diody IR, wchodzące w skład modułów razem z mikrokamerami, muszą spełniać tylko jeden istotny warunek. Emitowane przez nie światło nie może być szkodliwe dla człowieka. Problem ten został omówiony w podrozdziale 3.3. 6.1.4 Komunikacja z komputerem Urządzenie w zależności od wariantu komunikuje się z komputerem poprzez przewód albo bezprzewodowo. W wariancie przewodowym informacje z urządzenia przekazywane są do komputera za pomocą USB. Połączenie takie zapewnia również zasilanie urządzenia. Do komputera przekazywane są nieprzetworzone obrazy z kamery głównej oraz dwóch mikrokamer. Jest to komunikacja jednostronna. Urządzenie nie pobiera z komputera żadnych informacji. W przypadku wariantu bezprzewodowego urządzenie nie jest podpięte do komputera. Przekazywanie informacji odbywa się poprzez sieć bezprzewodową. Może to być WiFi, Bluetooth albo dowolna inna sieć radiowa. Konieczne jest zatem wyposażenie urządzenia w odpowiedni nadajnik a komputera w odbiornik. Do komputera przekazywane są już przetworzone informacje, co znacząco ograniczą liczbę przesyłanych danych w porównaniu z wariantem przewodowym. Odległość pomiędzy urządzeniem a komputerem jest stosunkowo mała, co wynika ze sposobu działania i zastosowania urządzenia. Sprawia to, że zastosowane rozwiązanie komunikacyjne ma na celu przesyłanie małej liczby informacji na niedużą odległość (podobnie jak bezprzewodowa mysz komputerowa). Tu również komunikacja jest jednostronna. 116 6.1.5 Wpływ zewnętrznych warunków oświetleniowych Przeprowadzone badania pozwoliły opracować metody sterowania, dzięki którym urządzenie jest niewrażliwe na zewnętrzne warunki oświetleniowe. Kamera główna służąca do obserwacji ekranu posiada możliwość ręcznej regulacji takich parametrów jak: czas ekspozycji, balans bieli, jasność, nasycenie, kontrast. Pozwala to na dobór odpowiednich parametrów kamery dla wykorzystywanego ekranu. Pozostają one niezmienne niezależnie od oświetlenia zewnętrznego. Ponieważ ekran generuje światło, które jest następnie rejestrowane przez kamerę, możliwa jest praca urządzenia, nawet przy braku oświetlenia zewnętrznego. Mikrokamery obserwujące oczy użytkownika rejestrują wyłącznie światło w paśmie podczerwonym i wyposażone są w oświetlenie w postaci diod IR. Pozwala to na bezbłędną pracę urządzenia przy dowolnym oświetleniu zewnętrznym, również przy braku oświetlenia zewnętrznego. 6.2 Prototyp urządzenia W celu udowodnienia skuteczności opracowanego interfejsu, został zbudowany prototyp urządzenia. Umożliwiło to również przeprowadzenie niezbędnych eksperymentów oraz gruntowne zbadanie większości problemów związanych z jego pracą i obsługą. Prototyp urządzenia obejmuje zarówno sprzęt jak i oprogramowanie. 6.2.1 Sprzęt Sprzęt stanowiący część prototypu został wykonany w wariancie przewodowym. Prototyp wyglądem przypomina okulary, na których ramce rozmieszczono rejestratory. Widok prototypu urządzenia z przodu przedstawiono na rysunku 6.5, a widok z góry na rysunku 6.6. Zastosowane kamery zostały tak dobrane pod względem parametrów, by możliwe było przy ich pomocy badanie różnych metod sterowania. 117 Rys. 6.5. Prototyp urządzenia - widok z przodu. Rys. 6.6. Prototyp urządzenia - widok z góry. Do zmiany położenia kursora zastosowano kamerę Microsoft LifeCam Studio. Została ona zainstalowana na lewym boku okularów w sposób umożliwiający rejestrację przestrzeni, na którą zwrócona jest twarz użytkownika (rysunek 6.7). Do najistotniejszych cech zastosowanej kamery należą: • rozdzielczość Full HD 1080p (1920x1080), • wysoka jakość obrazu, • autofocus, • ostrość obrazu, • dobre odwzorowanie barw, 118 • możliwość ręcznej regulacji parametrów rejestracji (balans bieli, czas ekspozycji, nasycenie, kontrast), • małe gabaryty, • niewielka waga, • kształt umożliwiający łatwy montaż kamery na urządzeniu. Rys. 6.7. Kamera główna zainstalowana na prototypie urządzenia. Rys. 6.8. Moduł mikrokamery zainstalowany na prototypie urządzenia. 119 Zastosowana kamera cechuje się bardzo wysokimi parametrami rejestracji, pomimo, iż jest to kamera o niewielkich gabarytach, przeznaczona do wykorzystania jako kamera internetowa. Jakość i rozdzielczość rejestrowanych obrazów znacznie przewyższają wymagania stawiane kamerze głównej w opracowanym rozwiązaniu. Nie mniej jednak zastosowanie właśnie takiej kamery pozwoliło poszerzyć zakres badań. Kształt kamery umożliwił łatwy montaż na urządzeniu. Małe gabaryty, a przede wszystkim mała waga kamery, sprawiają, że urządzenie jest komfortowe w użytkowaniu. Wykrywanie mrugnięć oczu odbywa się poprzez dwie kamery Tracer Exclusive HD Rocket. Kamery te zostały zmodyfikowane w sposób umożliwiający rejestrację światła w paśmie podczerwonym i montaż na ramie urządzenia (rysunek 6.8). Modyfikacje objęły: • demontaż obudowy, by zmniejszyć gabaryty kamer i umożliwić ich montaż na ramie urządzenia, • demontaż filtrów podczerwonych umożliwiając rejestrację pasma podczerwonego, • instalację filtrów światła widzialnego w celu przystosowania kamer do rejestracji wyłącznie światła podczerwonego, • zmianę obiektywów zwiększając kąt widzenia kamer, • instalację w kamerach diod emitujących światło podczerwone w sposób umożliwiający oświetlenie oczu użytkownika. Przeprowadzone modyfikacje pozwoliły gruntownie zbadać opracowaną metodę sterowania poprzez mrugnięcia oczu, polegającą na analizie stopnia rozproszenia światła odbitego oraz wykazać wysoką skuteczność tej metody. Tak zmodyfikowane kamery stanowią gotowe moduły mikrokamer. Zostały one zainstalowane na urządzeniu w taki sposób, by każda mikrokamera rejestrowała obrazy jednego oka. Zastosowano metodę montażu opisaną w podrozdziale 4.2.1 umożliwiającą obserwację oczu od strony zewnętrznej lekko z góry. Takie rozwiązanie nie ogranicza użytkownikowi widoczności na wprost i zapewnia prawidłową rejestrację światła odbitego od oka. Zastosowane w modułach diody cechują się natężeniem promieniowania o wartości 10mW/sr. Przy uwzględnieniu dystansu dzielącego diodę i oko (wyznaczonego w podrozdziale 4.2.1), dystans do siatkówki to od 45mm do 50mm. Przy takich założeniach, emisja na poziomie siatkówki oka wynosi od 4W/m2 do 5W/m2. Jest to wartość nieprzekraczająca 5% dopuszczalnej wartości emisji, która wynosi 100W/m2 (podrozdział 3.3). Prototyp urządzenia łączy się z komputerem poprzez trzy przewody USB 2.0. Każda z kamer podpięta jest bezpośrednio do komputera. Zapewnia to szybką transmisje danych, co jest 120 szczególnie ważne, przy przesyłaniu obrazów w wysokiej rozdzielczości zarejestrowanych przez kamerę główną. Takie rozwiązanie umożliwia ponadto testowanie tylko wybranej funkcjonalności urządzenia, odcinając niepotrzebne moduły. Przewody zapewniają również zasilanie. 6.2.2 Oprogramowanie Oprócz urządzenia bardzo istotną częścią prototypu jest oprogramowanie wspomagające jego pracę. Jak już nadmieniono, prototyp urządzenia wykonano w wariancie przewodowym. Oznacza to, że rolą oprogramowania jest wykonanie wszystkich obliczeń niezbędnych do sterowania pracą komputera. Najważniejsze funkcje oprogramowania to: • wyświetlanie kursora na ekranie, • pobieranie obrazów z kamer, • przetwarzanie obrazów z kamery głównej, • rozpoznawanie i lokalizacja kursora, • zmiana położenia kursora w systemie, • przetwarzanie obrazów z mikrokamer, • identyfikacja mrugnięć oczu i generowanie sygnałów, • interpretacja sygnałów generowanych na podstawie mrugnięć oczu i wykonywanie poleceń systemowych. Większość, z wyżej wymienionych funkcji została zaprojektowana tak, by możliwe było badanie rożnych wariantów sterowania i szybkie dodawanie nowych rozwiązań. Wyświetlanie kursora na ekranie Z uwagi na dużą różnorodność opracowanych kursorów oraz zmianę trybu ich wyświetlania (podrozdział 4.1) jest to bardzo istotny element oprogramowania. Ma on na celu prawidłową prezentację kursora na ekranie niezależnie od testowanej grupy kursorów. Czasami konieczne jest zastąpienie kursora systemowego przez opracowany kursor, a czasami wyświetlanie unikatowego wzoru w sąsiedztwie kursora w stałej odległości od niego. Istotna jest również zmiana trybu wyświetlania w zależności od lokalizacji kursora. 121 Ważną kwestią było zapewnienie podczas testów, szybkiej zmiany kursora, niezależnie od grupy z jakiej on pochodzi oraz możliwość modyfikacji parametrów określających zmianę trybu wyświetlania kursora bądź zablokowanie zmiany trybu. Ta część oprogramowania jest ściśle powiązana z częściami odpowiedzialnymi za rejestrację obrazu z kursorem i rozpoznawanie kursora. Pobieranie obrazów z kamer Oprogramowanie zostało tak zaprojektowane, aby pobieranie obrazów z każdej z kamer było realizowane przez oddzielny wątek. Łącznie, ta część składa się aż z trzech niezależnych wątków. Jest to bardzo istotne dla zapewnienia ciągłego dostarczania obrazów bez opóźnień. Niezależnie jak szybko następuje przetwarzanie obrazów, pobieranie obrazów jest zsynchronizowane z szybkością rejestracji i odbywa się 25 razy na sekundę. Umożliwia to szybką zmianę położenia kursora oraz identyfikację mrugnięć oczu bez zbędnych opóźnień. Przetwarzanie obrazów z kamery głównej Przetwarzanie obrazów z kamery głównej jest ściśle uzależnione od zastosowanej grupy kursorów. Ta część oprogramowania została tak zaprojektowana, by możliwa była szybka zmiana algorytmu przetwarzającego oraz szybkie modyfikowanie i dodawanie nowych algorytmów. Było to bardzo ważne ze względu na dużą liczbę przeprowadzanych badań urządzenia z różnymi grupami kursorów. Rozpoznawanie i lokalizacja kursora Inaczej jak w przypadku przetwarzania, ta część oprogramowania jest mocno uzależniona nie tylko od grupy kursorów, ale od konkretnego zastosowanego kursora. Jest to najbardziej rozbudowana część całego oprogramowania. Dla każdego badanego kursora został napisany oddzielny algorytm rozpoznawania bądź kilka algorytmów, by możliwe było porównanie ich skuteczności i wybór najlepszego. Dodatkowo, ta część oprogramowania umożliwia wybór metody lokalizacji kursora. Większość algorytmów lokalizacji może być stosowana dla prawie wszystkich grup kursorów. Tylko 122 kilka metod lokalizacji jest zaprojektowanych konkretnie pod daną grupę bądź pod konkretny kursor. Zmiana położenia kursora w systemie Opracowano trzy iteracyjne metody zmiany położenia kursora na ekranie. Mogą być one zastosowane z każdą grupą kursorów. Oprogramowanie umożliwia wybór dowolnej z tych metod na potrzeby testów bądź dodanie i zastosowanie nowej metody. Ta części oprogramowania ma podwójną rolę. Jej głównym zadaniem jest wyznaczenie przesunięcia kursora na podstawie lokalizacji rozpoznanego kursora na zarejestrowanym obrazie. Dodatkowo jej celem jest zastosowanie wyznaczonego przesunięcia w systemie, tj. zmiana położenia kursora na ekranie. Praca tej części oprogramowania jest bezpośrednio widoczna na ekranie i skutkuje zmianą położenia kursora zgodnie z intencją użytkownika. Przetwarzanie obrazów z mikrokamer Przetwarzanie odbywa się niezależnie dla obrazów oka lewego i prawego. Ta część oprogramowania realizuje opracowany algorytm identyfikacji stopnia rozproszenia światła. Jego zadaniem jest rozpoznanie najjaśniejszych pikseli obrazu, wskazanie punktu odbicia światła emitowanego przez diody IR i wyznaczenie profilu jasności obrazu wzdłuż przekroju przez punkt odbicia. Oprogramowanie umożliwia zmianę wszystkich parametrów przetwarzania oraz dodanie nowego algorytmu przetwarzającego obrazy. Identyfikacja mrugnięć oczu i generowanie sygnałów Podobnie jak przetwarzanie, ta część oprogramowania realizuje zadania niezależnie dla oka lewego i prawego. Jej celem jest określenie na podstawie wyznaczonych profili jasności w jakim stanie znajduje się każde z oczu. Oprogramowanie umożliwia zmianę parametru identyfikacji, tj. progu określającego stopień rozproszenia. Efektem pracy tej części oprogramowania są dwa sygnały binarne opisujące mrugnięcia oczu. 123 Interpretacja sygnałów generowanych na podstawie mrugnięć oczu i wykonywanie poleceń systemowych To bardzo rozbudowana część oprogramowania. Umożliwia ona zarówno dowolną interpretację sygnałów generowanych na podstawie mrugnięć oczu jak i przypisanie do nich dowolnych poleceń systemowych. Została tak zaprojektowana, by możliwe było testowanie różnych wariantów sterowania oczami i opracowanie optymalnego języka gestów wykonywanych oczami. 124 Rozdział 7 Eksperymenty 7.1 Szybkość oraz precyzja zmiany położenia kursora na ekranie Zbadano wpływ zastosowanej metody zmiany położenia kursora na ekranie na szybkość oraz precyzję tej zmiany. Rozważono dwie metody zbadane i opisane w podrozdziale 4.1.4, a mianowicie: • metoda 1 - zmiana położenia o stałą wartość w kierunku wyznaczonym przez wektor, • metoda 2 - adaptacyjna zmiana położenia w kierunku wskazanym przez wektor. Pominięto metodę zmiany położenie o stałą wartość w każdej z osi, ponieważ jej praktyczne zastosowanie jest bezcelowe. Jest to metoda nieprzyjazna użytkownikowi. Poza tym, jej wyniki szybkości i precyzji są zbliżone do wyników metody 1. W celu uwidocznienia wszystkich różnic pomiędzy opracowanymi metodami zmiany położenia badania przeprowadzono dla: • trzech odległości pomiędzy kursorem a wskazywanym punktem (wyrażonej w pikselach): 100px, 150px, 200px, • trzech metod rejestracji obrazów z kursorem, wyrażonej w stosunku rozmiaru kursora wyświetlonego na ekranie i tego na zarejestrowanym obrazie: ~1,25, ~1, ~0,75, • pięciu parametrów dla każdej metody: ◦ wartość przesunięcia dla metody 1: 1px, 2px, 5px, 10px, 20px, ◦ parametr skalujący wektor przesunięcia dla metody 2: 0,5, 0,75, 1, 1,25, 1,5. 125 Wyniki pomiarów dla współczynników rejestracji równych: ~1,25, ~1 i ~0,75 przedstawiono kolejno w tabelach 7.1, 7.2 i 7.3. Zaznaczono precyzję (różnice w pikselach pomiędzy kursorem i punktem docelowym na ekranie), liczbę iteracji oraz czas przesunięcia. Czas jednej iteracji przy taktowaniu 25 klatek na sekundę to 0,04s. W przypadku, gdy proces zmiany położenia kursora w jednej iteracji (rejestracja, przetwarzanie, rozpoznawanie, wyznaczanie przesunięcia, dokonanie przesunięcia) jest dłuższy niż 0,04s, to czas zmiany położenia kursora do punktu docelowego się wydłuża. Podczas wykonywania badań, zastosowano algorytmy zoptymalizowane pod kątem wydajności oraz zapewniono procesor o odpowiedniej mocy obliczeniowej, by nie wpływały one na otrzymane wyniki. Tab. 7.1. Wyniki pomiarów szybkości i precyzji zmiany położenia kursora dla współczynnika rejestracji ~1,25. dystans 100px metoda parametr dystans 150px dystans 200px liczba iteracji czas [s] liczba iteracji czas [s] liczba iteracji czas [s] precyzja 1 1 100 4 150 6 200 8 1 1 2 50 2 75 3 100 4 2 1 5 19 0,76 30 1,2 40 1,6 5 1 10 10 0,4 15 0,6 20 0,8 10 1 20 9 0,36 12 0,48 14 0,56 20 2 0,5 9 0,36 9 0,36 10 0,4 1 2 0,75 5 0,2 6 0,24 6 0,24 1 2 1 3 0,12 4 0,16 4 0,16 1 2 1,25 1 0,04 1 0,04 1 0,04 1 0,16 4 0,16 2 2 1,5* 3 0,12 4 * - wystąpienie oscylacji wokół punktu docelowego 126 Tab. 7.2. Wyniki pomiarów szybkości i precyzji zmiany położenia kursora dla współczynnika rejestracji ~1. dystans 100px metoda parametr dystans 150px dystans 200px liczba iteracji czas [s] liczba iteracji czas [s] liczba iteracji czas [s] precyzja 1 1 100 4 150 6 200 8 0 1 2 50 2 75 3 100 4 1 1 5 19 0,76 30 1,2 40 1,6 4 1 10 10 0,4 15 0,6 20 0,8 9 1 20 9 0,36 12 0,48 14 0,56 19 2 0,5 7 0,28 8 0,32 8 0,32 0 2 0,75 4 0,16 4 0,16 4 0,16 0 2 1 1 0,04 1 0,04 1 0,04 0 2 1,25* 4 0,16 4 0,16 4 0,16 1 0,32 8 0,32 1 2 1,5* 8 0,32 8 * - wystąpienie oscylacji wokół punktu docelowego Tab. 7.3. Wyniki pomiarów szybkości i precyzji zmiany położenia kursora dla współczynnika rejestracji ~0,75. dystans 100px metoda parametr dystans 150px dystans 200px liczba iteracji czas [s] liczba iteracji czas [s] liczba iteracji czas [s] precyzja 1 1 100 4 150 6 200 8 0 1 2 50 2 75 3 100 4 1 1 5 19 0,76 30 1,2 40 1,6 4 1 10 10 0,4 15 0,6 20 0,8 9 1 20 9 0,36 12 0,48 14 0,56 19 2 0,5 5 0,2 5 0,2 5 0,2 0 2 0,75 1 0,04 1 0,04 1 0,04 0 2 1* 5 0,2 5 0,2 5 0,2 1 2 1,25* 11 0,44 12 0,48 12 0,48 2 - - - - 2 1,5** * - wystąpienie oscylacji wokół punktu docelowego ** - wystąpienie oscylacji rozbieżnej wokół punktu docelowego 127 Analizując uzyskane wyniki można jednoznacznie stwierdzić, że metoda 2 jest zarówno szybsza jak i bardziej precyzyjna od metody 1. Należy jednak zauważyć, że metoda 2 w odróżnieniu od metody 1 jest silnie zależna od współczynnika rejestracji. Metoda 1 charakteryzuje się korelacją pomiędzy szybkością i precyzją. Zwiększenie współczynnika przesunięcia powoduje wyraźne zwiększenie szybkości zmiany położenia kursora przy jednoczesnym obniżeniu precyzji. Na uwagę zasługuje fakt, że współczynnik rejestracji (zmieniający się np. podczas zmiany dystansu rejestracji) nie wpływa na liczbę iteracji potrzebnych do zmiany położenia kursora. Ma on natomiast wpływ na precyzję sterowania w sytuacji, gdy jego wartość przekracza 1. Istotną wadą tej metody jest zmienna liczba iteracji potrzebna do zmiany położenia kursora, która jest zależna od odległości kursora od punktu docelowego. Wynika to ze zmiany położenia kursora w każdej iteracji o stałą wartość. Metoda 2 cechuje się bardzo szybką zmianą położenia kursora przy zachowaniu wysokiej precyzji. Dodatkowo liczba iteracji, potrzebna do zmiany położenia, jest zbliżona niezależnie od odległości kursora od punktu docelowego. Metoda ta, wymaga prawidłowego doboru parametru skalowania. Wykazano, że optymalna wartość tego parametru, to wartość współczynnika rejestracji. Przy takim doborze parametru, zmiana położenia kursora na ekranie następuje w jednej iteracji, przy zachowaniu precyzji na poziomie zero pikseli (dla współczynnika rejestracji mniejszego lub równego 1). Osiągnięcie takiego przesunięcia jest możliwe w warunkach laboratoryjnych. W rzeczywistości parametr skalowania powinien być mniejszy od współczynnika rejestracji. Im ta różnica jest większa, tym więcej iteracji jest wymagane do zmiany położenia kursora. Precyzja sterowania zachowuje stałą wartość. Gdy parametr skalowania jest większy od współczynnika rejestracji, mogą wystąpić dwie sytuacje. Kursor może oscylować wokół punktu docelowego zbliżając się do niego z każdą iteracją bądź oddalając się od niego (tabela 7.4). Choć w pierwszym przypadku kursor osiąga punkt docelowy, to obie te sytuacje są niedopuszczalne. Oscylacja kursora wokół punktu docelowego negatywnie wpływa na komfort pracy użytkownika oraz na precyzje sterowania. 128 Tab. 7.4. Oscylacja zbieżna i rozbieżna wokół punktu docelowego przy zastosowaniu współczynnika rejestracji ~0,7. odległość kursora od punktu docelowego [px] iteracja Parametr skalowania 1,25 Parametr skalowania 1,5 0 100 100 1 -72 -106 2 52 112 3 -38 -119 4 28 126 5 -20 -133 6 15 141 7 -11 -149 8 8 158 9 -6 -167 10 5 177 11 -4 -187 12 3 198 13 -3 -209 14 3 221 7.2 Skuteczność rozpoznawania mrugnięć oczu Badaniu została poddana opracowana metoda rozpoznawania mrugnięć oczu. Metoda polega na analizie stopnia rozproszenia światła podczerwonego odbitego od powierzchni oka lub powieki (podrozdział 4.2.2). Zbadano skuteczność opracowanego algorytmu rozpoznawania stanu oka oraz wynikającą z niej skuteczność rozpoznawania gestów wykonanych oczami. Badanie skuteczności rozpoznawania stanów oczu polegało na przetworzeniu przez algorytm wcześniej przygotowanych obrazów z bazy zawierającej 5000 obrazów oczu otwartych i 5000 obrazów oczu zamkniętych. Obrazy zostały zarejestrowane poprzez mikrokamery prototypu urządzenia. 129 Skuteczność rozpoznawania gestów została zbadana poprzez przetworzenie przez opracowany algorytm sekwencji różnego rodzaju gestów wykonanych oczami. Zbadano czy rozpoznane przez algorytm gesty odpowiadają zadanym, tj. intencji użytkownika wykonującego gest. Zarejestrowano 250 sekwencji przedstawiających wszystkie gesty opisane w podrozdziale 4.2.3 oraz naturalne mrugnięcia. Wyniki badania skuteczności rozpoznawania stanu oka zestawiono w tabeli 7.5. Skuteczność rozpoznawania oka otwartego jest bardzo wysoka. Opracowany algorytm rozpoznawania, oparty o analizę stopnia rozproszenia światła, pozwala niemal ze stuprocentową dokładnością prawidłowo zidentyfikować oczy otwarte (99.94%). Skuteczność rozpoznawania oczu zamkniętych jest nieznacznie niższa i wynosi aż 99,42%. Podczas testów zdarzało się, że algorytm błędnie zidentyfikował zamknięte oko. Wynikało to najczęściej z odbicia światła podczerwonego, o małym stopniu rozproszenia, w okolicach rzęs. Niezależnie od przyczyny, przypadki błędnego rozpoznania są rzadkością. Łączna skuteczność rozpoznawania stanu oka wynosi 99,68%. Jest to bardzo dobry wynik tym bardziej, że istnieje niskie prawdopodobieństwo, by błędnie zidentyfikowane zostały więcej niż dwie sąsiednie klatki. Tak krótkotrwała zmiana stanu oka z zamkniętego na otwarte jest pomijana i nie ma wpływu na sterowanie. Podobnie zmiana stanu oka na zamknięte, trwająca tak krótki czas, zostanie potraktowana jako naturalne mrugnięcie, a tym samym zostanie pominięta podczas identyfikacji gestów. Tab. 7.5. Wyniki badania skuteczności rozpoznawania stanu oka. Uznane za otwarte Uznane za zamknięte Skuteczność Oko otwarte Oka zamknięte 4997 29 3 4971 99,94% 99,42% Wyniki badania skuteczności rozpoznawania gestów przedstawiono w tabeli 7.6. Wszystkie zbadane gesty zostały prawidłowo rozpoznane przez opracowany algorytm. Dwa błędne rozpoznania wyszczególnione w tabeli 7.6 wynikają nie z błędnego rozpoznania gestu wykonywanego przez jedno z oczu, ale z rozpoznania przymknięcia na drugim oku, co spowodowało przerwanie identyfikacji gestu. Tym samym rozpoznany gest nie pokrywał się z intencją użytkownika, co skutkowało klasyfikacją testu jako błąd rozpoznania. Tego typu błędy są efektem nieprawidłowo wykonanego gestu przez użytkownika (podrozdział 4.2.3). Gest jest uznany za prawidłowy, jeżeli przez cały czas jego wykonywania, drugie oko pozostaje otwarte. W sytu130 acji, gdy użytkownik podczas wykonywania gestu przymknie drugie oko, identyfikacja zostaje przerwana. Tab. 7.6. Wyniki badania skuteczności rozpoznawania gestów wykonanych oczami. Liczba testów Liczba błędów Skuteczność 250 2 99,20% 7.3 Opinie użytkowników Przeprowadzono szereg eksperymentów na grupie trzydziestu użytkowników. Eksperymenty te, miały na celu zbadanie efektywności opracowanego interfejsu. W eksperymencie brały udział osoby, na co dzień posługujące się myszą komputerową oraz klawiaturą i przedstawione im rozwiązanie było dla nich całkowicie nowym podejściem. Badania zostały przeprowadzone z wykorzystaniem opracowanego prototypu urządzenia (podrozdział 6.2) oraz monitora o przekątnej 23 cale i rozdzielczości HDTV 1080p (1920x1080 pikseli przy proporcji ekranu 16:9). Odległość użytkownika od ekranu wynosiła około 75 centymetrów. Wszystkie testy zostały przeprowadzone przy użyciu kursora wielobarwnego o kształcie strzałki. Wszystkim badanym przedstawiono i opisano stanowisko pomiarowe ze szczególnym uwzględnieniem niewidocznego promieniowania IR, które jak wynika z obliczeń przeprowadzonych w podrozdziale 6.2.1 jest nieszkodliwe dla człowieka. Wszyscy badani świadomie wyrazili zgodę na udział w eksperymencie. W eksperymencie oceniano szybkość reakcji, efektywność sterowania kursorem ekranu i efektywność zastąpienia klawiszy myszy przez mruganie oczu. Dodatkowo, zbadano szybkość i efektywność wprowadzania tekstu przy zastosowaniu klawiatury ekranowej. Użytkownicy oceniali interfejs posługując się pięciostopniową subiektywną skalą (nie działa, słabe, akceptowalne, dobre, lepsze od znanych). Ocenie poddane zostały: • sterowanie kursorem (ruchy głowy): szybkość, precyzja, ergonomia, • wykonywanie poleceń systemowych (mrugnięcia): szybkość, precyzja, ergonomia, • wprowadzanie tekstu (klawiatura ekranowa): szybkość, precyzja, ergonomia, • ogólna ocena interfejsu. 131 Tab. 7.7. Wyniki badań przeprowadzonych na grupie 30 użytkowników. precyzja ergonomia szybkość precyzja ergonomia szybkość precyzja ergonomia Ocena ogólna Wprowadzanie tekstu szybkość Sterowanie mrugnięciami użytkownik Sterowanie kursorem avg 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 5 5 4 5 4 4 4 3 4 4 5 5 5 4 4 3 5 5 4 5 5 5 4 5 5 4 5 4 5 5 5 4 5 5 5 4 5 4 5 5 5 5 5 5 4 4 5 4 5 5 5 5 4 5 5 5 5 4 5 5 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 4 5 5 5 5 5 5 5 5 5 5 5 5 5 5 4 5 3 4 5 3 4 2 4 4 4 4 5 5 4 3 5 4 5 4 4 4 2 4 5 3 5 4 4 4 5 5 4 5 5 4 5 3 5 5 5 4 5 5 5 3 5 4 4 3 5 5 3 4 5 4 5 4 5 5 3 4 4 4 3 3 4 2 4 4 3 3 4 5 3 2 4 3 4 3 5 4 2 4 5 2 4 3 3 4 5 5 4 5 4 3 4 3 4 4 5 5 5 5 4 3 4 5 4 5 5 4 3 5 5 4 5 3 4 5 5 5 5 5 4 4 5 3 5 5 5 5 5 5 4 4 5 4 5 5 5 5 3 5 5 4 5 4 5 5 4 4 5 5 4 4 4 3 5 5 4 4 5 5 3 3 5 4 4 4 5 4 3 5 5 4 5 3 4 5 5 5 4 5 4 4 5 3 5 5 5 5 5 5 4 4 5 5 5 5 5 5 3 4 5 5 5 4 5 5 4,60 4,70 4,30 4,80 4,30 3,80 4,50 3,00 4,60 4,60 4,60 4,50 4,90 4,90 4,00 3,30 4,80 4,30 4,50 4,40 4,90 4,60 3,20 4,60 5,00 4,00 4,90 3,80 4,50 4,80 0,70 0,48 0,67 0,42 0,67 0,63 0,53 0,67 0,52 0,52 0,70 0,71 0,32 0,32 0,67 0,67 0,42 0,67 0,53 0,84 0,32 0,52 0,92 0,52 0,00 0,94 0,32 0,63 0,71 0,42 avg δ 4,47 0,63 4,73 0,45 4,93 0,25 4,00 0,83 4,47 0,73 3,50 0,86 4,30 0,75 4,63 0,61 4,23 0,73 4,63 0,61 4,39 0,52 0,56 0,20 avg δ 4,71 0,50 3,99 0,89 4,39 0,71 132 δ Badani użytkownicy, po procesie wdrożenia i swobodnej pracy z urządzeniem otrzymali do wykonania zadania. Były one związane z obsługą systemu, pracą na plikach, obsługą przeglądarki internetowej oraz edytora tekstu, gdzie zmierzono również szybkość wprowadzania tekstu poprzez klawiaturę ekranową. Wyniki eksperymentów zostały zebrane w tabeli 7.7. Sterowanie kursorem myszy jest bardzo intuicyjne (kursor przesuwany jest w miejsce, na które zwrócona jest twarz użytkownika), dlatego użytkownicy bardzo szybko przyswoili to rozwiązanie i w pełni je zaakceptowali. Łączna ocena takiej metody sterowania kursorem jest bardzo wysoka. Bardzo zadowalająca jest niska wartość odchylenia standardowego. Oznacza to, że zdecydowana większość użytkowników bardzo wysoko oceniło tę metodę. Szybkość sterowania kursorem jest nieco niższa niż poprzez mysz komputerową, co ma przełożenie na ocenę tego parametru. Niemniej jednak fakt, że było to rozwiązanie nowe dla wszystkich użytkowników biorących udział w eksperymencie wynik jest zadowalający. Na uwagę zasługuje bardzo wysoka ocena precyzji, a w szczególności ergonomii. Uczestnicy testu uznali przedstawioną im metodę sterowania kursorem za niezwykle dobrą i wygodną w użytkowaniu. Kilku użytkowników zgłosiło problem związany ze sterowaniem mrugnięciami. Problem polegał głównie na nieumiejętności niezależnego mrugania okiem lewym i prawym. Choć nie było to konieczne, po pewnym czasie użytkownicy biorący udział w eksperymencie posiedli tę umiejętność i mogli bez problemów w pełni korzystać z możliwości urządzenia. Fakt ten jednak wyraźnie wpłynął na ocenę użytkowników. Parametr ergonomii został oceniony poniżej oczekiwań. Należy zwrócić uwagę, że parametr precyzji sterowania poprzez mrugnięcia, uzyskał bardzo wysoką ocenę, co świadczy o dużej skuteczność rozwiązania tj. sterowanie odbywało się zgodnie z intencjami użytkowników. Również wynik szybkości sterowania mrugnięciami jest na dobrym poziomie. Na uwagę zasługuje fakt, że wartość odchylenia standardowego jest znacznie wyższa niż w przypadku sterowania kursorem poprzez ruchy głowy. Oznacza to, że oceny użytkowników są bardzo zróżnicowane, od niskich po wysokie. Bardzo wysoko zostało ocenione wprowadzanie tekstu poprzez klawiaturę ekranową. Należy pamiętać, że użytkownicy nie używali rąk, a jedynie niewielkich ruchów głowy i mrugnięć oczu. Wprowadzanie tekstu odbywało się nie tylko szybko, ale i z niewielką liczbą pomyłek. Niezwykle rzadko następowało wprowadzenie niepożądanego znaku. Częściej zdarzały się pomyłki, polegające na wprowadzeniu dwa razy tego samego znaku. Wynikało to 133 z małej różnicy pomiędzy czasem t1 i t2 (podrozdział 4.2.3), nieprawidłowo dobranej do badanego użytkownika. W opinii użytkowników taka metoda wprowadzania tekstu jest skutecznym i ciekawym rozwiązaniem. W początkowej fazie eksperymentu, użytkownicy wprowadzali tekst z szybkością 15-30 znaków na minutę. Po pewnym czasie, część użytkowników osiągała nawet 50-60 znaków na minutę. Jest to bardzo dobry wynik biorąc pod uwagę, że wprowadzanie tekstu odbywało się bez wykorzystania rąk. Analizując przeprowadzone eksperymenty warto zwrócić uwagę na bardzo wysoką ocenę ogólną interfejsu. Użytkownicy biorący udział w eksperymencie, na co dzień korzystający z tradycyjnej myszy i klawiatury, niezwykle szybko przystosowali się do nowej metody sterowania kursorem. Sterowanie mrugnięciami wymagało nieco dłuższego wdrożenia, ale również zostało opanowane i zaakceptowane przez badanych. Oceny użytkowników świadczą o szybkości i dużej precyzji opracowanego interfejsu. Jego zastosowanie nie spowoduje istotnego spowolnienia pracy z komputerem pomimo wyeliminowania z komunikacji rąk. Ocena ergonomii sugeruje wprowadzenie poprawek przy sterowaniu poprzez mrugnięcia, ale ogólny wynik pokazuje, że proponowane rozwiązanie jest wygodne w użytkowaniu i w pełni akceptowalne. Istotny wpływ na ocenę ma fakt, że użytkownicy biorący udział w eksperymencie na co dzień posługują się myszą i klawiaturą. Istnieje wysokie prawdopodobieństwo, że osoby niepełnosprawne nie mogące wykorzystać w komunikacji z komputerem rąk, oceniłyby opracowany interfejs wyraźnie lepiej i uznałyby go za niezwykle pomocny. 134 Rozdział 8 Obszary zastosowań Opracowany interfejs komunikacyjny, został tak zaprojektowany, by mógł skutecznie zastąpić tradycyjną mysz komputerową i klawiaturę. Oprócz zastąpienia, możliwe jest również uzupełnienie powszechnie stosowanych urządzeń sterujących dając człowiekowi większe możliwości sterowania pracą komputera. Urządzenie wykorzystujące opracowane metody sterowania może występować w dużej liczbie wariantów. Mowa tu nie tylko o wariancie bezprzewodowym i przewodowym. Możliwe jest rozróżnienie urządzeń tego typu pod względem jakości zastosowanych podzespołów, a tym samym precyzji, szybkości i obszaru zastosowania. Możliwe jest wytwarzanie urządzeń od tanich i niekoniecznie ultra dokładnych dla przeciętnych użytkowników przez urządzenia dla osób niepełnosprawnych po bardzo precyzyjne, bezprzewodowe i drogie urządzenia przeznaczone do sterowania pracą aparatury medycznej na salach operacyjnych. Podstawowym obszarem zastosowania opracowanego interfejsu jest zapewnienie komfortowej pracy z komputerem osobom niepełnosprawnym. Mowa o osobach niemogących wykorzystać do pracy z komputerem rąk. Do sterowania komputerem poprzez opracowane metody wymagane są jedynie niewielkie ruchy głowy i mrugnięcia oczu. Dlatego nawet osoby o wysokim stopniu niepełnosprawności, np. sparaliżowane od szyi w dół, z pomocą opracowanego interfejsu będą w stanie szybko i komfortowo korzystać z komputera niemal tak wydajnie jak osoby pełnosprawne. Należy mieć nadzieję, że przyczyni się to do polepszenia komfortu życia tych osób poprzez umożliwienie im normalnej pracy z komputerem, a także do ich aktywizacji zawodowej. Korzyści społeczne, wynikające z tego tytułu, mogą być bardzo duże. Fakt, że sterowanie w opracowanej metodzie odbywa się bezdotykowo z zachowaniem wysokiej precyzji, pozwala na wykorzystanie rozwiązania wszędzie tam, gdzie z jakichś powodów niemożliwa jest ręczna obsługa urządzeń poprzez fizyczny kontakt. Pozwala to 135 wykorzystać opracowany interfejs w miejscach, gdzie konieczne jest zachowanie wysokiej sterylności bądź obsługa jakiegoś urządzenia z powodu zagrożeń odbywa się zza ekranu ochronnego. Jednym z przewidywanych obszarów zastosowania są zastosowania medyczne. W szczególności na salach operacyjnych, gdzie zachowanie sterylności sprzyja zastosowaniu sterowania bezdotykowego. Specyfika, opracowanego interfejsu, pozwala przenieść sterowanie z rąk na ruchy głowy, co może być bardzo pomocne dla lekarzy prowadzących zabieg medyczny. Mogliby oni sterować pracą aparatury medycznej na odległość, bezdotykowo, bez konieczność wykorzystania rąk. Jak już nadmieniono, opracowany interfejs umożliwia sterowanie pracą komputera, robota czy dowolnego innego urządzenia zza ekranu ochronnego. Pozwala to na wykorzystanie go podczas wykonywania niebezpiecznych badań naukowych oraz w przemyśle, gdzie występują rożnego rodzaju zagrożenia. Konieczne jest jedynie, by ekran ochronny był chociaż częściowo przezroczysty. Opracowany interfejs komunikacyjny może być również wykorzystywany jako alternatywa dla tradycyjnych urządzeń sterujących. Z powodzeniem może zastąpić mysz komputerową oraz klawiaturę bądź stanowić ich uzupełnienie. Opracowane rozwiązanie przenosi sterowanie na inny poziom niż w powszechnie stosowanych urządzeniach. Może więc znaleźć zastosowanie zarówno w codziennej pracy z komputerem przez zwykłych użytkowników szukających alternatywy jak i przez bardzo wymagających użytkowników, w tym graczy komputerowych, dla których każda kolejna metoda sterowania jest bardzo cenna. Kolejnym polem są zastosowania militarne i centra zarządzania kryzysowego. Tu również przeniesienie sterowania bądź dodanie dodatkowego sterowania może być pomocne. Opracowana metoda sterowania kursorem jest bardzo intuicyjna i wygodna dla człowieka (kursor pojawia się na ekranie w miejscu, na które zwrócona jest twarz użytkownika). Umożliwia to jej wykorzystanie we wszystkich wyżej wymienionych zastosowaniach bez długotrwałego procesu szkoleniowego. 136 Rozdział 9 Zakończenie Niniejsza praca dotyczy badań związanych z interfejsem człowiek-komputer umożliwiającym skuteczną i precyzyjną zmianę położenia kursora na ekranie poprzez niewielkie ruchy głowy oraz wykonywanie poleceń systemowych poprzez mrugnięcia oczu. W rozdziale 2 została postawiona teza oraz sformułowane zadania, których realizacja była potrzebna do wykazania jej słuszności. Wszystkie zadania zostały pomyślnie zrealizowane i opisane. Największym osiągnięciem autora jest opracowanie nowych metod sterowania pracą komputera, a następnie zaprojektowanie i zbudowanie interfejsu człowiek-komputer realizującego te metody. Powstałe urządzenie cechuje się wysoką skutecznością i precyzją. Ponadto jest rozwiązaniem innowacyjnym, dlatego stało się obiektem zgłoszenia patentowego [109]. Pierwszym z postawionych w pracy zadań było zbadanie możliwość szybkiej i precyzyjnej zmiany położenia kursora na ekranie poprzez niewielkie ruchy głowy. Zasadnicza część rozważań nad tą metodą sterowania znajduje się w podrozdziale 4.1. W rozdziale 3 zaprezentowano dane literaturowe dotyczące zakresu ruchów głowy i zbadano zakres zastosowania proponowanego rozwiązania. W rozdziale 5 zbudowano model matematyczny, w którym wyprowadzono wzory opisujące wpływ wykonywanych ruchów głowy na przesunięcie kursora. Drugim zadaniem było zbadanie możliwości precyzyjnego identyfikowania mrugnięć oczu. Opracowaną metodę polegającą na analizie stopnia rozproszenia światła odbitego od powierzchni oka bądź powieki opisano w podrozdziale 4.2. Przeanalizowano tam również sposób rejestracji obrazów oczu oraz opisano opracowany algorytm do ich analizy. Trzecim zadaniem było opracowanie puli ergonomicznych gestów oczu wraz z metodą przypisania do nich poleceń systemowych. Uzyskane wyniki przedstawiono w podrozdziale 4.2.3. Opracowana metoda nie wymaga od użytkownika wykonywania oczami skomplikowanych gestów, jednocześnie zapewniając wystarczającą liczbę możliwych do wykonania zdarzeń systemowych. 137 Czwartym zadaniem było zbadanie możliwości zbudowania urządzenia realizującego opracowane metody sterowania. Realizacja tego zadania została opisana w podrozdziale 6.1. Przeanalizowano i opisano tam możliwą formę urządzenia oraz określono parametry kamery głównej i mikrokamer. Opracowano dwa warianty wykonania, oraz przedstawiono, jak może wyglądać rozmieszczenie wszystkich podzespołów urządzenia dla tych wariantów. Piątym zadaniem była budowa prototypu urządzenia. Opis realizacji tego zadania znajduje się w podrozdziale 6.2. Wykorzystano wiedzą z podrozdziału 6.1, kamerę wysokiej rozdzielczości oraz dwie zmodyfikowane przez autora pracy mikrokamery. Powstało w ten sposób urządzenie w wariancie przewodowym, realizujące opracowane metody sterowania. Prototyp umożliwił realizację szóstego zadania, tj. przeprowadzenie eksperymentów celem weryfikacji poprawności i skuteczności opracowanych metod sterowania. Najważniejsze z przeprowadzonych eksperymentów, zostały opisane w rozdziale 7. Zbadano szybkość i precyzję zmiany położenia kursora na ekranie oraz skuteczność rozpoznawania stanu oka. Dodatkowo przeprowadzono badania na grupie trzydziestu użytkowników. Do najważniejszych osiągnięć, które według autora stanowią oryginalny wkład do dziedziny interakcja człowiek-komputer, można zaliczyć: • Opracowanie, zbadanie i opisanie autorskiej metody zmiany położenia kursora na ekranie poprzez niewielkie ruchy głowy. W tym, opracowanie dużej liczby kursorów, podzielenie ich na cztery grupy oraz opracowanie dla każdej grupy metod przetwarzania i rozpoznawania. Dodatkowo, opracowanie metody rejestracji kursora niezależnej od zewnętrznych warunków oświetleniowych, opracowanie i zbadanie metod zmiany położenia kursora na ekranie oraz zbadanie zjawisk wpływających na sterowanie w opracowanej metodzie. • Opracowanie, zbadanie i opisanie autorskiej metody generowania sygnałów sterujących pracą komputera poprzez mrugnięcia oczu. W tym, opracowanie metody precyzyjnego rozpoznawania mrugnięć, metody rejestracji obrazów oczu niewrażliwej na zewnętrzne warunki oświetleniowe oraz metod skutecznej rejestracji nie mających wpływu na ograniczenie pola widzenia użytkownika na wprost. • Opracowanie puli ergonomicznych gestów oczu wraz z metodą przypisania do nich poleceń systemowych. • Opracowanie w dwóch wariantach wykonania i opisanie nowatorskiego interfejsu wykorzystującego opracowane metody sterowania. 138 • Budowa prototypu opracowanego urządzenia uwzględniającego sprzęt jak i rozbudowane oprogramowanie umożliwiające wykorzystanie i testowanie przewidzianej funkcjonalności urządzenia jak również rozbudowę prototypu o dodatkowe funkcje. • Opracowanie modelu matematycznego opisującego zależności występujące w opracowanej metodzie sterowania poprzez ruchy głowy. • Zebranie 10000 zdjęć oczu otwartych i zamkniętych oraz 250 sekwencji gestów wykonanych oczami na potrzeby przeprowadzonych i przyszłych testów. Teza postawiona w pracy zakłada, że: „Wykorzystanie ruchów głowy oraz mrugnięć oczu pozwala na skuteczne sterowanie kursorem ekranu oraz generowanie sygnałów sterujących pracą komputera w komunikacji człowiek-komputer”. W podrozdziale 4.1 przedstawiono wyniki badań nad metodą zmiany położenia kursora na ekranie poprzez niewielkie ruchy głowy. W rozdziale 3, opierając się na wzorach wyprowadzonych w rozdziale 5, wykazano, że taka metoda sterowania, nie wykracza poza możliwości ruchowe człowieka, a nawet pozwala na efektywne sterowanie, przy minimalnym obciążeniu mięśni i więzadeł. W podrozdziale 4.2 zaprezentowano wyniki badań nad metodą generowania sygnałów sterujących pracą komputera na podstawie mrugnięć oczu. W rozdziale 6 pokazano, że jest możliwe zaprojektowanie i zbudowanie urządzenia realizującego opracowane metody sterowania, a eksperymenty opisane w rozdziale 7 potwierdziły wysoką skuteczność i precyzję opracowanych metod. Precyzja jaką udało się uzyskać pozwala na umieszczenie kursora dokładnie na wskazanym przez użytkownika pikselu w czasie nie przekraczającym 0,2 sekundy. Dodatkowo, opracowany interfejs umożliwia wykonywanie zdarzeń systemowych zgodnie z intencją użytkownika poprzez ergonomiczne gesty oczu. W wyniku przeprowadzonych badań, w pełni potwierdzono, że możliwe jest szybkie i precyzyjne sterowanie kursorem ekranu przy wykorzystaniu niewielkich ruchów głowy oraz efektywne generowanie sygnałów sterujących pracą komputera poprzez mrugnięcia oczu, co było do wykazania w niniejszej rozprawie. 139 Bibliografia [1] Richard Harper, Tom Rodden, Yvonne Rogers, Abigail Sellen. Being Human: Human-Computer Interaction in the year 2020. England: Microsoft Research Ltd., 2008. [2] G. Riva, F. Vatalaro, F. Davide, M. Alcaniz. Ambient Intelligence, rozdział 1: New Technologies For Ambient Intelligence. IOS Press, 2005. [3] Fakhreddine Karray, Milad Alemzadeh, Jamil Abou Saleh, Mo Nours Arab. Human-Computer Interaction: Overview on State of the Art. International Journal On Smart Sensing And Intelligent Systems, 1.1:137-159, 2008. [4] Jonathan Grudin. A Moving Target - The Evolution of Human-Computer Interaction. Human-Computer Interaction Handbook. Taylor & Francis, 2012. [5] M.Tariq Malik. CS408 Human Computer Interaction. Virtual University of Pakistan, 2014. [6] Ivan E. Sutherland. Sketchpad, a man-machine graphical communication system. Massachusetts Institute of Technology, 1963. [7] Gordon E. Moore. Cramming more components onto integrated circuits. Electronics, 38.8, 1965. [8] Claire Berger, Zhimin Song, Tianbo Li, Xuebin Li, Asmerom Y. Ogbazghi, Rui Feng, Zhenting Dai, Alexei N. Marchenkov, Edward H. Conrad, Phillip N. First, and Walt A. de Heer. Ultrathin epitaxial graphite: 2D electron gas properties and a route toward graphene - based nanoelectronics. The Journal of Physical Chemistry B, 108.52:19912-19916, 2004. [9] K.S. Novoselov, A.K. Geim, S.V. Morozov, D. Jiang, Y. Zhang, S.V. Dubonos, I.V.Grigorieva, A.A. Firsov. Electric Field Effect in Atomically Thin Carbon Films. Science, 306.5696:666-669, 2004. [10] Dhiren Parmar. Human Computer Interaction. School of Information Technology, 2005. [11] Robert J.K. Jacob. Human-Computer Interaction: Input Devices. ACM Computing Surveys (CSUR), 28.1:177-179, 1996. [12] Rachit Gupta. Human Computer Interaction - A Modern Overview. Int.J.Computer Technology & Applications, 3.5:1736-1740, 2012. 141 [13] Marcin Sikorski. Interakcja człowiek – komputer. PJWSTK, 2010. [14] Jungong Han, Ling Shao, Dong Xu, Jamie Shotton. Enhanced Computer Vision with Microsoft Kinect Sensor: A Review. IEEE Transactions On Cybernetics, 43.5:1318-1334, 2013. [15] Bo Hong, Yijun Wang, Xiaorong Gao, and Shangkai Gao. Quantitative EEG Analysis Methods and Clinical Applications, rozdział 8: Quantitative EEG - Based Brain-Computer Interface. Artech House, 2009. [16] D. C. Engelbart, W. K. English,B. Huddart. Computer-aided display control Final report. NASA, 1965. [17] Ronald Siegwart, Cédric Pradalier. History of Computer Pointing Input Devices. Swiss Federal Institute of Technology Zurich, 2011. [18] Input/Output Devices - Different ways to communicate. Poelman & Associates, 2005. [19] Ken Hinckley, Robert J. K. Jacob, Colin Ware. Input/output devices and interaction techniques. CRC Computer Science and Engineering Handbook, 2004. [20] Carlos B. Mirick. Electrical Distant - Control System. United States Patent Office, 1597416, 1926. [21] International Business Machines Corporation. Force Sensitive Transducer for Use in A Computer Keyboard. Matthew F. Cali, Jerome J. Cuomo, Donald J. Mikalsen, Joseph D. Rutledge, Edwin J. Selker. United States Patent Office, 5489900, 1996. [22] Lexmark International, Inc. Analog Input Device Located in The Primary Typing Area of A Keyboard. Edwin J. Selker, Joseph D. Rutledge. United States Patent Office, 5521596, 1996. [23] G. Drew Kessler and Larry F. Hodges. Evaluation of the CyberGlove™ as a Whole Hand Input Device. ACM Transactions on Computer- Human Interaction (TOCHI), 2.4:263-283, 1995. [24] Qing Chen, Ayman El-Sawah, Chris Joslin, Nicolas D. Georganas. A Dynamic Gesture Interface for Virtual Environments Based on Hidden Markov Models. Haptic Audio Visual Environments and their Applications, 2005. IEEE International Workshop on. IEEE, 2005. [25] David Jack, Rares Boian, Alma S. Merians, Marilyn Tremaine, Grigore C. Burdea, Sergei V. Adamovich, Michael Recce, Howard Poizner. Virtual Reality - Enhanced Stroke Rehabilitation. Neural Systems and Rehabilitation Engineering, IEEE Transactions on. IEEE, 9.3:308-318, 2001. [26] Masatake Sato, Vladimir Savchenko, Ryutarou Ohbuchi. 3D Freeform Design: Interactive Shape Deformations by the Use of CyberGlove. Cyberworlds, 2004 International Conference on. IEEE, strony 147-154, 2014. [27] Elena Sánchez-Nielsen, Luis Antón-Canalís, Mario Hernández-Tejera. Hand Gesture Recognition for Human-Machine Interaction. Journal of WSCG, 12.1-3:395-402, 2004. [28] J.Rekha, J.Bhattacharya and S.Majumder. Hand Gesture Recognition for Sign Language: A New Hybrid Approach. Proceeding of International Conference on Image Processing, Computer Vision and Pattern Recognition, strony 80-86, 2011. 142 [29] Nasser H. Dardas, Mohammad Alhaj. Hand Gesture Interaction with a 3D Virtual Environment. The Research Bulletin of Jordan ACM - ISWSA, 11.111:86-94, 2011. [30] Swapnil D. Badgujar, Gourab Talukdar, Omkar Gondhalekar, Mrs. S.Y. Kulkarni. Hand Gesture Recognition System. International Journal of Scientific and Research Publications, 4.2, 2014. [31] Baoyun Zhang, Ruwei Yun, and Huaqing Qiu. Hand Gesture Recognition in Natural State Based on Rotation Invariance and OpenCV Realization. Entertainment for Education. Digital Techniques and Systems. Springer Berlin Heidelberg, strony 486-496, 2010. [32] Mohamed Alsheakhali, Ahmed Skaik, Mohammed Aldahdouh, Mahmoud Alhelou. Hand Gesture Recognition System. International Conference on Information and Communication Systems, 2011. [33] X. Zabulis, H. Baltzakis, A. Argyrosz. Vision-based Hand Gesture Recognition for Human-Computer Interaction. The Universal Access Handbook. LEA, 2009. [34] Vladimir Vezhnevets, Vassili Sazonov, Alla Andreeva. A Survey on Pixel-Based Skin Color Detection Techniques. Proc. Graphicon, 3:85-92, 2003. [35] W. S. Mokrzycki, M. Tatol. Colour difference ΔE - A survey. Machine graphics & vision, 20.4: 383-411, 2011. [36] Qing Chen, François Malric, Yi Zhang, Muhammad Abid, Albino Cordeiro, Emil M. Petriu, Nicolas D. Georganas. Interacting with Digital Signage Using Hand Gestures. Image Analysis and Recognition. Springer Berlin Heidelberg, strony 347-358, 2009. [37] Hervé Lahamy, Derek Litchi. Real-time hand gesture recognition using range cameras. Canadian Geomatics Conference, 2010. [38] Pia Breuer, Christian Eckes, Stefan Müller. Hand gesture recognition with a novel IR time-of-flight range camera - a pilot study. Computer Vision/Computer Graphics Collaboration Techniques. Springer Berlin Heidelberg, strony 247-260, 2007. [39] Zhou Ren, Jingjing Meng, Junsong Yuan, Zhengyou Zhang. Robust hand gesture recognition with kinect sensor. Proceedings of the 19th ACM international conference on Multimedia. ACM, strony 759-760, 2011. [40] Marcin Moranski, Andrzej Materka. Depth sensing with time-of-flight and stereovision - preliminary experiments. Signal Processing Algorithms, Architectures, Arrangements, and Applications Conference Proceedings (SPA). IEEE, strony 57-61, 2009. [41] Nguyen Dang Binh, Enokida Shuichi, Toshiaki Ejima. Real-Time Hand Tracking and Gesture Recognition System. Proc. GVIP, strony 19-21, 2005. [42] Joyeeta Singha, Karen Das. Hand Gesture Recognition Based on Karhunen-Loeve Transform. arXiv preprint arXiv:1306.2599, 2013. [43] Pengfei Lu, Matt Huenerfauth. Accessible Motion-Capture Glove Calibration Protocol for Recording Sign Language Data from Deaf Subjects. Proceedings of the 11th international ACM SIGACCESS conference on Computers and accessibility. ACM, strony 83-90, 2009. 143 [44] Mohamed A. Mohandes. Recognition of Two-handed Arabic Signs using the CyberGlove. ADVCOMP 2010, The Fourth International Conference on Advanced Engineering Computing and Applications in Sciences, strony 124-129, 2010. [45] R. Rak, M. Kołodziej, A. Majkowski. Brain-computer interface as measurement and control system the review paper. Metrology and Measurement Systems, XIX.3:427-444, 2012. [46] Jesse Sherwood, Reza Derakhshani. On Classifiability of Wavelet Features for EEG-Based Brain-computer Interfaces. Neural Networks, 2009. IJCNN 2009. International Joint Conference on. IEEE, strony 2895-2902, 2009. [47] Christoph Guger, Alois Schlögl, Christa Neuper, Dirk Walterspacher, Thomas Strein, Gert Pfurtscheller. Rapid Prototyping of an EEG-Based Brain-Computer Interface (BCI). Neural Systems and Rehabilitation Engineering, IEEE Transactions on. IEEE, 9.1:49-58, 2001. [48] DengWang, Duoqian Miao, Gunnar Blohm. Multi-class motor imagery EEG decoding for brain-computer interfaces. Frontiers in neuroscience, 6, 2012. [49] Kyuwan Choi. Electroencephalography (EEG)-based neurofeedback training for brain-computer interface (BCI). Experimental brain research, 231.3:351-365, 2013. [50] W. L.Woon, A. Cichocki. Novel Features for Brain-Computer Interfaces. Computational Intelligence and Neuroscience, vol. 2007, nr artykułu 82827, 2007. [51] Febo Cincottia, Donatella Mattiaa, Fabio Aloisea, Simona Bufalaria, Laura Astolfia, Fabrizio De Vico Fallania, Andrea Toccia, Luigi Bianchia, Maria Grazia Marciania, Shangkai Gaof, Jose Millang, Fabio Babilonia. High-resolution EEG techniques for brain-computer interface applications. Journal of neuroscience methods, 167.1:31-42, 2008. [52] Thilo Hinterberger, Gerold Baier, Jürgen Mellinger, Niels Birbaumer. Auditory Feedback of Human EEG for Direct Brain-Computer Communication. ICAD, 2004. [53] Felix Lee, Reinhold Scherer, Robert Leeb, Christa Neuper, Horst Bischof, Gert Pfurtscheller. A Comparative Analysis of Multi-Class EEG Classification for Brain Computer Interface. Proceedings of the 10th Computer Vision Winter Workshop, strony 195-204, 2005. [54] Jaime F. Delgado Saa, Miguel Sotaquirá Gutierrez. EEG Signal Classification Using Power Spectral Features and Linear Discriminant Analysis: A Brain Computer Interface Application. Eighth Latin American and Caribbean Conference for Engineering and Technology, 2010. [55] Virgílio Bento, Luís Paula, António Ferreira, Nuno Figueiredo, Ana Tomé, Filipe Silva, Joao Paulo, Cunha, Pétia Georgieva. Advances in EEG-based Brain-Computer Interfaces for Control and Biometry. International Symposium on Computational Intelligence for Engineering Systems, 2009. [56] Kirti A. Joshi, Dr. Narendra Bawane. EEG Feature Extraction Using Wavelet Techniques For Brain Computer Interface. International Journal of Engineering Research and Applications (IJERA), strony 54-59, 2011. 144 [57] Tomasz M. Rutkowskia, Toshihisa Tanakab, Andrzej Cichockia, Donna Ericksonc, Jianting Caod, Danilo P. Mandice. Interactive component extraction from fEEG, fNIRS and peripheral biosignals for affective brain-machine interfacing paradigms. Computers in Human Behavior, 27.5:1512-1518, 2011. [58] Robert Leeb, Doron Friedman, Gernot R. Müller-Putz, Reinhold Scherer, Mel Slater, Gert Pfurtscheller. Self-Paced (Asynchronous) BCI Control of a Wheelchair in Virtual Environments: A Case Study with a Tetraplegic. Computational Intelligence and Neuroscience, vol. 2007, nr artykułu 79642, 2007. [59] Vijay Khare, Jayashree Santhosh, Sneh Anand, Manvir Bhatia. Brain Computer Interface Based Real Time Control of Wheelchair Using Electroencephalogram. International Journal of Soft Computing and Engineering (IJSCE), 1.5:41-45, 2011. [60] Chin-Teng Lin, Fu-Chang Lin, Shi-An Chen, Shao-Wei Lu, Te-Chi Chen, Li-Wei Ko. EEG-based Brain-computer Interface for Smart Living Environmental Auto-adjustment. Journal of Medical and Biological Engineering, 30.4:237-245, 2010. [61] Yu-Te Wang, Yijun Wang, Tzyy-Ping Jung. A Cell-Phone Based Brain-Computer Interface for Communication in Daily Life. Artificial Intelligence and Computational Intelligence, strony 233-240, 2010. [62] Mohammad H. Alomari, Ayman AbuBaker, Aiman Turani, Ali M. Baniyounes, Adnan Manasreh. EEG Mouse: A Machine Learning-Based Brain Computer Interface. International Journal of Advanced Computer Science and Applications, 5.4, 2014. [63] Rina R. Wehbe, Lennart Nacke. An Introduction to EEG Analysis Techniques and Brain-Computer Interfaces for Games User Researchers. DiGRA 2013 - DeFragging Game Studies. DiGRA, 2013. [64] Xing Song, S. Q. Xie, K. C. Aw. EEG-Based Brain Computer Interface for Game Control. International Conference on Affective Computing and Intelligent Interaction, 10:47-54, 2012. [65] Marina von Steinkirch. Introduction to the Microsoft Kinect for Computational Photography and Vision. State University of New York at Stony Brook, 2013. [66] Tommer Leyvand, Casey Meekhof, Yi-Chen Wei, Jian Sun, Baining Guo. Kinect Identity: Technology and Experience. Computer, 44.4:94-96, 2011. [67] Heng Du, TszHang To. Hand Gesture Recognition Using Kinect. Boston University, Department of Electrical and Computer Engineering, 2011. [68] Dongheng Li, Derrick J. Parkhurst. Starburst: A hybrid algorithm for video-based eye tracking combining feature-based and model-based approaches. Computer Vision and Pattern Recognition - Workshops, 2005. CVPR Workshops. IEEE Computer Society Conference on. IEEE, strona 79, 2005. [69] Manu Kumar. Reducing the Cost of Eye Tracking Systems. Building, 4. Citeseer, 2006. [70] Subramanya Amarnag, Raghunandan S. Kumaran, John N. Gowdy. Real Time Eye Tracking For Human Computer Interfaces. Multimedia and Expo, 2003. ICME '03. Proceedings. 2003 International Conference on. IEEE, 3:III-557-60, 2003. [71] Eyal M. Reingold. Eye tracking research and technology: Towards objective measurement of data quality. Visual cognition, 22.3:635-652, 2014. 145 [72] Alex Poole, Linden J. Ball. Eye Tracking in Human-Computer Interaction and Usability Research: Current Status and Future Prospects. Encyclopedia of Human Computer Interaction. Idea Group, 2005. [73] Guillaume Boulay. Eye Pose Tracking & Gaze Estimation. Institut National des Sciences Appliquées de Lyon, France. Département Télécommunications - Services & Usages, 2008. [74] Yash S. Desai. Driver’s alertness detection for based on eye blink duration via EOG & EEG. International Journal, 2012. [75] Yijia Sun, Stefanos Zafeiriou, Maja Pantic. A Hybrid System for On-line Blink Detection. Forty-Sixth Annual Hawaii International Conference on System Sciences, 2013. [76] Dhaval Pimplaskar, Dr. M.S. Nagmode, Atul Borkar. Real Time Eye Blinking Detection and Tracking Using Opencv. Dhaval Pimplaskar et al Int. Journal of Engineering Research and Applications, 3.5:1780-1787, 2013. [77] Shashidhar M. Sugur, Vidyagouri B. Hemadri, Dr. U.P.Kulkarni. Eye Blink Detection Based on Shape Measurement. ASM's International E- Journal of Ongoing Research in Management And IT, 2013. [78] Michael Chau, Margrit Betke. Real Time Eye Tracking and Blink Detection with USB Cameras. Boston University Computer Science Department, 2005. [79] Ilkwon Park, Jung-Ho Ahn, and Hyeran Byun. Efficient Measurement of the Eye Blinking by Using Decision Function for Intelligent Vehicles. Computational Science-ICCS 2007. Springer Berlin Heidelberg, strony 546-549, 2007. [80] Aleksandra Królak, Paweł Strumiłło. Eye-blink detection system for human-computer interaction. Universal Access in the Information Society, 11.4:409-419, 2012. [81] Marco La Cascia, John Isidoro, Stan Sclaroff. Head tracking via robust registration in texture map images. Computer Vision and Pattern Recognition, 1998. Proceedings. 1998 IEEE Computer Society Conference on. IEEE, strony 508-514, 1998. [82] Sumit Basu, Irfan Essa, Alex Pentland. Motion regularization for model-based head tracking. Pattern Recognition, 1996, Proceedings of the 13th International Conference on. IEEE, 3:611-616, 1996. [83] A. Hogue, M. Robinson, M. R. Jenkin, R. S. Allison. A vision-based head tracking system for fully immersive displays. Proceedings of the workshop on Virtual environments 2003. ACM, strony 179-187, 2003. [84] Robert S. Allison, Moshe Eizenman, Bob S. K. Cheung. Combinedl Head and Eye Tracking System for Dynamic Testing of the Vestibular System. Biomedical Engineering, IEEE Transactions on. IEEE, 43.11:1073-1082, 1996. [85] Kun Liu, Yupin Luo, Gyomei Tei, Shiyuan Yang. Attention recognition of drivers based on head pose estimation. Vehicle Power and Propulsion Conference, 2008. VPPC '08. IEEE, strony 1-5, 2008. [86] E. Murphy-Chutorian, M.M. Trivedi. Head pose estimation and augmented reality tracking: An integrated system and evaluation for monitoring driver awareness. Intelligent Transportation Systems, IEEE Transactions on. IEEE, 11.2:300-311, 2010. 146 [87] D. J. Kupetz, S. A. Wentzell, B. F. BuSha. Head motion controlled power wheelchair. Bioengineering Conference, Proceedings of the 2010 IEEE 36th Annual Northeast. IEEE, strony 1-2, 2010. [88] Y. Song, Y. Luo, J. Lin. Detection of movements of head and mouth to provide computer access for disabled. Technologies and Applications of Artificial Intelligence (TAAI), 2011 International Conference on, strony 223-226, 2011. [89] B. Mandal, H-L. Eng, H. Lu, D.W.S. Chan, Y-L. Ng. Non-intrusive Head Movement Analysis of Videotaped Seizures of Epileptic Origin. Engineering in Medicine and Biology Society (EMBC), 2012 Annual International Conference of the IEEE. IEEE, strony 6060-6063, 2012. [90] L. Jian-Zheng, Z. Zheng. Head movement recognition based on LK algorithm and Gentleboost. Networked Computing and Advanced Information Management (NCM), 2011 7th International Conference on. IEEE, strony 232-236, 2011. [91] Z. Zhao, Y. Wang, S. Fu. Head movement recognition based on Lucas-Kanade algorithm. Computer Science & Service System (CSSS), 2012 International Conference on. IEEE, strony 2303-2306, 2012. [92] Y. Zhao, H. Yan. Head orientation estimation using neural network. Computer Science and Network Technology (ICCSNT), 2011 International Conference on. IEEE, 3:20752078, 2011. [93] A. Kapoor, R.W. Picard. A Real-Time Head Nod and Shake Detector. Proceedings of the 2001 workshop on Perceptive user interfaces. ACM, strony 1-5, 2001. [94] F. Moreno, A. Tarrida, J. Andrade-Cetto, A. Sanfeliu. 3D real-time head tracking fusing color histograms and stereovision. Pattern Recognition, 2002. Proceedings. 16th International Conference on. IEEE, 1:368-371, 2002. [95] C. Rougier, J. Meunier, A. St-Arnaud, J. Rousseau. 3D head tracking for fall detection using a single calibrated camera. Image and Vision Computing, 31.3:246-254, 2013. [96] S. Manogna, S. Vaishnavi, B. Geethanjali. Head movement based assist system for physically challenged. Bioinformatics and Biomedical Engineering (iCBBE), 2010 4th International Conference on. IEEE, strony 1-4, 2010. [97] L.M. King, H.T. Nguyen, P.B. Taylor. Hands-free head-movement gesture recognition using artificial neural networks and the magnified gradient function. Engineering in Medicine and Biology Society, 2005. IEEE-EMBS 2005. 27th Annual International Conference of the. IEEE, strony 2063-2066, 2006. [98] S.T. Nguyen, H.T. Nguyen, P.B. Taylor, J. Middleton. Improved head direction command classification using an optimized Bayesian neural network. Engineering in Medicine and Biology Society, 2006. EMBS'06. 28th Annual International Conference of the IEEE. IEEE, strony 5679-5682, 2006. [99] S. Kim, M. Park, S. Anumas, J. Yoo. Head mouse system based on gyro- and optosensors. Biomedical Engineering and Informatics (BMEI), 2010 3rd International Conference on. IEEE, 4:1503-1506, 2010. 147 [100] A. Sasou. Acoustic head orientation estimation applied to powered wheelchair control. Robot Communication and Coordination, 2009. ROBOCOMM'09. Second International Conference on. IEEE, strony 1-6, 2009. [101] K. Satoh, S. Uchiyama, H. Yamamoto. A head tracking method using bird's-eye view camera and gyroscope. Proceedings of the 3rd IEEE/ACM International Symposium on Mixed and Augmented Reality. IEEE Computer Society, strony 202-211, 2004. [102] J. Kim, D. Lee, C.G. Park, H. Bang, J. Kim, S. Cho, Y. Kim, K. Baek. Construction of integrated simulator for developing head/eye tracking system. Control, Automation and Systems, 2008. ICCAS 2008. International Conference on. IEEE, strony 24852488, 2008. [103] M. Iwata, Y. Ebisawa. PupilMouse supported by head pose detection. Virtual Environments, Human-Computer Interfaces and Measurement Systems, 2008. VECIMS 2008. IEEE Conference on. IEEE, strony 178-183, 2008. [104] E. Perez, N. López, E. Orosco, C. Soria, V. Mut, T. Freire-Bastos. Robust Human Machine Interface Based on Head Movements Applied to Assistive Robotics. The Scientific World Journal, 2013. [105] A. Al-Rahayfeh, M. Faezipour. Eye Tracking and Head Movement Detection: A Stateof-Art Survey. Translational Engineering in Health and Medicine, IEEE Journal of, 1:2100212, 2013. [106] H. Singh, J. Singh. Human Eye Tracking and Related Issues: A Review. International Journal of Scientific and Research Publications, 2.9:1-9, 2012. [107] P. Strumiłło, T. Pajor. A Vision-Based Head Movement Tracking System for HumanComputer Interfacing. Proc. New Trends in Audio & Video and Signal Processing: Algorithms, Architectures, Arrangements, and Applications (NTAV/SPA), 2012 Joint Conference. IEEE, strony 143-147, 2012. [108] P. Bratoszewski, A. Czyżewski. Śledzenie głowy użytkownika komputera z użyciem kamery Time of Flight. Zeszyty Naukowe Wydziału Elektrotechniki i Automatyki Politechniki Gdańskiej, 36:35-38, 2013. [109] Politechnika Warszawska. Urządzenie do sterowania komputera. Piotr Kowalczyk, Dariusz Sawicki. Urząd Patentowy RP, P-402798, 2013. [110] Biomechanika Odcinka Szyjnego Kręgosłupa. Centrum Rehabilitacji Ruchowej, Olsztyńska Szkoła Wyższa, 2011. [111] James W Youdas, Tom R Garrett, Vera J Suman, Connie L Bogard, Horace O Hallman, James R Carey. Normal Range of Motion of the Cervical Spine: An Initial Goniometric Study. Physical Therapy, 72.11:770-780, 1992. [112] James W Youdas, James R Carey, Tom R Garrett. Reliability of Measurements of Cervical Spine Range of Motion - Comparison of Three Methods. Physical Therapy, 71.2:98-104, 1991. [113] Per Sjölandera, Peter Michaelsonb, Slobodan Jaricb, Mats Djupsjöbackab. Sensorimotor disturbances in chronic neck pain - Range of motion, peak velocity, smoothness of movement, and repositioning acuity. Manual Therapy, 13.2:122-131, 2008. 148 [114] Edmund LoPresti, David M. Brienza, Jennifer Angelo, Lars Gilbertson, Jonathan Sakai. Neck range of motion and use of computer head controls. Proceedings of the fourth international ACM conference on Assistive technologies. ACM, strony 121-128, 2000. [115] Karen French, Jane Veys. In the blink of an eye. Optometry Today, 47.18:40-43, 2007. [116] P. Aditya Ratna Chowdary, Dr N.S. Murty Sarma, Mr K. Raja Sekhar, Mr V. Dhana Raj. An Interface of Human and Machine with Eye Blinking. IJRCCT, 1.7:429-435, 2012. [117] Laura C. Trutoiu, Elizabeth J. Carter, Iain Matthews, Jessica K. Hodgins. Modeling and Animating Eye Blinks. ACM Transactions on Applied Perception, 2.3, 2011. [118] Agnieszka Wolska. Promieniowanie optyczne w środowisku pracy. Centralny Instytut Ochrony Pracy - Państwowy Instytut Badawczy, 2013. [119] Mitsuhiro Koden, Wide Viewing Angle Technologies of TFT-LCDs. Sharp Technical Journal, strony 55-60, 1999. [120] Raziel Alvarez, Erik Millan, Alejandro Aceves-Lopez, Ricardo Swain-Oropeza. Mobile Robots: Perception & Navigation, rozdział 8: Accurate Color Classification and Segmentation for Mobile Robots. INTECH, 2007. [121] Petr Kobalicek, Michal Bliznak. Optimized RGB To HSV Color Conversion Using SSE Technology. Annals of DAAAM & Proceedings, 22.1, 2011. [122] Marcin Iwanowski. Metody morfologiczne w przetwarzaniu obrazów cyfrowych. EXIT, 2009. [123] Lawrence O’Gorman, Rangachar Kasturi. Document Image Analysis. Los Alamitos, CA: IEEE Computer Society Press, 1995. [124] Machine Vision Introduction. SICK IVP, 2006. Version 2.2. [125] Bui Tuong Phong. Illumination for Computer Generated Pictures. Communications of the ACM, 18.6:311-317, 1975. [126] Daryl Martin. A Practical Guide to Machine Vision Lighting. Midwest Sales and Support Manager, Advanced illumination, 2007. 149