wzor IVKKTI - Politechnika Gdańska
Transkrypt
wzor IVKKTI - Politechnika Gdańska
ZESZYTY NAUKOWE WYDZIAŁU ETI POLITECHNIKI GDAŃSKIEJ Nr 9 Seria: Wytwarzanie Gier Komputerowych 2011 Michał Lech, Bożena Kostek, Andrzej Czyżewski Politechnika Gdańska, Katedra Systemów Multimedialnych ROZPOZNAWANIE DYNAMICZNYCH I STATYCZNYCH GESTÓW RĄK W ZASTOSOWANIU DO STEROWANIA APLIKACJAMI KOMPUTEROWYMI Streszczenie W referacie przedstawiono interfejs, metody oraz algorytmy sterowania komputerem za pomocą dynamicznych i statycznych gestów rąk. Komponentami opracowanego rozwiązania są komputer klasy PC wraz z opracowanym interfejsem i oprogramowaniem, kamera internetowa oraz projektor multimedialny. Gesty rozpoznawane są w procesie analizy obrazu wizyjnego pozyskanego z kamery internetowej przymocowanej do projektora oraz analizy obrazu wyświetlanego przez projektor (pozyskanego z komputera). Do rozpoznawania gestów dynamicznych zastosowano modelowanie trajektorii ruchu rąk za pomocą reguł logiki rozmytej. Gesty statyczne rozpoznawane są za pomocą maszyn wektorów nośnych (SVM). W referacie przedstawiono wyniki badania wydajności opracowanego systemu. We wnioskach przedstawiono również plany dotyczące rozbudowy systemu o algorytmy umożliwiające pracę z kamerą umieszczoną przed użytkownikiem. 1. WPROWADZENIE Gry komputerowe są dziedziną, w której można zaobserwować dużą różnorodność interfejsów umożliwiających interakcję człowieka z komputerem (HCI). Od roku 1972, kiedy firma Atari zaprezentowała jeden z pierwszych masowo produkowanych automatów do gry Pong, obsługiwany za pomocą pokręteł sterujących (ang. paddle), powstało szereg interfejsów zwiększających stopień zanurzenia użytkownika w wirtualnej rzeczywistości. W chronologicznym porządku wymienić można dżojstiki, pady, pistolety świetlne, pedały i kierownice z dźwigniami zmiany biegów w grach wyścigowych oraz kontrolery wyposażone w akcelerometry i kamerę pracującą w paśmie podczerwieni [1, 2]. Szczególnie innowacyjnym przykładem interfejsu, mogącym znaleźć zastosowanie w obsłudze gier komputerowych, jest kask przechwytujący potencjały elektryczne mózgu [3]. Rozwiązanie firmy Emotiv oferowane jest wraz z grą komputerową, w której za pomocą myśli możliwe jest przesuwanie obiektów [4]. Obecnie wiele uwagi poświęca się tworzeniu interfejsów, których podstawą działania jest przetwarzanie obrazu pozyskanego z kamery rejestrującej ruchy użytkownika. Zaletami rozwiązań tego typu są uniwersalność oraz zapewnienie bezdotykowej interakcji. Obiektami sterującymi w interfejsach 2 Michał Lech, Bożena Kostek, Andrzej Czyżewski wykorzystujących kamerę nie muszą być jedynie ręce użytkownika. Znane jest rozwiązanie, które umożliwia sterowanie aplikacjami komputerowymi za pomocą ust formowanych w różne kształty [5]. Interfejsem, który obecnie cieszy się dużą popularnością jest rozwiązanie firmy Microsoft o nazwie Kinect [6]. Zasada działania systemu polega na analizie relacji pomiędzy punktami wyświetlanymi za pomocą diod podczerwieni znajdujących się przed użytkownikiem. W referacie przedstawiono opracowany interfejs sterowania aplikacjami komputerowymi za pomocą gestów rąk. Rozwiązanie to nie wykorzystuje diod podczerwieni. Dodatkowo, w przeciwieństwie do większości podobnych rozwiązań, kamera znajduje się za użytkownikiem. 2. INTERFEJS STEROWANIA KOMPUTEREM ZA POMOCĄ GESTÓW RĄK Przedstawiony w referacie system składa się z komputera klasy PC, kamery internetowej, projektora multimedialnego i ekranu dla obrazu z projektora (rys. 1). Projektor podwieszony jest pod sufitem z kamerą przymocowaną bezpośrednio do niego. Obiektyw kamery skierowany jest na ekran i ustawiony w ten sposób, aby wyświetlany przez projektor obraz był możliwie największych rozmiarów w pozyskiwanym strumieniu wizyjnym i był w nim zawarty w całości. Użytkownik systemu znajduje się pomiędzy projektorem a ekranem. Rys. 1. Komponenty systemu i lokalizacja użytkownika Zasada działania interfejsu opiera się na odejmowaniu obrazu pozyskanego z kamery od obrazu wyświetlanego przez projektor. Gesty rozpoznawane są w przetworzonym obrazie będącym wynikiem tej operacji. Algorytmy przetwarzania obrazu przedstawiono we wcześniejszej publikacji, dlatego nie zostaną dokładniej przywołane [7]. Interfejs zapewnia rozpoznawanie gestów dynamicznych, bazujących na ruchu rąk, i statycznych, polegających na formowaniu dłoni w określony kształt. Oba typy gestów są ze sobą powiązane. Ten sam gest dynamiczny, w zależności od tego, z jakim gestem statycznym jest wykonany, może wywołać inną akcję. Dodatkowo, wykonanie określonych gestów dynamicznych w odpowiedniej kolejności interpretowane jest jako gest złożony, z którym Rozpoznawanie dynamicznych i statycznych gestów rąk w zastosowaniu do sterowania… 3 również związana jest akcja systemowa. Zbiór predefiniowanych gestów przedstawiono w tabeli 2.1. Gesty dynamiczne przedstawiono za pomocą strzałek określających trajektorie ruchu. Kolejność ruchów należy rozpatrywać od lewej do prawej, z góry na dół. Gesty obu rąk zaznaczono podwójnymi strzałkami. Tablica 2.1 Zbiór predefiniowanych gestów 3. METODA ROZPOZNAWANIA GESTÓW DYNAMICZNYCH Gesty dynamiczne rozpoznawane są w oparciu o metody logiki rozmytej. Trajektorie ruchu rąk zamodelowano za pomocą 30 reguł rozmytych opisujących relacje pomiędzy kolejnymi wektorami ruchu. Pojedynczy wektor ruchu tworzony jest w oparciu o punkty stanowiące pozycje rąk określone dla ramki obrazu o numerze n i ramki o numerze n + 3. Optymalny interwał pomiędzy kluczowymi ramkami, wynoszący dwie ramki, został dobrany w sposób empiryczny w oparciu o analizę wyników skuteczności detekcji dla sekwencji 20 strumieni wizyjnych zawierających gesty dynamiczne wykonywane przez 20 osób. Użytkownik może zmieniać wartość interwału korzystając z interfejsu graficznego i w ten sposób dostosowywać przetwarzanie danych do prędkości, z jaką wykonuje gesty. Sposób wyznaczania pozycji ręki zależny jest od fragmentu obrazu, jaki ona zajmuje. Jeśli ręka znajduje się w lewej połowie kadru, za pozycję przyjmuje się prawy górny róg prostokątnego obszaru, w który wpisuje się dłoń. Dla prawej połowy kadru pozycja ręki tożsama jest z lewym górnym rogiem tego obszaru. Przedstawiony sposób wyznaczania pozycji ręki w obrazie zastosowany był w celu zapewnienia skutecznej detekcji gestów zarówno jednej, jak i obu rąk. Jako zmienne lingwistyczne opisujące wektor ruchu wybrano prędkość i kierunek. Trajektorie ruchu analizowano w kartezjańskim układzie współrzędnych (rys. 2). Michał Lech, Bożena Kostek, Andrzej Czyżewski 4 y’ y u 21 u 10 a21 (x2, y2) u32 (x3, y3) x’ (x1, y1) a10 u43 (x0, y0) północ (x4, y4) x wschód wschód Rys. 2. Wektory ruchu opisane na trajektorii ruchu ręki w prawo, z wyszczególnieniem początkowej fazy ruchu Prędkość vij wyznaczono zgodnie ze wzorem (3.1). Kierunek wyrażono poprzez kąt αij pomiędzy wektorem ruchu a wersorem osi y, zgodnie ze wzorem (3.2). 2 ij gdzie: j xi xj yi yj = – – – – x x y y i i j j 2 t t i j (3.1) i˗1 pozycja x ręki w obrazie w chwili ti pozycja x ręki w obrazie w chwili tj pozycja y ręki w obrazie w chwili ti pozycja y ręki w obrazie w chwili tj ij u 180 arc cos y u ij ij ,u 0 x a ij ij u y 180 arc cos u ij 360 ij , u 0 x (3.2) Rozpoznawanie dynamicznych i statycznych gestów rąk w zastosowaniu do sterowania… gdzie: aij – u ij – uyij – uxij – 5 kąt pomiędzy wektorem uij a wersorem osi y wektor ruchu skonstruowany w oparciu o punkty w chwili ti i ti-1 współrzędna y wektora skonstruowanego w oparciu o punkty w chwili ti i ti-1 współrzędna x wektora skonstruowanego w oparciu o punkty w chwili ti i ti-1 Zdefiniowano 4 zbiory rozmyte dla wartości prędkości i 4 zbiory rozmyte dla kątów określających kierunek (rys. 3). Rys. 3. Zbiory rozmyte dla zmiennych lingwistycznych: prędkość i kierunek Dla wszystkich zbiorów przyjęto trójkątne funkcje przynależności. Zbiory wynikowe każdej reguły, reprezentujące klasy gestów, przyjęły postać singletonów, zgodnie z modelem Takagi-Sugeno zerowego rzędu. Wartością wynikową systemu wnioskowania była odpowiedź reguły, dla której wartość wynikowej funkcji przynależności była maksymalna. Dodatkowo, wprowadzono próg o wartości 0,5, poniżej którego aktywność ruchowa nie była kojarzona z żadnym z gestów. W ten sposób rozwiązano problem klasyfikowania ruchów przejściowych pomiędzy kolejnymi gestami jako gest. W celu uwzględnienia naturalności motoryki ludzkich gestów, reguły rozmyte zostały zdefiniowane w oparciu o wspomnianą sekwencję 20 strumieni wizyjnych zawierających zarejestrowane ruchy. Zauważono, że pełen ruch ręką, przykładowo, z lewej do prawej strony kadru, wykonywany jest po okręgu. Po przedstawieniu takiego ruchu w postaci trajektorii opisanej wektorami (rys. 2), wyróżnić można trzy kierunki, dla których wartości funkcji przynależności należą w największym stopniu do zbiorów rozmytych oznaczonych kolejno jako: północ, wschód, południe. Z tego względu przemieszczenie ręki w prawo zostało zamodelowane za pomocą 3 reguł rozmytych uwzględniających kolejne fazy ruchu, zgodnie z przykładem przedstawionym poniżej. Reguły rozmyte wyrażono w języku FCL (ang. Fuzzy Control Language). Dodatkowo, jako przykład zamodelowania gestu obu rąk, zawarto regułę reprezentującą aktywność ruchową polegającą na oddaleniu wyciągniętych przed siebie rąk, jedna od drugiej. // początkowa faza ruchu lewej ręki w prawo RULE 8 : IF directionLt0 IS North AND directionLt1 IS East AND velocityLt0 IS NOT small AND velocityLt1 IS NOT small AND velocityRt0 IS vsmall AND velocityRt1 IS vsmall THEN gesture IS g2; // środkowa faza ruchu lewej ręki w prawo RULE 9 : IF directionLt0 IS East AND directionLt1 IS East AND velocityLt0 IS NOT small AND velocityLt1 IS NOT small AND velocityRt0 IS vsmall AND velocityRt1 IS vsmall THEN gesture IS g2; 6 Michał Lech, Bożena Kostek, Andrzej Czyżewski // końcowa faza ruchu lewej ręki w prawo RULE 10 : IF directionLt0 IS East AND directionLt1 IS South AND velocityLt0 IS NOT small AND velocityLt1 IS NOT small AND velocityRt0 IS vsmall AND velocityRt1 IS vsmall THEN gesture IS g2; // oddalenie rąk, jedna od drugiej RULE 26 : IF directionLt0 IS West AND directionLt1 IS West AND directionRt0 IS East AND directionRt1 IS East AND velocityLt0 IS NOT vsmall AND velocityLt1 IS NOT vsmall AND velocityRt0 IS NOT vsmall AND velocityRt1 IS NOT vsmall THEN gesture IS g6; Część systemu odpowiedzialną za rozpoznawanie gestów dynamicznych stworzono w oparciu o platformę Java SE. Metody logiki rozmytej zaimplementowano wykorzystując bibliotekę jFuzzyLogic. Wyniki testów skuteczności rozpoznawania wybranych gestów dynamicznych zamieszczono we wcześniejszej publikacji autorów [7], dlatego w niniejszym referacie ograniczono się jedynie do podania uśrednionych globalnych wartości. Testy przeprowadzono w formie analizy porównawczej detekcji gestów opartej na logice rozmytej i bez jej zastosowania. Skuteczność detekcji wykorzystującej logikę rozmytą wyniosła 98%. Dla algorytmów wykorzystujących stałe progi rozdzielające zbiory wartości prędkości i kierunku, skuteczność wyniosła 94%. 4. METODA ROZPOZNAWANIA GESTÓW STATYCZNYCH Część systemu odpowiedzialną za rozpoznawanie gestów statycznych stworzono w oparciu o środowisko Visual Studio C++ i bibliotekę OpenCV [8]. Za rozpoznawanie gestów statycznych w systemie odpowiedzialne są maszyny wektorów nośnych (klasyfikatory SVM) typu C-SVC (ang. C-Support Vector Classification). W systemie zdefiniowano domyślnie trzy klasy gestów statycznych, które zostały przedstawione w tabeli 2.1. Dla dłoni lewej gesty są odbiciem zwierciadlanym gestów wykonywanych prawą dłonią. Z każdą klasą gestu związany jest jeden klasyfikator. Aby możliwe było rozpoznawanie różnych gestów statycznych wykonywanych jednocześnie obiema rękoma, tworzone są osobne klasyfikatory dla lewej i prawej dłoni. Parametry poszczególnych klasyfikatorów są identyczne. Klasyfikatory zaimplementowano wykorzystując bibliotekę LIBSVM [9]. Ze względu na nieliniową zależność pomiędzy wektorami danych wejściowych a wynikami klasyfikacji przyjęto jądro RBF (ang. radial basis function). Parametry klasyfikatorów C i przyjęły wartości, odpowiednio, 100 i 0,02. Wartości określono w procesie analizy wyników klasyfikacji otrzymywanych dla różnych wartości parametrów klasyfikatora i tych samych wektorów parametrów wejściowych. Za środowisko badawcze posłużyła aplikacja Weka. Wektory parametrów wejściowych zawierają wartości opisujące kontur dłoni wykrytej w obrazie. Parametryzacja kształtu dłoni realizowana jest za pomocą histogramów PGH (ang. Pairwise Geometrical Histogram) o liczbie przedziałów klasowych równej 15 i wysokości równej 10 jednostek. Poprzez zastosowanie tej metody parametryzacji uzyskano niewrażliwość detekcji na kąt obrotu dłoni wokół osi prostopadłej do płaszczyzny ekranu. W procesie trenowania klasyfikatorów każda klasa gestu reprezentowana jest przez 100 histogramów. Wektory opisujące klasy gestów dzielone są na dwa zbiory. Do jednego Rozpoznawanie dynamicznych i statycznych gestów rąk w zastosowaniu do sterowania… 7 zbioru należą wektory reprezentujące klasę, dla której dany klasyfikator jest trenowany, do drugiego – wszystkie pozostałe wektory. Algorytmy maszyny wektorów nośnych, udostępnianej przez bibliotekę LIBSVM, w stosunku do klasycznej metody są rozszerzone o wartości prawdopodobieństw przynależności rozpoznawanego obiektu do danej klasy. W systemie wykorzystano tę właściwość, określając próg podjęcia decyzji o przynależności kształtu dłoni do klasy gestu jako 0,8. Za odpowiedź całego systemu klasyfikacji przyjmuje się pozytywną odpowiedź klasyfikatora, który zwraca maksymalną wartość prawdopodobieństwa. 5. WYDAJNOŚĆ SYSTEMU Wydajność opracowanego systemu została zbadana w kontekście czasów wykonania operacji. W poniższej tabeli zebrano uśrednione z 1000 iteracji czasy wykonania kluczowych operacji. Badania zostały przeprowadzone na komputerze z procesorem Intel Core 2 Duo P7350 2.0 GHz i pamięcią RAM DDR2 400 MHz o czasach opóźnień 6:6:6:18. Aplikacja pracowała w środowisku 32-bitowego systemu operacyjnego Windows Vista Business. W trakcie testów zauważono, że wydajność systemu jest silnie uzależniona od systemowych ustawień efektów wizualnych. W tabeli 5.1. przedstawiono wyniki dla ustawień zapewniających pełen zbiór efektów wizualnych stosowanych podczas wyświetlania grafiki systemu i ustawień zapewniających maksymalną wydajność przy braku takich efektów. Ustawienia zapewniające najlepszą grafikę były tożsame z automatycznie wybieranymi przez system ustawieniami optymalnymi. Ustawiona w systemie rozdzielczość obrazu wynosiła 1024 x 768 pikseli. W każdej iteracji cyklu pracy opracowanego interfejsu, z kamery pozyskiwany był obraz o rozmiarze 320 x 240 pikseli. Do takiego samego rozmiaru przeskalowywany był aktualny widok ekranu. W trakcie testów wydajności dla obu ustawień użytkownik wykonywał ten sam gest dynamiczny, który polegał na ruchu ręką do góry i do dołu w zakresie wysokości kadru. Zachowane było stałe tempo wynoszące 1 ruch w danym kierunku na sekundę. Ręka skierowana była zewnętrzną stroną do obiektywu kamery, a palce dłoni były złożone. Kształt ten został zadeklarowany w systemie jako jeden z gestów statycznych. W trakcie przeprowadzania obu testów bieżący profil zasilania ustawiony był na maksymalną wydajność. Jedyną działającą aplikacją był interfejs rozpoznawania gestów. Testy wykonywane były dla identycznego widoku ekranu, różniącego się jedynie wykończeniem elementów grafiki, co wynikało z badanych ustawień. Funkcje, dla których w tabeli nie podano nazwy biblioteki pochodzą z pakietu OpenCV. Tablica 5.1 Czasy wykonania poszczególnych operacji Ustawienie: Najlepszy wygląd Ustawienie: Maksymalna wydajność Pozyskanie ramki Funkcja Czas wykonania [ms] cvQueryFrame 1,66 19,14 Pozyskanie widoku ekranu (w tym*) Biblioteka windef.h, winuser.h, wingdi.h Funkcja CreateCompatibleBitmap Michał Lech, Bożena Kostek, Andrzej Czyżewski 8 Czas wykonania [ms] 41,44 10,19 *Przeskalowanie Funkcja Czas wykonania [ms] cvResize 0,36 0,36 Korekcja perspektywy Funkcja Czas wykonania [ms] cvWarpPerspective 7,09 7,09 Ekstrakcja obszaru efektywnego Funkcja Czas wykonania [ms] cvGetSubRect 0,003 0,003 Odejmowanie obrazów Funkcja Czas wykonania [ms] cvAbsDiff 0,34 0,35 Kalibracja barwowa Czas wykonania [ms] 4,96 4,28 Binaryzacja Funkcja Czas wykonania [ms] cvThreshold 0,07 0,07 Filtracja medianowa Funkcja Czas wykonania [ms] cvSmooth 4,71 4,90 Detekcja obiektu w obrazie Funkcja cvFindContours cvDrawContours Czas wykonania [ms] 0,46 0,45 Filtracja Kalmana Funkcja cvKalmanCorrect cvMatMulAdd Czas wykonania [ms] 4,71 0,03 Detekcja gestu dynamicznego Biblioteka jFuzzyLogic Funkcja Czas wykonania [ms] rule.getDegreeOfSupport 0,28 0,29 Ekstrakcja kształtu dłoni Funkcja Czas wykonania [ms] cvGetSubRect, cvFindContours, cvDrawContours, cvBoundingRect 0,07 0,08 Detekcja gestu statycznego Biblioteka LIBSVM, OpenCV Funkcja CalcPGH, svm_predict_probability Czas wykonania [ms] 7,66 8,98 Całkowity czas wykonania (zbadany) [ms] 79,64 66,75 Całkowity czas wykonania 69,12 56,20 Rozpoznawanie dynamicznych i statycznych gestów rąk w zastosowaniu do sterowania… 9 (suma) [ms] Rozdzielczość czasowa 12,56 14,98 [klatki / s] Znaczna różnica pomiędzy czasem pozyskania ramki z kamery przy ustawieniu maksymalnej wydajności i czasem przy ustawieniu najlepszego wyglądu spowodowana była sposobem implementacji funkcji cvQueryFrame. Zauważono, że w zależności od producenta kamery, funkcja automatycznie wprowadza odpowiednie opóźnienia w celu zapewnienia pozyskiwania strumienia wizyjnego, w którym każde dwie sąsiednie klatki zawsze różnią się od siebie. Opóźnienia te zależne są od obciążenia zasobów generowanego przez pozostałe funkcje, tzn. im większe obciążenie tym wprowadzane opóźnienie jest mniejsze. W badaniach wykorzystano kamerę Logitech Portable Webcam C905. Różnica pomiędzy zbadanym uśrednionym czasem wykonania pojedynczej iteracji rozpoznawania gestu a czasem wynikającym z sumy wszystkich zmierzonych wartości wynikała z konieczności stosowania dodatkowych operacji, których celem było dopasowanie formatów danych. Przykładem takich operacji mogą być funkcje: cvFlip, cvCvtColor, cvSplit, które realizowały odpowiednio: rotację obrazu względem danej osi, konwersję kolorów, zastąpienie wszystkich składowych koloru jedną, wybraną składową. Uzyskana rozdzielczość czasowa systemu dla trybu maksymalnej wydajności, wynosząca około 15 klatek / s pozwoliła na obsługę interfejsu bez zauważalnego opóźnienia. Wyniki testów wydajności systemu pokazują, że na rozdzielczość czasową wpływ mają nie tylko zasoby sprzętowe komputera, ale również programowe opcje wydajności systemu operacyjnego. 6. PODSUMOWANIE Przedstawiony system w obecnej postaci funkcjonuje z kamerą umieszczoną za użytkownikiem. Specyfikę pracy z opracowanym interfejsem w środowisku projektora multimedialnego wykorzystano tworząc aplikację o nazwie Wirtualna Tablica [10]. Oprogramowanie w połączeniu z przedstawionymi komponentami sprzętowymi pozwala na emulowanie elektronicznej tablicy szkolnej, przy czym zasadniczą zaletą jest brak konieczności stosowania specjalnych pisaków czy potrzeby ścierania tablicy. Aplikacja poza spełnieniem podstawowej funkcjonalności, jaką jest nanoszenie treści na tablicę poprzez ruch ręki, pozwala na interakcję z wyświetlanymi obiektami, np. obrót i powiększanie zawartości tablicy. W środowisku projektora i ekranu dla wyświetlanego przez niego obrazu, umiejscowienie kamery za użytkownikiem jest pożądane. Umieszczenie kamery przed użytkownikiem byłoby problematyczne ze względu na silne światło z projektora padające na obiektyw kamery i sposób mocowania do ekranu. Jednakże, do obsługi aplikacji nie wymagających użycia projektora bardziej naturalne jest umiejscowienie kamery bezpośrednio przy monitorze. Z tego względu, planuje się rozszerzenie systemu o algorytmy detekcji rąk bezpośrednio w przetworzonym obrazie pozyskanym z kamery. W tym celu przewiduje się zastosowanie algorytmu Camshift (Continuously adaptive meanshift) [11], którego implementację zawiera biblioteka OpenCV. Michał Lech, Bożena Kostek, Andrzej Czyżewski 10 PODZIĘKOWANIA Praca została wykonana w ramach projektu POIG.01.03.01-22-017/08 pt.: "Opracowanie typoszeregu komputerowych interfejsów multimodalnych oraz ich wdrożenie w zastosowaniach edukacyjnych, medycznych, w obronności i w przemyśle". Projekt jest współfinansowany ze środków Europejskiego Funduszu Rozwoju Regionalnego i budżetu państwa. BIBLIOGRAFIA [1] Cuciz, D., Total Control – A History of Game Controllers, gamespy.com/PlanetHardware, March 17, 2003, http://archive.gamespy.com/hardware/june02/sticks1/index.shtml, dostęp: 06.06.2011. [2] Catalin I., History of the game controller: A quick run down on everyone’s favorite input device, Softpedia, 2009, http://gadgets.softpedia.com/newsPDF/History-of-the-Game-Controller2737.pdf, dostęp: 06.06.2011. [3] Kaszuba K., Kopaczewski K., Odya P., Kostek B., Biofeedback-based brain hemispheric synchronizing employing man-machine interface, W: G.A. Tsihrintzis et al. (Eds.): Intelligent Interactive Multimedia Systems and Services, Springer-Verlag, vol. 6, pp. 56–69, 2010. [4] Ranky G.N., Adamovich S., Analysis of a Commercial EEG Device for the Control of a Robot Arm, Proc. of the 2010 IEEE 36th Annual Northeast, 2010. [5] Dalka P., Czyżewski A., Human-Computer Interface Based on Visual Lip Movement and Gesture Recognition, International Journal of Computer Science and Applications, no. 3, vol. 7, pp. 124– 139, 2010. [6] Leyvand T., Meekhof C., Yi-Chen Wei, Jian Sun and Baining Guo, Kinect Identity: Technology and Experience, Computer, IEEE Computer Society, 2011. [7] Lech M., Kostek B., Fuzzy Rule-based Dynamic Gesture Recognition Employing Camera & Multimedia Projector, in: Advances in Intelligent and Soft Computing, Advances in Multimedia and Network Information System Technologies series, Springer-Verlag, pp. 69–78, 2010. [8] Bradski G., Kaehler A., Learning OpenCV, O’Reilly, 2008. [9] Chih-Wei Hsu, Chih-Chung Chang and Chih-Jen Lin, A Practical Guide to Support Vector Classification, 2010, http://www.csie.ntu.edu.tw/~cjlin/libsvm, acquired 01.06.2011. [10] Lech M., Kostek B., Gesture-based Computer Control System Applied to the Interactive Whiteboard, Zeszyty Naukowe Wydziału ETI PG, no. 8/2010, pp. 121 - 126, 2010. [11] Fukunaga K., Introduction to Statistical Pattern Recognition, Boston: Academic Press, 1990. RECOGNITION OF DYNAMIC AND STATIC HAND GESTURES APPLIED TO COMPUTER APPLICATION CONTROLLING Summary In the paper an interface, methods and algorithms of controlling a computer by dynamic and static hand gestures have been presented. The solution consists of a PC on which engineered software is installed, a webcam and a multimedia projector. Gestures are recognized based on analysis of a video stream obtained from the webcam attached to the multimedia projector and on analysis of video stream displayed by the projector (retrieved from the computer). For the purpose of dynamic gestures recognition motion trajectory has been modeled by fuzzy rules. Static gestures are recognized using Support Vector Machines. In the paper results of efficiency examination of the interface engineered have been given. In conclusions, further plans to extend the system with algorithms enabling to work with the camera placed front-faced have been presented.