Gebarentaal herkennen met de Microsoft Kinect

Maat: px
Weergave met pagina beginnen:

Download "Gebarentaal herkennen met de Microsoft Kinect"

Transcriptie

1 Gebarentaal herkennen met de Microsoft Kinect Joery Vannieuwenhuyse Promotor: prof. dr. ir. Benjamin Schrauwen Begeleiders: Pieter-Jan Kindermans, Sander Dieleman Masterproef ingediend tot het behalen van de academische graad van Master in de ingenieurswetenschappen: computerwetenschappen Vakgroep Elektronica en Informatiesystemen Voorzitter: prof. dr. ir. Jan Van Campenhout Faculteit Ingenieurswetenschappen en Architectuur Academiejaar

2

3 Gebarentaal herkennen met de Microsoft Kinect Joery Vannieuwenhuyse Promotor: prof. dr. ir. Benjamin Schrauwen Begeleiders: Pieter-Jan Kindermans, Sander Dieleman Masterproef ingediend tot het behalen van de academische graad van Master in de ingenieurswetenschappen: computerwetenschappen Vakgroep Elektronica en Informatiesystemen Voorzitter: prof. dr. ir. Jan Van Campenhout Faculteit Ingenieurswetenschappen en Architectuur Academiejaar

4 Voorwoord Ik heb in eerste instantie gekozen voor een masterproef waarin gebruik wordt gemaakt van de Kinect camera omdat ik reeds langer de intentie had om met de voornoemde camera te werken. Echter was er altijd iets belangrijker dat me verhinderde om met zo een projectje te beginnen. Bij deze heb ik dan de kans gegrepen om met de Kinect te werken. Hiernaast is er gekozen om met gebarentaal te werken omdat dit een populaire toepassing van de Kinect aan het worden is waar ook veel onderzoek rond gebeurt. Echter had ik deze masterproef niet kunnen verwezenlijken zonder de hulp van een aantal personen, die ik dan ook expliciet wens te bedanken voor de geleverde bijdragen. David Verstraeten, Sander Dieleman en Pieter-Jan Kindermans hebben me op de vergaderingen, maar ook daarbuiten, bijgestaan met raad en tips. Ik kon te allen tijde een beroep doen op hun eigen ervaringen en meningen over bepaalde beslissingen. Deze bijstand heeft een cruciale rol gespeeld tijdens de uitvoering van deze masterproef. Voor het opnemen van de dataset wens ik expliciet Jean-Pierre Ball en Siegfried Ball te bedanken. Voor het nalezen van deze masterproef wens ik Sander Dieleman, Pieter-Jan Kindermans en Jean-Pierre Ball te bedanken. Als laatste zou ik ook nog mijn familie, vrienden en vele kennissen willen bedanken voor de steun en getoonde interesse tijdens de uitvoering van deze masterproef en mijn studies in het algemeen. Joery Vannieuwenhuyse, 25 mei 2013

5 Toelating tot bruikleen De auteur geeft de toelating deze scriptie voor consultatie beschikbaar te stellen en delen van de scriptie te kopiëren voor persoonlijk gebruik. Elk ander gebruik valt onder de beperkingen van het auteursrecht, in het bijzonder met betrekking tot de verplichting de bron uitdrukkelijk te vermelden bij het aanhalen van resultaten uit deze scriptie. Joery Vannieuwenhuyse, 25 mei 2013

6 Overzicht Gebarentaal herkennen met de Microsoft Kinect Joery Vannieuwenhuyse Promotor: Prof. Dr. Ir. Benjamin Schrauwen Begeleiders: Ir. Sander Dieleman, Ir. Pieter-Jan Kindermans Masterproef ingediend tot het behalen van de academische graad van Master in de ingenieurswetenschappen: computerwetenschappen Vakgroep Elektronica en Informatiesystemen Voorzitter: Prof. Dr. Ir.Jan Van Campenhout Faculteit Ingenieurswetenschappen en Architectuur Academiejaar Universiteit Gent Samenvatting In het eerste hoofdstuk wordt er meer algemene informatie gegeven over gebarentaal waarbij meer precies de Vlaams Belgische gebarentaal het belangrijkste is. Dat hoofdstuk dient de lezer meer achtergrond bij te brengen in verband met gebarentaal om deze masterproef te kunnen volgen en deze ook op de hoogte te stellen van de doelstelling. Daarnaast worden er ook twee use-cases besproken waarbij een commerciële applicatie voor herkenning van gebaren nuttig kan zijn. Het tweede hoofdstuk geeft een overzicht van onderzoek dat reeds werd uitgevoerd en nauw aansluit bij de masterproef. Hierbij wordt gekeken naar onderzoek rond het bekomen van de nodige data voor het herkennen van gebaren, de reeds toegepaste methoden voor het effectief herkennen van gebaren alsook enkele specifieke werken waarbij de Kinect camera reeds werd gebruikt voor herkenning van gebaren. De gebruikte apparatuur en software wordt besproken in het derde hoofdstuk. Bij die bespreking kan de gebruiker meer inzicht verwerven in de Kinect alsook de verschillende software die bekeken en gebruikt is. Daarbij worden er een aantal bevindingen in verband met de software aangehaald en kan er voor meer informatie in verband met de installatie van de software gebruik worden gemaakt van de bijhorende Bijlage. Hoofdstuk vier beschrijft de vingerdetectie die gebruikt is om tot de nodige data voor

7 het herkennen van gebaren te komen. Deze vingerdetectie is voor het overgrote deel eigen werk waarbij dan ook verschillende methoden geïmplementeerd werden. In het hoofdstuk zijn de meest interessante implementaties opgenomen met een beschrijving van de werking. Uit alle methodes werd vervolgens de beste geselecteerd voor verder gebruik op basis van het behaalde aantal frames per seconde en de daarmee gepaard gaande accuraatheid. En als laatste wordt er ook nog een vorm van vingerclustering beschreven die toelaat om de data op niveau van de vingers te achterhalen. In hoofdstuk vijf worden twee vormen van smoothing besproken, met name moving average en exponentiële smoothing. Beide vormen worden besproken gevolgd door de beschrijving van enkele uitgevoerde testen die de methode die definitief gebruikt zou worden diende aan te duiden. Het zesde hoofdstuk geeft een woordje uitleg bij het tot stand komen van de dataset. Dit omvat de mogelijkheid om extern bestaande datasets te gebruiken, de voorwaarden voor het opnemen van de eigen dataset alsook de uiteindelijke opbouw van de zelf opgenomen dataset. Hoofdstuk zeven draait volledig rond een vorm van machinaal leren. Meer precies draait het om het gebruik van Hidden Markov Modellen. Het verantwoordt de keuze om met HMMs te werken en geeft een beknopte introductie tot de opbouw en het gebruik ervan. Na wat theoretische achtergrond volgt er dan een overzicht van de verschillende HMMs die binnen deze masterproef zijn gebouwd en gebruikt. In hoofdstuk acht worden de bekomen resultaten uitgezet. Gezien het grote aantal testen dat is uitgevoerd konden niet alle resultaten worden opgenomen en is er dus een selectie van de meest relevante resultaten gemaakt. Bij de bespreking van de resultaten wordt telkens op bepaalde fenomenen gewezen die dan ook zo goed mogelijk verklaart worden. Het negende en tevens laatste hoofdstuk geeft een beknopte conclusie die uit de masterproef getrokken kan worden. Trefwoorden Gebarentaalherkenning, Kinect, Vingerdetectie, Handdetectie, Hidden Markov Modellen

8 Sign Language recognition using the Microsoft Kinect Joery Vannieuwenhuyse Supervisor(s): Pieter-Jan Kindermans, Sander Dieleman Abstract Today there is still a gap left between speech and sign language recognition whereby sign language recognition is staying behind. This leads to limitations for deaf people because they are only able to communicate with other people when both know sign language. Although some signs can be interpreted by people who do not know sign language, a great deal of signs will bring difficulties when communicating with someone who lacks the necessary skills to interpret them. This is where a system for automatic sign language recognition could be useful. In this article I will explain one approach towards building such a system by using Hidden Markov Models (HMMs). For this system a dataset of twenty signs was recorded and led to 85.33% accuracy in detection of those signs. Keywords Sign language recognition, Microsoft Kinect, Hidden Markow Models I. INTRODUCTION A. Sign language recognition Sign language refers to a language whereby people communicate through the use of gestures instead of spoken words. This means that it is a highly visual language and the users actually use their eyes to listen to another signer. Due to the lack of hearing people that understand sign language, deaf people might run into serious problems when trying to communicate. But for every problem there is a solution and in this case the deaf people could use text writing or data interpreters to communicate. However the use of text writing makes the deaf people more uncomfortable while data interpreters are scarce and most of the time expensive as well. The solution to this problem that is most user friendly is the use of a camera to interpret the sign language and output the right words or sentences. The Microsoft Kinect is a camera which is commercially available for the price of C Furthermore this camera possesses the ability to calculate and offer three dimensional datapoints. These three dimensional points are of interest for the method described in this article. Sign language itself takes place in four dimensions: shape, rotation, position and movement of the hands. Besides these four dimensions there are more elements that can take part in sign language such as facial expressions and the amount of hands that are used. There are signs that use only one hand but where the signer can use two hands to describe two things at once. For instance a story about two people whereby each hand J. Vannieuwenhuyse is a Master student in Computer Science, Ghent University (UGent), Gent, Belgium. represents one person. In this work however I will only focus on the four main dimensions. B. Previous work A lot of work has been done on sign language recognition whereby a lot of different methods where used. However before the recognition of signs itself it is of utmost importance to trace the hands of a user. To achieve this many different approaches have been developed. One of these methods is segmentation of the video stream by using skin color and afterwards excluding the user s head [1]. The problem of this method is that the user has to wear clothing with long sleeves as it would otherwise greatly hinder the detection of the hands. To make the first method more accurate one could use 3D data to easily differentiate between the hands and the head [2]. But the problem of the uncomfortable sleeves remains. The solution came after research from Microsoft [3] whereby they used only 3D data to detect a person followed by fitting a skeleton on the person. This skeleton then allows easy detection of the hands or any other body part of the user. It is exactly this method that was implemented in the Microsoft Kinect SDK to detect a user. After detection of the hands the recognition of signs could continue. Previous research on the sign recognition itself has shown that it is possible to recognise signs with highly accurate results [4]. To achieve sign recognition a lot of methods have been used in the past such as convolutional networks and Hidden Markov Models. Also the training methods of these systems have very different approaches ranging from a recorded dataset as small as five recordings per gesture up to a live stream of a TV-show with gestures and subtitles. However most of the work that has been done did not take depth data into consideration when trying to recognise gestures. The few works that have been performed on sign language recognition that make use of depth data where all based on the usage of the Kinect camera. Argyros [5] has proven that it is possible to accurately and efficiently detect the handpose in real time using depth data and this at a framerate of 15Hz. Thus suggesting that it is possible to achieve accurate sign language recognition using depth data which is exactly what was achieved with the system d in this article. I also achieved 15Hz framerate on my user tracking algorithm that will not be explained as it is merely a tool to extract the necessary

9 data from the hands. C. Dataset The dataset that was used for this research was recorded with the Kinect camera using the standard 640 by 480 resolution. In total the dataset consisted of twenty signs that where chosen by the other participants who had no knowledge of the used method or its pros and cons. Thus allowing the use of neutral dataset. The signs where recorded fifteen times each and this for each of the 3 persons resulting in a total of nine hundred recordings. Furthermore none of the persons had any real experience with sign language resulting in some variety for the signs between persons. II. HIDDEN MARKOV MODELS As mentioned before I have used HMMs to detect sign language. This means that some HMMs had to be trained in recognizing the gestures whereafter they could be tested. Since there is no labeled data I made use of unlabeled training of the HMMS whereby one HMM per sign was used. The parameters that where used for training included the number of fingers, position and direction of both hands as well as the position and direction of the individual fingers. Thus for each parameter itself another HMM was needed in order to look at the standard detection of gestures based on only one parameter. Naturally the number of fingers is discrete and can take only seven states including a default state that is used when a hand cannot be detected. On the other hand all the remaining parameters can take on a wide range of values in three dimensions (X,Y,Z) with small variances resulting in a continuous distribution. For these parameters a Gaussian distribution was used. Strangely enough multiple test have shown that the results get better when using a specific default value for these Gaussian models instead of a default value with noise. There have also been extensive tests with either standard positions for the fingers as well as positions that were made relative in relation to the center position of the hand. These have shown that relative positions for the fingers give better accuracy for the HMMs based on them. Furthermore there still remains the matter of the amount of hidden states that was used. Again tests have shown that the best amount of hidden states to be used is fixed at three. Up till now I have only spoken about the basic HMM models, however it is also possible to combine multiple HMMs. I have used the method whereby the resulting probabilities after evaluation of an input sequence are multiplied with one another. Keep in mind that the results have to be from the same sign. In other words the probabilities can be summed when working in the logarithmic domain. It is better to be working in the logarithmic domain in order to prevent underflow as a Fig. 1. Confusion matrix for the optimal combined HMM. result of continuously multiplying small floating point numbers. In the end the best results were achieved using a combined HMM with three hidden states that uses only the amount of fingers, position and direction of the hands. The results of such a model will be described in the next section. III. RESULTS The best model that I was able to build uses a combined HMM with three hidden states that makes use of the amount of fingers, position and direction of the hands. Figure 1 shows the result of a test with such a model. This model achieved an accuracy of 84.33% correctly estimated signs. Fifteen recordings of each sign where shuffled in a testset and given to the system for detecting the signs. In the confusion matrix of the figure the amount of correctly detected signs can be seen on the main diagonal. The vertical axis represents the actual signs while the horizontal axis represents the detected signs. It is obvious that the diagonal is interrupted at sign eleven, the reason for this is the almost identical sign three that was detected nine times instead of the sign eleven. Both signs are identical with exception of the initial state. This means that the system is having problems with identical data that a deaf person could interpret by using the context it is used in. There is not really an obvious solution to this problem by looking only at HMMs. However, more complex models that combine results of different methods might be able to differentiate between these two signs. IV. CONCLUSION I have been able to prove that the usage of depth data within HMMs can lead to highly accurate detection of sign language. Furthermore experiments that were not described in this article have shown that the method generalizes fairly well to datasets with more signs. This means that the method that has been described surely has the potential for future research. Although I was

10 unable to detect the signs in real time, I can extract the necessary data from a live stream at 15Hz which is a good first step towards real time detection. What is left to be done to achieve this is segmentation of the live stream. ACKNOWLEDGMENTS First of all I want to thank David Verstraeten, Pieter- Jan Kindermans and Sander Dieleman for the support and advice they provided at regular meetings as well as at unplanned moments. I also want to thank the signers that have participated in the recordings for the dataset. Without Jean-Pierre Ball and Siegfried Ball I wouldn t have had the dataset that was used in my work, which would have led to less accurate conclusions. REFERENCES [1] Antonis A. Argyros, Manolis I.A. Lourakis, Tracking Skincolored Objects in Real-time, invited contribution to the Cutting Edge Robotics book, ISBN , Advanced Robotic Systems International, [2] S. E. Ghobadi, O. E. Loepprich, K. Hartmann, O. Loffeld, Hand Segmentation using 2D/3D Images, Proceedings of Image and Vision Computing New Zealand 2007, pp. 6469, Hamilton, New Zealand, December [3] J. Shotton, A. Fitzgibbon, M. Cook, T. Sharp, M. Finocchio, R. Moore, A. Kipman, A. Blake, Real-time human pose recognition in parts from single depth images, In In CVPR, [4] H. Cooper, Eng-Jon ONG, N. Pugeault, R. Bowden, Sign Language Recognition using Sub-Units, Journal of Machine Learning Research 13 (2012), [5] I. Oikonomidis, N. Kyriazis and A.A. Argyros, Efficient model-based 3D tracking of hand articulations using Kinect, in Proceedings of the 22nd British Machine Vision Conference, BMVC2011, University of Dundee, UK, Aug. 29-Sep. 1, 2011.

11 INHOUDSOPGAVE i Inhoudsopgave 1 Inleiding Gebarentaal Het ontstaan van gebarentaal Gebarentaal en gesproken taal De opbouw van gebarentaal Vlaamse gebarentaal Mogelijke use-cases Scenario één: Communicatie met een stomme Scenario twee: Het aanleren van gebarentaal Doelstelling Voorgaande studies Verwerven van data voor de handen Herkenning van gebaren Herkening van gebaren met de Kinect Apparatuur en Software Microsoft Kinect ROS (Robot Operating System) PCL (Point Cloud Library) OpenNI MLPack De vingerdetectie Kalibratie van een nieuwe gebruiker Het creëren van een 3D puntenwolk Voorbehandeling van de puntenwolk voor de hand Detectie van de vingers

12 INHOUDSOPGAVE ii Punt per punt filter met een kleine bol Punt per punt filter met een grote bol Punt per punt filter met grote kubus Een dubbel filter voor hogere accuraatheid Een dubbel filter met raster voor hogere framerate Clustering van de vingers Smoothing Moving average Exponentiële smoothing Testresultaten De dataset Datasets van derden Richtlijnen voor opname Opbouw van de dataset Machinaal leren Hidden Markov Modellen Training Evaluatie Decodering Logaritmisch domein Types Resultaten Uitgevoerde testen Dataset 7 gebaren Eenvoudige modellen Gecombineerde modellen Dataset 20 gebaren Conclusie 59 A ROS (Robot Operating System) 61 A.1 Het raamwerk opzetten A.2 De opbouw van het raamwerk

13 INHOUDSOPGAVE iii A.3 De werking van vinger-detectie B PCL (Point Cloud Library) 70 B.1 Het installeren van PCL Kinect Fusion C Uitgebreide resultaten van smoothing 74 D Gebruikte gebaren 76

14 Gebruikte afkortingen OpenNI PCL ROS MLPack HMM Open Natural Interaction Point Cloud Library Robot Operating System Machine Learning Pack Hidden Markov Model

15 INLEIDING 1 Hoofdstuk 1 Inleiding 1.1 Gebarentaal Het begrip gebarentaal verwijst naar een taal waarbij gecommuniceerd of gesproken wordt aan de hand van uitgebeelde gebaren. Dergelijke taal wordt hoofdzakelijk door doven en slechthorenden gebruikt waarbij men het hele lichaam gebruikt om te communiceren en de ogen om te luisteren door middel van interpretatie van uitgebeelde gebaren. In deze sectie zal er dieper worden ingegaan op gebarentaal en zal er onder meer worden gekeken naar de opbouw en het ontstaan van gebarentaal, verder wordt er een vergelijking gemaakt met gesproken taal en als laatste wordt ook nog een woordje uitleg gegeven over de Vlaams Belgische gebarentaal. De toelichtingen tot gebarentaal zullen vrij beperkt zijn en hebben enkel tot doel voldoende inzicht te hebben in gebarentaal om deze masterproef te kunnen begrijpen Het ontstaan van gebarentaal Gebarentaal bestaat al sinds het begin der tijden. De mens zocht namelijk steeds naar manieren om te communiceren en indien dit niet met gesproken taal kon werd het lichaam gebruikt om dingen uit te beelden en op die manier toch communicatie mogelijk te maken. Deze uitbeeldingen waren in het begin echter een eigen uiting die ieder op zijn manier bracht zonder dat er een bepaalde structuur aanwezig was. Dit soort van gebarentaal werd dan ook gebruikt bij communicatie met doven, slechthorenden of anderstaligen, ook in het heden wordt dit soort gebarentaal nog veel gebruikt door toeristen die de lokale taal niet beheersen. Dove mensen begonnen echter hun eigen taal te creëren waardoor er een overvloed aan regiogebonden gebarentalen en dialecten ontstonden, terwijl ook niet-doven een bepaalde vorm van gebarentaal ontwikkelden om te kunnen communiceren zonder dat derden het gesprek

16 1.1 Gebarentaal 2 kunnen volgen. Vanaf 1755, wanneer de eerste school voor doven werd opgericht, begonnen gebarentalen zich vooral nog te ontwikkelen rond deze scholen. Het was pas in de jaren zestig dat men gebarentaal als een officieel communicatiemiddel aanvaarde toen William Stokoe, een Amerikaanse taalkundige, bewees dat gebarentaal net als gesproken talen bestaat uit een aantal bouwstenen. Gebarentalen hebben over het algemeen geen direct verband met de gesproken taal in het land waar de gebarentaal is ontstaan en veelal zijn gebarentalen dan ook van elkaar afgeleid of een combinatie van verschillende andere gebarentalen Gebarentaal en gesproken taal Er wordt nog al eens snel verondersteld dat gebaren zijn vastgelegd oftewel uitgevonden door horenden, echter uit vorige sectie is al snel af te leiden dat dit volkomen verkeerd is en dat de meeste gebaren zijn ontstaan uit het gebruik ervan door doven. Net als gesproken taal heeft ook gebarentaal een volledig alfabet, dat bij de definitie van nieuwe gebaren wel eens wordt gebruikt om een handvorm te bepalen. Zo kan de handvorm de eerste letter van het uit te beelden woord voorstellen, echter bestaat er tussen woorden en gebaren geen enkelvoudig verband. Een gebaar kan dus meerdere woorden voorstellen waarbij het woord enkel bepaald kan worden door inzicht en kennis van de daarrond gebruikte gebaren. Dit zorgt er enerzijds voor dat de gebarentaal minder gebaren bevat dan een gesproken taal woorden bezit terwijl het anderzijds de gebarentaal bemoeilijkt. Ondanks dat er geen direct verband bestaat tussen gebarentaal en gesproken taal zijn er toch gebaren die voor beide een identieke betekenis hebben en dan ook binnen beide talen worden gebruikt. Deze gebaren zijn dan ook door iedereen verstaanbaar verondersteld zoals bijvoorbeeld een duim omhoog voor goed en een duim omlaag voor slecht. Verder zijn er ook nog andere gebaren uit de gebarentaal die intuïtief herkenbaar zijn omdat ze een eigenschap, handeling of kenmerk van een woord voorstellen. Zo is er bijvoorbeeld auto alsook rijden waarbij de handen een denkbeeldig stuur vasthouden, jagen waarbij men een denkbeeldig vuurwapen vasthoud en duwen waarbij men de hand van zich weg duwt. Dus het is niet zo dat gebarentaal volledig onverstaanbaar is, er zijn gebaren die door iemand zonder enige kennis van gebarentaal verstaanbaar zijn. Toch zijn er ook nog steeds veel gebaren die zonder kennis niet geplaatst kunnen worden of dat iets verkeerd wordt geïnterpreteerd omdat een gebaar meerdere betekenissen bezit die afhankelijk zijn van de context. De overstap van gesproken taal naar het leren van gebarentaal is ook niet voor iedereen even eenvoudig omdat de persoon in kwestie geneigd is de woordvolgorde van de gesproken taal uit te beelden terwijl deze volgorde in gebarentaal veelal verschillend is net zoals dit het geval is tussen vele verschillende gesproken talen.

17 1.1 Gebarentaal De opbouw van gebarentaal Om deze masterproef te kunnen verwezenlijken en dus ook deze scriptie te kunnen volgen is het belangrijk om voldoende inzicht te hebben in de opbouw van gebarentaal. Allereerst is het belangrijk om te begrijpen dat gebarentaal zich in vier dimensies uit doordat er gebruik wordt gemaakt van de driedimensionale ruimte rondom het lichaam maar ook van een extra dimensie die de tijd voorstelt. Een gebaar kan namelijk uit meerdere handelingen bestaan waardoor de tijd mee in rekening moet worden gebracht. Daarnaast is een gebaar opgebouwd uit een aantal onderdelen zoals een woord in gesproken taal is opgebouwd uit verscheidene klanken. En net zoals bij deze klanken hebben de onderdelen op zich geen betekenis, maar kunnen ze samen toch het gebaar voor een woord voorstellen. volgende: Deze onderdelen zijn de ˆ De handvorm. Er zijn een aantal handvormen in gebarentaal die op zich geen betekenis hebben maar in combinatie met de andere onderdelen toch een gebaar kunnen vormen. Het gaat hier dan wel om gebaren die verschillen van de handvormen voor het alfabet aangezien de gebaren voor deze laatste vrij statisch zijn. ˆ De rotatie van de hand. Door de rotatie van de hand die een bepaalde vorm heeft kan men een bepaalde handvorm voor meerdere gebaren gebruiken. Er bestaan dan ook gebaren die door een simpele rotatie van de hand een andere betekenis krijgen. Zo is er bijvoorbeeld het gebaar voor Antwerpen dat een duim omhoog is ter hoogte van de schouder terwijl bel een duim in horizontale richting is ter hoogte van de schouder. ˆ De positie van de handen ten opzichte van het lichaam. Ook de positionering van de handen kan een invloed hebben op het gebaar, echter is het moeilijk om hier een voorbeeld van te geven omdat een gebaar meestal gepaard gaat met een beweging die dan ook nog eens hetzelfde moet zijn. ˆ De verplaatsing van de handen. De manier waarop de handen verplaatst worden kan voor dezelfde rotatie en handvorm een andere betekenis aan een gebaar geven. Zo zijn de gebaren boven en hoog zeer gelijkaardig op de beweging na, hoog zal namelijk een grotere verticale verplaatsing hebben dan boven. Naar aanleiding van de hier vernoemde onderdelen zal in deze masterproef gewerkt worden met zowel de handen als de vingers waarbij de positie en richting van de handen en vingers

18 1.2 Mogelijke use-cases 4 in rekening worden gebracht alsook de tijd om de verplaatsing mee in rekening te brengen. De handvorm zit dan reeds mee vervat in de data voor de vingers. Ook de samenwerking van beide handen is belangrijk in de gebarentaal, zo zijn er gebaren met maar één hand (bel, Antwerpen, hoog, boven) alsook gebaren die een uitbeelding met twee handen vereisen (auto, rijden, fietsen, aanvallen, aanhalingsteken). Er zijn daarnaast ook nog gebaren waarbij de twee handen worden gebruikt om individuele gebaren voor te stellen die een verband hebben, op die manier kan er meer data in een tijdsmoment worden overgebracht met gebarentaal, wat met gesproken taal onmogelijk is. Met dit laatste zal binnen deze masterproef geen rekening worden gehouden. Met het gebruik van twee handen zal wel rekening moeten worden gehouden in deze masterproef, er zullen dus zowel gebaren met één hand als met twee handen worden gebruikt. Als laatste moet er nog worden toegevoegd dat de ruimte rond de gebruiker een belangrijke rol speelt en een bepaalde positie in die ruimte kan gebruikt worden in combinatie met een gebaar om een geografische positie of een bepaalde persoon aan te duiden Vlaamse gebarentaal In deze sectie wordt vrij beknopt wat gezegd over de Vlaamse gebarentaal omdat dit de gebarentaal is waarmee binnen deze masterproef wordt gewerkt. Alle gebruikte en detecteerbare gebaren zullen dus uit de set van Vlaamse gebaren komen, [1] is een goede bron voor de gebaren alsook extra informatie. De Vlaamse gebarentaal is een gebarentaal die tot dezelfde familie van talen behoort als de Nederlandse, Franse en Amerikaanse gebarentaal. Ze is ontstaan in België en meer precies in Vlaanderen. Na onderzoek is aangetoond dat de gebarentalen uit de verschillende provincies in Vlaanderen meer gelijkenis hebben dan men oorspronkelijk dacht, waardoor men het geheel dus omvat onder de term Vlaamse gebarentaal. Echter was het pas in 2006 dat de Vlaamse gebarentaal officieel erkend werd door het Vlaams Parlement als volwaardige taal voor de dovengemeenschap. Aan deze erkenning ging een lange strijd van de Vlaamse dovengemeenschap vooraf. Zo een strijd is een blijvend fenomeen dat optreedt bij de poging tot erkenning van verscheidene gebarentalen. 1.2 Mogelijke use-cases In deze sectie zullen enkele mogelijke scenarios besproken worden waarbij het herkennen van gebaren met de Kinect zijn nut kan hebben en het leven van de gebruikers kan vereenvoudigen.

19 1.2 Mogelijke use-cases Scenario één: Communicatie met een stomme Stel je een situatie voor tussen twee personen waarvan één persoon stom is waarbij deze een conversatie willen of moeten voeren. De stomme zal gebarentaal beheersen en dit als hoofdzakelijk communicatiemiddel gebruiken, terwijl de tweede persoon wel kan spreken en dus gesproken taal als communicatiemiddel prefereert. Indien bidirectionele communicatie tussen deze twee personen vereist is zal dit moeilijkheden met zich meebrengen. De stomme kan wel verstaan en interpreteren wat de tweede persoon zegt maar voor deze tweede persoon is het moeilijk of onmogelijk om te begrijpen wat de stomme wil zeggen omdat hij geen kennis bezit van gebarentaal. Er zijn een aantal mogelijke oplossingen voor dit probleem die nu bekeken zullen worden. Ten eerste kan er een tolk worden ingezet om de gebarentaal te interpreteren en om te zetten naar gesproken taal. Dit zal echter een deel van de privacy wegnemen aangezien de tolk te allen tijde aanwezig moet zijn tijdens het gesprek. Bovendien dient men de tolk te vertrouwen om correcte vertalingen te maken en geen eigen interpretatie te geven aan de gebarentaal. Een tolk brengt uiteraard ook een kost met zich mee die met ieder uur stijgt en afhankelijk is van de prijs die de tolk vraagt voor zijn diensten. Een tweede oplossing is dat de stomme een speciale handschoen aandoet die gebaren kan detecteren en deze omzet naar tekst op een zichtbare display. Nog beter is het rechtstreeks omzetten van gebaren naar spraak met dergelijke handschoenen. Deze handschoenen bestaan reeds en maken gebruik van inwendige sensors, accelerometers, gyroscopen en kompassen voor de detectie van gebaren. Ze zijn echter niet erg praktisch in gebruik omdat ze de bewegingsvrijheid van de gebruiker beperken en zijn bovendien nogal duur. Een laatste oplossing is het systeem dat in deze masterproef verwezenlijkt zal worden waarbij de Kinect of een andere gesture recognition camera gebruikt kan worden. In deze masterproef wordt er een Kinect gebruikt die commercieel verkrijgbaar is voor 100,00, wat in vergelijking met een handschoen of een tolk niet veel is. Verder zal de bewegingsvrijheid niet beperkt worden zoals bij de handschoen, de enige beperking die hier nog rest is dat de gebruiker zich in het gezichtsveld van de camera moet bevinden opdat de gebaren herkend zouden worden. Na het bepalen van de gebaren kan de uitgebeelde zin worden weergegeven als tekst of zelfs als gesproken taal worden afgespeeld via luidsprekers. Het systeem dat ik hierbij in gedachten heb kan dus gebruikt worden om een conversatie met een stomme mogelijk te maken.

20 1.3 Doelstelling Scenario twee: Het aanleren van gebarentaal Om te kunnen communiceren met een doofstomme ben je genoodzaakt zelf gebarentaal te begrijpen en te kunnen uitbeelden. Uiteraard kan je hiervoor lessen volgen via avondschool of in bepaalde studierichtingen. Maar je kan gebarentaal ook op jezelf leren, er bestaan tal van boeken over gebarentaal, gaande van de geschiedenis en evolutie tot het zelf uitvoeren van gebarentaal. Er is echter één probleem bij het leren van gebarentaal op jezelf en dat is dat je niet kan controleren of je de gebaren correct uitvoert zodat een stomme of doofstomme ze kan begrijpen. Hier kan het systeem dat in deze masterproef ontwikkeld werd een handig hulpmiddel zijn. Het enige dat je nodig hebt is een Kinect camera en een boek of online cursus voor het leren van gebarentaal. Je kan de gebaren dan uitvoeren voor de Kinect om na te gaan of je ze goed uitvoert. Indien de Kinect de gebaren niet kan herkennen weet je dat er een fout is in de uitvoering en kan je vervolgens nagaan wat deze fout is. Uiteraard ben je niet beperkt tot de Kinect en zou deze methode in theorie ook mogelijk moeten zijn met andere gesture recognition camera s. 1.3 Doelstelling De ultieme doelstelling van deze masterproef is het detecteren van gebaren in ware tijd, en dit specifiek door gebruik te maken van 3D data voor de handen die verkregen kan worden met behulp van de Kinect camera. Door te focussen op de 3D data voor de handen moet het in theorie mogelijk zijn om gelijkaardige gebaren van elkaar te kunnen onderscheiden, wat dan ook wordt nagegaan binnen deze masterproef.

21 VOORGAANDE STUDIES 7 Hoofdstuk 2 Voorgaande studies Er is in het verleden reeds onderzoek gebeurd rond het herkennen van gebarentaal om de grote achterstand ten opzichte van spraakherkenning weg te werken. In dit hoofdstuk zal een overzicht worden gegeven van verscheidene studies die reeds gebeurd zijn. 2.1 Verwerven van data voor de handen Alvorens over te kunnen gaan tot het herkennen van gebaren moet men eerst in staat zijn om de nodige lichaamsdelen, met name de handen terug te vinden in videobeelden. Om dit te verwezenlijken zijn meerdere methoden bedacht. Eén van deze methoden die ook nu nog regelmatig wordt gebruikt bij onderzoek rond het herkennen van gebarentaal is segmentatie aan de hand van huidskleur. Hierbij worden pixels die een huidskleur voorstellen uit de data gefilterd voor verder gebruik. Argyros onderzocht in [2] dergelijke methode waarbij een Bayesian classifier werd gebruikt om de juiste pixels te bepalen. Deze methode bleek heel robuust en onafhankelijk van veranderingen in lichtcondities te zijn. Ook uit ander onderzoek [3] is gebleken dat gebruik van een Bayesian classifier tot de beste resultaten leidt voor het herkennen van lichaamsdelen aan de hand van huidskleur. Deze methode vereist echter wel dat de gebruikers kleding met lange mouwen dragen indien men de handen verder wil analyseren. Later werd er gebruik gemaakt van zowel 2D als 3D data om de handen van een persoon te verkrijgen ten einde deze te gebruiken voor het herkennen van gebaren [4]. Bij deze combinatie zal men de intensiteit van 2D beelden gebruiken om te segmenteren op huidskleur waardoor de handen en het hoofd gevonden worden. Vervolgens wordt de dieptedata gebruikt om de handen van het hoofd te onderscheiden, hierbij gaat men er vanuit dat de handen zich dichter bij de camera bevinden dan het hoofd. Uit de resultaten bleek de methode snel en robuust

22 2.2 Herkenning van gebaren 8 te zijn. Er traden echter wel problemen op wanneer de afstand tot de camera en intensiteit van de handen hetzelfde waren als deze van het hoofd. Hierdoor wordt het moeilijk om te bepalen wat de handen zijn en wat het hoofd is waardoor foute voorspellingen optreden. Naast het werken met huidskleur of een combinatie van 2D en 3D data werd er ook nog gebruik gemaakt van enkel 3D data onder de vorm van een dieptemap. Zowel de Universiteit van Stanford als Microsoft hebben hier onderzoek rond gedaan [5] [6]. Het onderzoek van Stanford heeft aangetoond dat het mogelijk is om alle pixels die een persoon voorstellen uit dieptedata te verkrijgen en hieruit verder een aantal belangrijke punten te gebruiken om lichaamsdelen te onderscheiden. Microsoft heeft soortgelijk onderzoek gedaan waarbij gebruik werd gemaakt van een pixel per pixel analyse. Zo kunnen zeer nauwkeurig verschillende lichaamsdelen van elkaar onderscheiden worden zonder enige afhankelijkheid van de lichaamsbouw of houding van de gebruiker. Deze methoden worden nu toegepast voor onder meer gaming, human-computer interactie en in de gezondheidszorg. Naast het verkrijgen van data over de nodige lichaamsdelen is er bij gebarentaal, zoals in het vorige hoofdstuk beschreven ook nog een beweging aanwezig. Deze bewegingen zouden mee in rekening moeten gebracht worden. In [7] wordt de beweging van een gebruiker en individuele lichaamsdelen bekeken. Hierbij maakt men gebruik van de GPU om het filter algoritme te versnellen, echter behaalde men nog steeds slechts vier tot zes frames per seconde met vrij goede accuraatheid. 2.2 Herkenning van gebaren Voor de detectie van gebaren in gebarentaal zal men deze meestal opsplitsen in subunits die dan apart geclassificeerd worden om vervolgens de resultaten van deze classificaties terug samen te brengen ten einde het gebaar te kunnen herkennen. De meest gebruikte subunits zijn de handvorm, rotatie en positie zoals in hoofdstuk 1 reeds beschreven werden, beweging is ook nog een mogelijke subunit maar wordt meestal achterwege gelaten. Bij het detecteren van gebaren met subunits wordt het probleem van gebarentaalherkenning dus als het ware opgesplitst in meerdere deelproblemen. Voor elk van de deelproblemen zal men dan een toestand bepalen. Ter bepaling van deze toestanden worden technieken uit het machinaal leren gebruikt. In een laatste stap worden dan de toestanden van de verschillende subunits samengenomen om het gebaar te bepalen. De resultaten die in het onderzoek met subunits zijn besproken [8] [9] [10] [11] [12] zien er veelbelovend uit. De laatste publicatie is hierbij veruit de meest interessante omdat ze gebruik hebben gemaakt van een grote data set (bijna 1000 gebaren) waarbij meerdere methodes worden bekeken. Bij deze grote dataset halen ze

23 2.3 Herkening van gebaren met de Kinect 9 een nauwkeurigheid van 73% terwijl de nauwkeurigheid op een dataset van 20 gebaren 99,9% bedraagt. Verder volgde hier ook uit dat de nauwkeurigste resultaten bekomen worden door gebruik te maken van 3D in plaats van 2D data. Naast het detecteren van gebarentaal waarbij gebruik wordt gemaakt van een dataset is er ook reeds onderzoek verricht rond het filteren van gebaren uit een vloeiende reeks aaneengesloten gebaren. Hieruit zijn dan ook algoritmes ontstaan die in staat zijn om vrij nauwkeurig bepaalde gebaren uit een reeks opeenvolgende gebaren te filteren zonder dat hierbij gebruik wordt gemaakt van gekleurde handschoenen of handschoenen met sensoren [13] [14]. Beide publicaties zijn van dezelfde auteurs en nauw verwant met elkaar. In een eerste stap bleek de gebruikte techniek kleine problemen te ondervinden bij het filteren van een gebaar door de verschillende contexten waarin het gebruikt kan worden. Hierbij was het de overgang tot het betreffende gebaar die soms moeilijk te detecteren was. Van dit probleem was in de tweede publicatie geen sprake meer, noch werd er een oplossing voor dit probleem beschreven. In [15] wordt er nog een ander medium gebruikt om een systeem voor herkenning van gebaren te trainen. Er wordt namelijk gebruik gemaakt van een TV-programma met gebarentaal en ondertiteling om het systeem te trainen. De resultaten van deze methode bleken positief te zijn bij gebruik van een state-of-the-art tracker voor het bovenlichaam, data die de handen beschrijven en een enorme hoeveelheid trainingsdata. Aan de andere kant zijn er ook onderzoekers die de training van het systeem zo laag mogelijk willen houden zonder al te veel aan accuraatheid in te boeten. In [16] is men erin geslaagd, aan de hand van Hidden Markov Modellen, om 164 gebaren te herkennen met een nauwkeurigheid van 74%, waarbij ieder gebaar slechts 10 keer werd gebruikt voor training. 2.3 Herkening van gebaren met de Kinect Uiteraard is er ook reeds onderzoek verricht rond herkenning van gebarentaal door gebruik te maken van de Microsoft Kinect camera. Het voordeel van een Kinect camera is niet zo zeer de beeldkwaliteit, want deze is lager dan vele andere camera s die gebruikt worden voor herkenning van gebaren. De Kinect is echter een goedkope camera die naast RGB-beelden ook 3D data opneemt. In [17] wordt bijvoorbeeld de Kinect gebruikt in een aangepaste versie van een bestaand spelletje om gebarentaal te leren aan kinderen, waardoor deze geen handschoenen met sensoren meer moeten dragen. Volgens de resultaten is de prestatie met gebruik van de Kinect vergelijkbaar aan die van de oudere versie, maar is het best dat de gebruiker rechtstaand speelt omdat een zittende houding resulteert in fouten voor het skelet-

24 2.3 Herkening van gebaren met de Kinect 10 tracking algoritme dat de gebruikers moet detecteren. Dit probleem met de zittende houding is voor de in deze masterproef besproken implementatie van gebarentaal herkenning echter geen probleem geweest. Verder heeft [18] aangetoond dat gebruik van GPU acceleratie in combinatie met de Kinect en een goede optimalisatie kan resulteren in robuuste en efficiënte tracking van de volledige handvorm en dit aan een framerate van 15Hz. Binnen mijn onderzoek was er echter geen mogelijkheid om gebruik te maken van GPU acceleratie omdat er met eigen hardware gewerkt werd. Deze hardware bevat geen Nvidia kaart, wat het gebruik van GPU acceleratie dus onmogelijk maakt.

25 APPARATUUR EN SOFTWARE 11 Hoofdstuk 3 Apparatuur en Software 3.1 Microsoft Kinect Figuur 3.1: De Microsoft Kinect camera. De Microsoft Kinect [19] is geen camera met de functionaliteiten van een webcam. De Kinect is tot veel meer in staat door de combinatie van een RGB-camera, een diepte-sensor en een ingebouwde microfoon. Deze drie ingrediënten zijn verpakt in een rechthoekige behuizing die rust op een kleine voet. Tussen deze behuizing en de voet zit nog een mechanisme om de camera in de juiste positie te kunnen zetten zonder enige manuele ingreep. Om een beter idee te geven hoe deze camera er in werkelijkheid uitziet kan u Figuur 3.1 raadplegen. De RGB-camera is vrij standaard en neemt gewoon kleurenbeeld op. Deze camera heeft een 8-bit VGA resolutie van 640 bij 480 pixels met een Bayerfilter om de kleuren te bepalen. Een Bayerfilter is een kleurenfilter dat gebruik maakt van speciale algoritmes om alle kleuren uit een beeld te reconstrueren met enkel rode, blauwe en groene pixels. Hierdoor kan de kleur van een pixel niet op zich bepaald worden, maar dienen de kleuren van naburige pixels ook gekend te zijn om de originele kleur van een pixel te reconstrueren. Dergelijk filter of

26 3.1 Microsoft Kinect 12 varianten ervan worden veelal toegepast in digitale camera s. De diepte-sensor bestaat uit een infrarood lichtbundel die een puntenpatroon projecteert op de zichtbare ruimte, wat door een CMOS sensor gedetecteerd wordt. Een CMOS sensor kan de diepte van een object bepalen aan de hand van het lichtpatroon dat erop geprojecteerd wordt. Doordat de Kinect zijn eigen lichtpatroon uitstuurt is hij niet afhankelijk van de belichting binnen de omgeving, hij zal dus ook detectie en tracking kunnen uitvoeren in een donkere kamer. Er is tijdens het testen echter wel gebleken dat de belichting de accuraatheid in kleine mate beïnvloedt, en reflecties van zonlicht aanleiding kunnen geven tot fouten. De diepte-sensor creëert net zoals de RGB-camera een video stream met een resolutie van 640 bij 480 pixels waarbij een diepte van 11 bit wordt gebruikt. Dit resulteert in 2048 detectieniveaus. Een voorbeeld van het dieptebeeld en het geprojecteerde puntenpatroon is te zien in Figuur 3.2. De combinatie van zowel de RGB-camera als diepte-sensor stelt de Kinect in staat om de positie van objecten en personen in het zichtbare bereik te bepalen. Dit zichtbare bereik bedraagt ongeveer een 6 m 2 gecentreerd voor het toestel. Naast het bepalen van de positie is de Kinect ook in staat om personen te onderscheiden van de omgeving waarbij vervolgens bepaalde bewegingen herkend kunnen worden. Het detecteren en traceren van meerdere personen is ook mogelijk. Figuur 3.2: Het dieptebeeld met niveaus (links) en het lichtpatroon uitgestuurd door de Kinect (rechts). De ingebouwde microfoon maakt het mogelijk om gesproken commando s te herkennen en de daarbij horende actie uit te voeren. Oorspronkelijk was de Kinect het antwoord van Microsoft op het Move systeem van Sony en de Wii van Nintendo, waarbij alle drie deze technologieën bedoeld zijn als entertain-

27 3.1 Microsoft Kinect 13 mentsysteem of als toevoeging aan een entertainmentsysteem. Maar voor de Kinect bleef het niet bij het gebruik voor entertainment omdat de mensen meer potentieel zagen voor het toestel. Velen begonnen te experimenteren met het toestel waarbij het uiteindelijk gehackt werd. Een kleine zeven maanden na deze hack heeft Microsoft een Kinect SDK vrijgegeven voor Windows zodat het publiek programma s kon gaan ontwikkelen voor de Kinect. Deze SDK was echter vrij beperkt en liet enkel ontwikkeling toe met C++, C# en Visual Basic. Ondertussen zijn er ook al open-source varianten beschikbaar die de functionaliteiten van de Windows Kinect SDK bezitten met nog extra uitbreidingen. Zo zijn er onder andere OpenKinect en OpenNi die communicatie met de Kinect toelaten en zijn er functionaliteiten van de Kinect opgenomen in raamwerken voor 3D bewerking en robotics zoals PCL en ROS. We zullen nu enkele sectoren opsommen waarvoor de Kinect nuttig kan zijn en waarrond reeds onderzoek is verricht. ˆ Gezondheidszorg In de gezondheidszorg en specifiek in ziekenhuizen draait alles rond het minimaliseren van het risico op besmetting voor de patiënten. Zo zijn dokters verplicht zicht te scrubben vooraleer ze een steriele ruimte betreden, ook al is het maar voor één minuut. Verder worden operaties tegenwoordig gedaan aan de hand van 3D-videobeelden die de dokter begeleiden, net zoals een GPS je de weg wijst in de auto. Maar natuurlijk is het niet handig om telkens te moeten scrubben indien de beelden bekeken of aangepast worden, aangezien dit tijd kost waardoor de operatie langer zal duren. Die aanpassingen gebeuren normaal in een andere ruimte omdat het gebruik van toetsenbord, muis of touchscreen gevaar met zich meebrengt, deze kunnen namelijk bacteriën dragen. De Kinect zou hiervoor een oplossing kunnen bieden omdat de dokter dan in staat is om de beelden met intuïtieve bewegingen aan te passen naar wens zonder enige apparatuur te moeten aanraken [20][21]. ˆ Commercieel E-shoppen wint steeds meer aan populariteit, maar hoe kan je nu voor het overgaan tot een aankoop weten of een bepaald kledingstuk je siert? Hierbij kan de Kinect een handige tool zijn om de kledingstukken virtueel aan te doen. Je gaat voor de camera staan, kiest een kledingstuk en vervolgens zie je jezelf met het kledingstuk aan. Er zijn reeds applicaties ontwikkeld die dit mogelijk maken [22]. De reacties van klanten die dergelijk systeem getest hebben waren positief, maar het kost nog wel vrij veel tijd en moeite om een virtuele bibliotheek met de kleren aan te maken. ˆ Onderwijs

28 3.2 ROS ( Robot Operating System) 14 In het hedendaags onderwijs tracht men de interactie tussen leerkrachten en leerlingen alsook tussen leerlingen onderling te vergroten, en dit vooral in het lager onderwijs. Op deze manier wil men de aandacht van de leerlingen langer bij de les houden en tegelijkertijd het lesgeven geen routinewerk maken voor de leerkracht. Met de intrede van het interactief bord (beter bekend als smartboard) is men hier dan ook gedeeltelijk in geslaagd en kunnen de leerlingen zelf meer input leveren tijdens de lessen. Maar met de Kinect zou men dit nog verder kunnen drijven. Door zijn eenvoudige en intuïtieve bediening kan men beelden die verschijnen aanpassen of er aantekeningen aan toevoegen. Bovendien kan de Kinect meerdere gebruikers detecteren en volgen waardoor met meer personen tegelijk kan worden gewerkt op éénzelfde beeld. Ook de prijs van de Kinect in vergelijking met die van een smartboard maakt de overstap interessant. Uit onderzoek blijkt dat een Kinect meer interactie veroorzaakt en bijna alle functionaliteiten bezit van een interactief bord [23]. Dit zijn nog maar enkele voorbeelden waarbij de Kinect nuttig kan zijn. [24] Geeft nog een aantal mogelijke situaties waarin of waarvoor de Kinect nuttig kan zijn. 3.2 ROS (Robot Operating System) ROS is een software raamwerk dat vooral gebruikt wordt voor het sturen van robots van allerlei soort. Maar ook de medewerkers van het ROS raamwerk hebben het potentieel van de Kinect gezien en deze dan ook opgenomen in het raamwerk. Er zijn vervolgens enkele Kinect demo s ter beschikking gekomen die in de repository eenvoudig zijn terug te vinden onder een gegroepeerde naam mit-ros-pkg. Onder deze demo s zijn onder andere handdetectie, vingerdetectie, virtueel piano spelen en nog meer terug te vinden. De voor deze masterproef meest interessante demo was de vingerdetectie. Deze zou gebruikt kunnen worden om zowel de handen als de vingers te detecteren. Met de data van zowel handen als vingers ter beschikking hoopte ik meer accurate resultaten te kunnen bekomen bij het herkennen van gebaren dan bij voorgaande studies [25]. Meer informatie over dit raamwerk en de vingerdetectie zit vervat in Bijlage A. 3.3 PCL (Point Cloud Library) PCL is een open source raamwerk dat verscheidene state of the art algoritmes implementeert voor het analyseren en bewerken van n-dimensionale puntenwolken. Deze puntenwolken kunnen van een omgeving, een bepaald object of zelfs personen afkomstig zijn. Wat het inter-

29 3.4 OpenNI 15 essantste is zijn de 3D analyse en bewerkingen om bijvoorbeeld objecten, personen of zelfs hele omgevingen in 3D te reconstrueren aan de hand van beelden die met een 2D camera zijn opgenomen. Hierbij kan onder andere gebruik worden gemaakt van de storingen in de camerabeelden om de 3D reconstructie te verbeteren. Er kan ook gebruik worden gemaakt van camera s zoals de Kinect die reeds diepte informatie meegeven van de beelden zodat het behandelen van de beelden vereenvoudigd kan worden. Voor meer informatie over PCL verwijs ik u door naar Bijlage B. PCL was voor deze masterproef vooral interessant omdat het vele functies bevat om met 3D data te werken. Deze functies werden ook reeds gebruikt in de vingerdetectie van ROS waardoor het interessant was om de bruikbaarheid van PCL na te gaan. 3.4 OpenNI OpenNI oftewel Open Natural Interaction is een open source SDK die toelaat om software te ontwikkelen voor 3D camera s. De Kinect valt ook onder deze categorie en wordt ondersteund door de SDK. Let wel op dat de ondersteuning voor de Kinect onder Linux distributies niet langer aanwezig is in versie 2.0 en het dus het gebruik van een eerdere versie oplegt. De oorzaak hiervan is dat de SDK bij detectie van een Kinect in versie 2.0 gebruik zal maken van de MS Kinect SDK die niet werkt op Linux. De OpenNI SDK bevat vele voorbeeldapplicaties in verscheidene programmeertalen, die zeer nuttig zijn om op verder te werken. Er zijn ook reeds boeken verschenen over het gebruik van deze SDK die nuttig zijn geweest tijdens de uitvoering van deze masterproef. Het interessante aan OpenNI is de skelet tracking die de programmeur in staat stelt om skeletten (gebruikers) te detecteren via de Kinect. Hieruit kan dan de positie van de ledematen bepaald worden om zo sneller naar de vingers te kunnen zoeken. Aangezien de installatie van deze SDK niet moeilijk is en duidelijk beschreven staat op de webpagina [26] zal er niet verder op worden ingegaan. 3.5 MLPack Mlpack [27] is een C++ bibliotheek die een vrij compleet pakket met functionaliteiten voor machinaal leren voorziet. Zo omvat het verschillende soorten algoritmes die gebruikt kunnen worden waarvan de Hidden Markov Model subbibliotheek het meest interessant is voor deze masterproef. Deze bibliotheek is relatief eenvoudig in gebruik eens de manier van input begrepen is, er wordt verder actief ondersteuning geboden voor alle vragen. Vragen worden

30 3.5 MLPack 16 dus vrij snel (binnen de week) beantwoord en moedigt de ontwikkelaars aan tot uitbreiding van de bibliotheek met meer functionaliteiten en documentatie. Wat de Hidden Markov Model bibliotheek betreft kunnen het Forward, Backward, Viterbi en Baum-Welch algoritme worden gehanteerd. Er kan dus eenvoudig een HMM worden getraind of een voorspelling worden gemaakt met logaritmische probabiliteiten door gebruik te maken van een eerder getrainde HMM.

31 DE VINGERDETECTIE 17 Hoofdstuk 4 De vingerdetectie Er is reeds gesproken over de functionaliteiten van ROS, PCL en OpenNI wat bestaande raamwerken zijn die in verband staan met de Kinect. Zo bevat ROS een hand- en vingerdetectie terwijl PCL meer gefocust is op de bewerking van 3D puntenwolken en OpenNI de nodige functionaliteiten bevat om met de Kinect te communiceren en gebruikers te tracken. Elk raamwerk heeft zijn voordelen en in een initiële fase van deze masterproef zou er één van de bestaande raamwerken gebruikt en aangepast worden om er de nodige data voor classificatie mee te verkrijgen. Echter wogen de voordelen van de raamwerken niet op tegen de nadelen en is er besloten om zelf een vingerdetectie te implementeren. Deze nadelen omvatten het ontbreken van een hand of vingerdetectie in OpenNI en PCL en de lage prestatie van ROS vanwege het publish-subscribe systeem waarmee de modules onderling communiceren, waardoor dan ook nog eens dataverlies optreedt. De eigen implementatie moest in staat zijn om de data die nodig is voor classificatie van gebaren te verkrijgen. Deze data omvat een positie en richtingsvector voor zowel de hand als iedere gedetecteerde vinger. Dit hoofdstuk zal de eigen implementatie van vingerdetectie toelichten met daarbij een aantal geteste methodes om tot de uiteindelijke versie te komen. Iedere sectie in dit hoofdstuk zal een stap van de vingerdetectie behandelen waarbij regelmatig enkele resultaten worden aangehaald. 4.1 Kalibratie van een nieuwe gebruiker De kinect bezit de mogelijkheid om een gebruiker te detecteren via de bibliotheken van OpenNI. Echter is het detecteren van een gebruiker niet voldoende en dient de camera voor de gedetecteerde gebruiker gekalibreerd te worden. Indien gebruik wordt gemaakt van versie 1.3 of een eerdere versie van OpenNI dient de gebruiker voor kalibratie van de camera

32 4.2 Het creëren van een 3D puntenwolk 18 een bepaalde houding aan te nemen. Deze houding bestaat eruit dat de gebruiker naar de camera kijkt en beide handen alsook onderarmen in de lucht steekt zodat de bovenarmen een horizontale houding ter hoogte van de schouders aannemen zoals in Figuur 4.1. Vanaf versie 1.5 is er een autokalibratie voorzien die geactiveerd kan worden zodra een gebruiker gedetecteerd is. Dit neemt het ongemak van de nood voor een kalibratiehouding dus weg, wat zeker wenselijk is voor de vingerdetectie. Toch zal de autokalibratie nog steeds een obstakel vormen om gebruik te maken van een dataset met gebaren. Eens de camera gekalibreerd is voor een gebruiker kunnen de posities van vijftien punten op het lichaam worden verkregen. Deze punten zijn het hoofd, de nek, de romp (zijnde een centraal punt op de borstkas), de linkerschouder, de linkerelleboog, de linkerhand, de linkerheup, de linkerknie, de linkervoet en de rechter varianten van de laatste zes uit deze lijst. Een deel van deze punten zijn ook in Figuur 4.1 (rechts) te zien als contactpunten van de getekende lijnen. In de volgende sectie zal het nut van deze posities worden aangehaald. Figuur 4.1: OpenNI kalibratiehouding. 4.2 Het creëren van een 3D puntenwolk De nood om een 3D puntenwolk te creëren van de camerabeelden ontstaat door gebruik te maken van de functionaliteiten die PCL biedt in plaats van deze zelf te gaan implementeren. Wetende dat OpenNI een kleurenmap alsook een dieptemap van het beeld zoals gezien door de Kinect levert kan er eenvoudig een omzetting gebeuren van de dieptemap naar een 3D puntenwolk (bij deze omzetting is het belangrijk er rekening mee te houden dat de afstanden in een dieptemap van OpenNI in millimeter zijn uitgedrukt terwijl dit voor een PCL-puntenwolk in meter wordt verondersteld). De omzetting van een dieptemap naar een puntenwolk zal

33 4.3 Voorbehandeling van de puntenwolk voor de hand 19 een aantal berekeningen per punt, of pixel, met zich meebrengen en dus enige tijd vragen. Aangezien een near-real-time vingerdetectie gewenst is, is het belangrijk om de rekentijd te minimaliseren. Hierdoor is er besloten om niet de gehele dieptemap om te zetten in een puntenwolk, maar in plaats daarvan enkel de belangrijke data op te nemen in de puntenwolk. Onder de belangrijke data vallen de punten die binnen de omgeving liggen waarbinnen gebaren kunnen plaatsvinden, zijnde een volledige armlengte aan weerszijden van de romp en van de heupen tot een halve armlengte boven de positie van het hoofd. Dit bleek echter nog steeds een overvloed aan informatie te zijn en dus is er nog een extra beperking opgelegd met positieve invloed op de prestatie. Er is namelijk beslist om enkel de data rond de handen op te nemen in een puntenwolk aangezien enkel deze data nodig is voor de detectie van de vingers. Hier komen dan ook de posities voor rechter- en linkerhand, zoals verkregen via OpenNI, goed van pas. Er zal namelijk een kubus rond iedere hand worden gelegd met de positie van de hand als centraal punt, waarna een puntenwolk wordt gecreëerd van alle punten binnen de kubus. De halve lengte van de zijden van deze kubus kan worden ingesteld met een parameter die standaard op elf centimeter is ingesteld om een verscheidenheid van handgroottes te kunnen behandelen. Om nog even samen te vatten zijn er in deze stap puntenwolken gecreëerd voor iedere hand, met mogelijk nog wat ruispunten die binnen de kubus vielen en in een later stadium worden weggefilterd. Indien een hand niet gedetecteerd werd of de onzekerheid van de detectie ervan hoger is dan vijftig procent, wordt de hand in kwestie niet behandeld. Door toepassing van de hier beschreven methode worden de bewerkingen om tot puntenwolken voor de handen te komen geminimaliseerd om zo de prestatie van deze fase te maximaliseren. 4.3 Voorbehandeling van de puntenwolk voor de hand Alvorens over te gaan tot de effectieve vingerdetectie wordt er eerst een kleine voorbehandeling uitgevoerd op de puntenwolken voor de handen: er wordt nagegaan of de hand open of gesloten is. Een puntenwolk zoals verkregen uit OpenNI door omzetting is te zien in Figuur 4.2. Hou er wel rekening mee dat de puntenwolk in de figuur een omzetting is naar 2D, dit zal in figuren veelal het geval zijn om het eenvoudiger interpreteerbaar te maken. Om na te gaan of een hand open is zullen de eigenwaarden voor de drie dimensies van de puntenwolk worden berekend, waarna deze met elkaar worden vergeleken. Als het resultaat van deze vergelijking lager is dan een opgelegde grens (zoals in de ROS hand-detectie werd gebruikt) kan er besloten worden dat de hand gesloten is. De afwijking tussen de eigenwaarden is namelijk laag in het geval de hand een vuist vormt. Echter is deze manier van werken niet goed genoeg aangezien het opsteken van één vinger slechts een marginale invloed zal hebben

34 4.4 Detectie van de vingers 20 op de eigenwaarden en dus moeilijk te detecteren valt. Om dit te compenseren wordt er, na het besluiten dat de hand gesloten is, nog een extra controle uitgevoerd. Bij deze controle wordt gezocht naar de grootste x en de grootste y afstand voor de hand, er wordt dus gezocht naar een metrieke afstand voor de dimensies van de hand. Het berekenen van de maximale z afstand is hierbij overbodig omdat een vinger die recht naar de camera wijst niet gezien wordt door de Kinect. Vervolgens zal de maximale x afstand vergeleken worden met de maximale y afstand om na te gaan of er alsnog een vinger is uitgestoken en de hand als open aanzien moet worden. Het geval waarbij vijf vingers zijn uitgestoken, dus een volledig open hand, zal gelijkaardige x en y afstanden hebben maar wordt reeds als open gezien in de eerste test en vormt daardoor geen probleem. Er wordt dus nagegaan of de hand open of gesloten is met het idee, geen verdere bewerkingen uit te voeren om de vingers te zoeken in het geval van een gesloten hand om zo de nodige berekeningen zo laag mogelijk te houden. Een direct gevolg hiervan is dat voor gesloten handen een hogere framerate bereikt kan worden in het uiteindelijke programma. Figuur 4.2: Voorbeeld van een puntenwolk voor de hand. 4.4 Detectie van de vingers De detectie van het aantal vingers per hand is een belangrijk onderdeel van de totale vingerdetectie met tot doel het detecteren van gebaren. Het aantal vingers is al een goede start voor latere classificatie van gebaren, die verder verbeterd kan worden door meer data van de handen in rekening te brengen zoals de richting en positie van de handen alsook van iedere vinger. Er is dan ook een aanzienlijke tijd gespendeerd aan de implementatie voor de detectie van het aantal vingers waarbij verschillende methodes zijn bedacht. Het centrale idee bij deze

35 4.4 Detectie van de vingers 21 methodes is om de puntenwolk voor iedere hand zodanig te bewerken dat de handpalm van de vingers gescheiden kan worden. Hiervoor is geopteerd om de handpalm zo goed mogelijk te gaan zoeken in de puntenwolk om deze vervolgens te verwijderen. Er is ook nagedacht over het rechtstreeks zoeken van de vingers in plaats van de handpalm. Echter is het laatste idee snel opgeschort omdat die manier complexer is en meer rekentijd zou vragen dan gewenst is, bovendien maakt de vorm en de hoge concentratie van punten voor de handpalm de detectie ervan voor verwijdering aantrekkelijker. Het is dan ook het gebruik van puntenconcentraties binnen een bepaald (wiskundig) lichaam dat in alle methodes wordt gebruikt om de handpalm te vinden. Tabel 4.1 geeft reeds een aantal resultaten van de verschillende methodes die getest werden. Een aantal van deze methodes zullen in deze sectie aan bod komen en in meer detail worden toegelicht (ROS vingerdetectie is toegevoegd ter volledigheid). Voor het bekomen van deze resultaten zijn geen specifieke regels gevolgd waardoor geen getallen worden gebruikt voor de accuraatheid. Het behaalde aantal frames is opgemeten door de tijd in milliseconden bij iedere frame op te meten en vervolgens na te gaan hoeveel frames er in één seconde worden getoond. De accuraatheid is gerankt volgens eigen bevindingen tijdens langdurige live test waarbij een verschillend aantal vingers werd gebruikt, in een later hoofdstuk zullen specifieke cijfers voor de accuraatheid worden vermeld. In een laatste sectie wordt dan nog een vorm van clustering besproken die gebruikt wordt om de vingers van elkaar te onderscheiden. Tabel 4.1: Vingerdetectie resultaten Methode Frames per seconde Accuraatheid ROS vingerdetectie 2 Met kleine bollen 1 Met kleine kubussen 2 Met grote bol 4 Met grote kubus 6 Dubbel filter 6 Raster met bol 15 Raster met bol en kubus Punt per punt filter met een kleine bol Zoals de titel reeds doet vermoeden zal er in deze methode gebruik worden gemaakt van een bol met kleine straal. Hierbij is het belangrijk om de straal van de bol groter te nemen

36 4.4 Detectie van de vingers 22 dan de halve diameter van de dikste vinger, zijnde de duim. Indien dit niet het geval is, zal de concentratie van punten voor de duim slechts marginaal afwijken van deze voor punten binnen de handpalm wat de detectie aanzienlijk moeilijker maakt. Bij het testen is er gebruik gemaakt van een straal van twee centimeter. Op dit punt van de masterproef werden er enkel testen op mezelf verricht en bewees deze waarde een goede afmeting te zijn voor mijn hand. In een later stadium is er overgegaan tot afmetingen die bepaald worden tijdens de uitvoering van het programma zodat het adaptief wordt naar andere gebruikers toe. Bij deze methode wordt de voornoemde bol punt per punt over de puntenwolk van een hand verplaatst terwijl voor ieder van de punten, waar de bol rond gelegd wordt, de puntenconcentratie binnen de bol berekend wordt. Wanneer deze concentratie groter is dan een opgelegd percentage worden de punten in de bol als deel van de handpalm gezien en gemarkeerd voor verwijdering. De punten worden niet meteen verwijderd omdat ze dan niet meer in rekening kunnen gebracht worden voor een andere bol. Na het bekijken van ieder punt in de puntenwolk worden alle gemarkeerde punten uit de totale puntenwolk verwijderd om zo enkel de vingers met eventueel wat ruispunten over te houden. Figuur 4.3 illustreert de werking met een visueel voorbeeld. Hou er wel rekening mee dat hier zoals voorheen voor de eenvoud een 2D weergave is gebruikt en de linkse afbeelding een standaard puntenwolk van de hand voorstelt terwijl de rechtse afbeelding een rechtstreeks resultaat is na toepassing van de methode. Deze methode is accuraat voor het onderscheiden van de handpalm ten opzichte van de vingers maar vereist veel bewerkingen en is dus enorm traag, er werd namelijk maar één frame per seconde verwerkt zoals aangegeven in Tabel 4.1. Om de snelheid op te drijven kan er worden overgegaan tot het gebruik van kleine kubussen in plaats van bollen omdat de berekening om te kijken of een punt binnen een kubus valt eenvoudiger is dan die om te kijken of het binnen een bol valt. De kubussen hadden hierbij een zijde die gelijk is aan de diameter van de eerder vernoemde bol (dus vier centimeter). Wat de werkwijze betreft was deze volledig gelijklopend met de werkwijze voor een bol, deze zal dus ook niet verder worden toegelicht. Uit de resultaten bij een kubus bleek inderdaad dat er een kleine versnelling plaatsvond en twee frames per seconde werden bereikt terwijl de nauwkeurigheid lichtjes verminderde (zie Tabel 4.1). Maar dit is uiteraard nog te traag voor gebruik dus is er verder gezocht naar andere benaderingen.

37 4.4 Detectie van de vingers 23 Figuur 4.3: Voorstelling van methode met een kleine bol: links de puntenwolk van een hand met de uit te knippen bollen, rechts de resterende puntenwolk Punt per punt filter met een grote bol Om de snelheid te verhogen zonder al te veel verlies aan accuraatheid kan gebruik worden gemaakt van één grote bol om de handpalm te detecteren. Uit theoretisch oogpunt alsook uit tests is namelijk gebleken dat het gebruik van een bolle vorm tot meer accurate resultaten leidt dan een kubusvormig lichaam. Daarom zijn er een aantal mogelijkheden bekeken waarbij op een andere manier gebruik wordt gemaakt van een bol. Een mogelijke benadering is om te vertrekken van een zeer grote bol die de hele hand omhult met als middelpunt het centraal punt van de hand. Vervolgens kan de bol verkleind worden totdat de puntenconcentratie nog maar weinig afwijking vertoont ten opzichte van die voor de vorige bolgrootte, op dat moment zouden de vingers zich buiten de bol moeten bevinden. Theoretisch gezien zou dit mogelijk moeten zijn, maar de variaties in puntenconcentratie waren zeer klein wat het moeilijk maakt om de detectie van de handpalm correct uit te voeren. Aldus werd deze benadering al snel verworpen. Ook de omgekeerde manier, van een kleine naar een grote bol gaan, kon dus meteen verworpen worden vanwege de gelijkaardige werking. Wat wel werkt en werd geïmplementeerd is het gebruik van een bol met vaste grootte die op een punt per punt manier over de puntenwolk wordt verplaatst. De straal van de bol werd voor mijn hand op zes centimeter vastgelegd. Het bepalen van de grootte voor deze straal kan ook tijdens de uitvoering van het programma worden vastgelegd door gebruik te maken van de maximale x en y afstanden voor de hand. Hierbij wordt dan de helft van de kleinste van deze twee waarde gebruikt omdat die de breedte van de handpalm zal vertegenwoordigen. Het verschil met de vorige methode is dat er nu niet wordt gezocht naar punten waarvoor de puntenconcentratie binnen de bol een grenswaarde overschreidt, maar deze keer worden de puntenconcentraties voor ieder middelpunt bijgehouden. Na het bekijken van ieder punt uit

38 4.4 Detectie van de vingers 24 de puntenwolk wordt dan teruggegaan naar het punt waarvoor de concentratie het grootst was om alle omringende punten die binnen de bol vielen uit de volledige puntenwolk te verwijderen. Figuur 4.4 illustreert het idee achter deze werkwijze. Zoals in Tabel 4.1 is aangegeven is deze manier van werken vrij accuraat en dus acceptabel. In tegenstelling tot de theoretische verwachtingen bleek deze methode toch sneller te zijn dan het gebruik van een kleine bol, er werden vier frames per seconde bereikt. Ondanks de acceptabele accuraatheid is deze manier van werken alsnog afgeschreven omdat ze te traag is om aan detectie van gebaren te doen. Figuur 4.4: Voorstelling van methode met een grote bol: links de puntenwolk van een hand met de gevonden uit te knippen bol, rechts de resterende puntenwolk Punt per punt filter met grote kubus Om de snelheid te verhogen bij acceptabele accuraatheid is er een implementatie gebeurd met een grote kubus. De werkwijze is gelijkaardig aan die waarbij gebruik werd gemaakt van een grote bol met als enige verschil het gebruik van een grote kubus in plaats van een bol. Een zijde van de kubus heeft de afmeting van de diameter van de bol uit de methode met een grote bol (zijnde 12 centimeter) en kan op dezelfde manier worden bepaald tijdens uitvoering. Zoals verwacht is het gebruik van een kubus in plaats van een bol ook hier iets sneller, er worden namelijk zes frames per seconde bereikt. Echter is de accuraatheid afgenomen wat het onderscheiden van de vingers onderling aanzienlijk bemoeilijkt door de blijvende verbindingspunten tussen de vingers. Bovendien zijn zes frames per seconde niet echt een noemenswaardige verbetering ten opzichte eerdere methodes. Figuur 4.5 toont ook hier het idee van de methode en het resultaat ervan voor een open handvorm waarbij de verbindingspunten tussen vingers duidelijk zichtbaar zijn.

39 4.4 Detectie van de vingers 25 Figuur 4.5: Voorstelling van methode met een grote kubus: links de puntenwolk van een hand met de gevonden uit te knippen kubus, rechts de resterende puntenwolk Een dubbel filter voor hogere accuraatheid Naast de snelheid is ook de accuraatheid zeer belangrijk om later tot goede classificatie over te gaan. Daarom is er gebruik gemaakt van een dubbel filter waarbij het tweede filter de accuraatheid moet verhogen. Het probleem dat kan optreden en aanleiding geeft tot minder accuraatheid is de aanwezigheid van ruispunten die de verschillende vingers met elkaar verbinden. Door deze ruispunten zullen regelmatig meerdere vingers als één geheel worden aanzien wat foute parameters als uiteindelijk gevolg zal hebben. Een eerste filter is een punt per punt filter met een grote kubus zoals beschreven in sectie Het tweede filter moet de puntenconcentraties binnen een klein lichaam met als middelpunt de punten op de rand van de grote kubus bekijken om eventueel overgebleven hoge concentraties alsnog te verwijderen. Het lichaam dat gebruikt wordt voor het tweede filter kan een bol of kubus zijn zoals gebruikt in sectie met gelijkwaardige afmetingen. Zoals uit de resultaten blijkt zal het gebruik van een bol tot hogere accuraatheid leiden ten opzichte van het gebruik van een kubus. In Figuur 4.6 is dan ook enkel de werking van het gebruik van de bollen geïllustreerd. Hierin valt meteen op dat er iets minder punten per vinger zijn, dit is geen echt minpunt omdat niet perfect alle punten van een vinger noodzakelijk zijn om mee verder te werken. Het gebruik van dit dubbel filter zorgt voor een merkbare stijging in accuraatheid zonder een meetbare invloed te hebben op het aantal frames per seconde in vergelijking met de methode uit sectie Theoretisch zou dit echter iets lager moeten worden ten gevolge van de toegevoegde berekeningen die moeten gebeuren.

40 4.4 Detectie van de vingers 26 Figuur 4.6: Voorstelling van methode met een dubbel filter: links de puntenwolk van een hand met de gevonden uit te knippen kubus en bollen aan de rand, rechts de resterende puntenwolk Een dubbel filter met raster voor hogere framerate Denkend aan de aangeleerde kennis rond multimedia, kwam het alom gekende gebruik van een raster in gedachten. In de multimedia wordt een raster veelal gebruikt bij videobeelden om bewegingen te bepalen of zelfs te voorspellen. Dit heeft dan ook aanleiding gegeven om een raster te gebruiken voor het bepalen van de hand. Het gebruik van het raster verschilt hier omdat er geen gebruik wordt gemaakt van de vakjes maar wel van de punten die ten minste twee lijnen van het raster met elkaar verbinden, ik zal dit van nu af verbindingspunten noemen. Aangezien het center van de hand gekend is kan er een driedimensionaal raster rond dit punt gevormd worden om dan enkel de verbindingspunten te gaan gebruiken. Het gebruik van een raster zorgt ervoor dat er aanzienlijk minder punten moeten bekeken worden in de verdere loop van deze methode. De tweede stap is afgeleid van de methode uit sectie 4.4.2, er zal dus rond ieder verbindingspunt een grote bol worden gelegd waarvoor de puntenconcentratie die erbinnen zit wordt berekend en bijgehouden. Vervolgens wordt het punt met de hoogste puntenconcentratie gebruikt als middelpunt van een grote kubus met als zijde de diameter van de bol. Er wordt overgestapt van een grote bol naar een grote kubus omdat een bol de hoogste accuraatheid heeft voor het vinden van de handpalm terwijl de kubus eventueel overblijvende ruispunten die de vingers met elkaar zouden verbinden mee verwijdert. Op deze manier gaan er ook wat extra punten van de vingers verloren maar zoals eerder aangegeven is dit niet erg voor het verdere gebruik van de overgebleven puntenwolk. Bovendien zijn de afmetingen van het raster, de bol en dus ook de kubus bepaald tijdens de uitvoering aan de hand van de gedetecteerde hand in kwestie waardoor het geheel adaptief en bruikbaar wordt voor derden.

41 4.4 Detectie van de vingers 27 Deze methode heeft een hoge accuraatheid alsook snelheid waardoor ze gekozen is als te gebruiken methode. Er werden vijftien frames per seconde gehaald met deze methode. Figuur 4.7 illustreert het raster waarbij eerst de positie van een grote bol wordt bepaald om vervolgens over te stappen op een kubus. De kubus is in de figuur iets groter getekend om het geheel overzichtelijk te houden. Figuur 4.7: Voorstelling van methode met raster en dubbel filter: links de puntenwolk van een hand met het raster met daarop de gevonden cirkel en de uit te knippen kubus, rechts de resterende puntenwolk Clustering van de vingers Figuur 4.8: De vorming van clusters voor vingers. Met het clusteren van vingers wordt bedoeld het samenvoegen of groeperen van punten die dicht bij elkaar liggen om zo de vingers te bekomen. Na het verwijderen van de punten die corresponderen met de handpalm uit de puntenwolk blijft er een puntenwolk met minder data over zoals zichtbaar in het rechtse deel van Figuren De bedoeling van het clusteren is het opdelen van de overgebleven puntenwolk in kleinere puntenwolken die dan later een vinger kunnen representeren. Figuur 4.8 illustreert op zeer eenvoudige wijze de werking van het clusteren die nu zal worden toegelicht. In eerste instantie is het nodig om

42 4.4 Detectie van de vingers 28 op zijn minst één nieuwe puntenwolk te creëren om het eerste punt in op te slaan. Hierna zal voor ieder punt worden gekeken of er een kleine puntenwolk bestaat waarin minstens één punt zit dat op minder dan twee millimeter van het huidige punt verwijderd is om het beschouwde punt vervolgens in de puntenwolk die hieraan voldoet op te slaan. Indien er zo geen tweede punt bestaat zal er een nieuwe puntenwolk worden gecreëerd voor het beschouwde punt, en dit tot ieder punt van de oorspronkelijke puntenwolk is bekeken. Op deze manier worden n kleine puntenwolken gecreëerd, deze zullen echter nog geen vingers representeren omdat vanwege de vorm van de hand en de manier waarop over de punten wordt gelopen (wat afhankelijk is van de handrotatie) punten die op minder dan twee millimeter van elkaar verwijderd zijn alsnog in verschillende puntenwolken terecht kunnen komen. Om tot de vingers te komen zal er dus tussen de puntenwolken onderling nog eens gekeken moeten worden of er zijn die mogen samengevoegd worden. Iedere puntenwolk wordt dus met iedere andere puntenwolk vergeleken waarbij de punten die in elk van deze puntenwolken zitten worden vergeleken om te tellen hoeveel punten er op minder dan twee millimeter van elkaar verwijderd zijn. Vervolgens zullen de puntenwolken met de meeste punten die op minder dan twee millimeter van elkaar verwijderd zijn worden samengevoegd. Deze samenvoeging van puntenwolken gebeurt iteratief tot er geen meer kunnen worden samengevoegd. Na al de bovenstaande stappen is er nog steeds geen zekerheid dat alle overgebleven puntenwolken vingers voorstellen. Om dit toch te garanderen worden de puntenwolken met minder dan honderd punten verwijderd. Uit tests is gebleken dat clusters met minder dan honderd punten nog overblijvende ruis bezitten. De kleinste puntenwolk die een vinger voorstelt is die voor de pink en deze bezit steeds meer dan tweehonderd punten. Indien er dan nog meer dan vijf puntenwolken overblijven worden de vijf grootste puntenwolken bijgehouden omdat dit de vingers moeten zijn. Figuur 4.9 toont een aantal resultaten na het clusteren van de vingers, hierin vertegenwoordigt iedere kleur een vinger en zijn in het klein ook steeds de handvormen toegevoegd ter verduidelijking.

43 4.4 Detectie van de vingers 29 Figuur 4.9: Resulterende puntenwolken na het clusteren van vingers met de bijhorende handvorm.

44 SMOOTHING 30 Hoofdstuk 5 Smoothing De eigen implementatie voor de detectie van vingers had acceptabele prestatie en nauwkeurigheid, echter is uit testen gebleken dat er nog regelmatige kleine foutsequenties aanwezig zijn bij het detecteren van het aantal vingers. Het wegwerken van deze kleine foutsequenties kan op verschillende manieren en kan al snel de eindresultaten positief beïnvloeden. Hierdoor is er overgegaan tot het toevoegen van een vorm van smoothing alvorens over te gaan tot de training van en classificatie met Hidden Markov Modellen. Er bestaan verschillende algemeen bekende smoothing algoritmes en smoothing filters waaronder Additieve, Kernel, Laplaciaanse, Exponentiële smoothing, Butherworth, Kalman, Recursief filter en Moving average. Na het bekijken van de toepasbaarheid van iedere vorm van filtering op de vingerdetectie kwamen Moving average en Exponentiële smoothing er als beste uit, deze twee zijn dan ook geïmplementeerd en getest. In dit hoofdstuk zullen beide filters worden toegelicht waarna de tests en resultaten worden besproken. 5.1 Moving average Moving average oftewel voortschrijdend gemiddelde is een analytische methode die onder meer wordt gebruikt bij analyse van beurskoersen. De methode zal een bestaande reeks waarden omvormen tot een nieuwe reeks van gemiddelde waarden en is in staat om korte fluctuaties in waarden weg te filteren. Dit is dan ook waarom het binnen deze thesis handig zou kunnen zijn. Moving average kan worden toegepast om de kleine fouten die voorkomen bij het detecteren van vingers weg te werken. Eerst zal kort worden beschreven hoe dit algoritme in theorie werkt waarna een kleine toelichting volgt over de manier van implementatie binnen deze masterproef. Er wordt voor dit algoritme van uit gegaan dat er een hele reeks waarden ter beschikking

45 5.1 Moving average 31 zijn om telkens de gemiddelden van te berekenen. Over hoeveel waarden het gemiddelde genomen moet worden is instelbaar met een eenvoudige parameter die gedefinieerd wordt als n. Indien nu elke waarde voor smoothing wordt voorgesteld door de letter x en na smoothing door de letter s met een index, waarbij de index van de meest recente waarde t is, kan het huidige resultaat van moving average als volgt berekend worden: s t = x t + x t x t (n 1) n (5.1) In de initialisatie, wanneer er nog geen n waarden beschikbaar zijn, worden slechts het aantal beschikbare waarden in rekening gebracht en wordt er gedeeld door dat aantal waarden. Op ieder moment wordt er dus een nieuwe waarde berekend door rekening te houden met de laatste n waarden. Dit heeft tot direct gevolg dat fluctuaties in waarden van langere duur (n/2) niet kunnen weggefilterd worden en dat het bij een verandering van een waarde die voor langere duur wordt aangehouden minstens n/2 waarden zal duren vooraleer de nieuwe waarde zichtbaar wordt bij gebruik van moving average. Er zal dus steeds een vertraging optreden bij een waardeverandering. Nog een nadeel is dat de laatste n waarden steeds ter beschikking moeten zijn wat bij implementatie meer geheugen vereist dan bijvoorbeeld de implementatie van het exponentiële filter (sectie 5.2). Het grootste voordeel van dit algoritme is de lage complexiteit. Figuur 5.1 geeft een fictief voorbeeld van toepassing van dit algoritme waarbij enkel met 5 en 3 als geobserveerde waarden wordt gewerkt. Zoals zichtbaar op de grafiek wijkt de implementatie af van het theoretische model, dit is doordat de resultaten voor de implementatie gediscretiseerd worden. De enige mogelijke waarden voor het aantal vingers zijn immers nul, één, twee, drie, vier of vijf. Net als in het voorbeeld zal ook in de implementatie binnen deze masterproef een gemiddelde van n waarden worden bekeken waarna wordt beslist of het huidige aantal vingers voldoet aan het resultaat van moving average. Indien dit het geval is wordt de huidige data behouden, maar indien dat niet het geval is zal de meest recente meting met dezelfde hoeveelheid vingers worden gebruikt als huidige meting. Op deze manier worden sommige metingen dus dubbel gebruikt teneinde de kleine fluctuaties in aantal vingers ten gevolge van storingen weg te werken.

46 5.2 Exponentiële smoothing 32 Figuur 5.1: Illustratie van moving average met venstergrootte n= Exponentiële smoothing Een exponentiële smoother is iets complexer dan moving average en wordt in de praktijk meer gebruikt zowel voor algemene smoothing alsook om voorspellingen uit af te leiden. In tegenstelling tot moving average houdt een exponentiële smoother rekening met alle waarden uit het verleden. Alle waarden moeten hiervoor niet worden bijgehouden, het algoritme is zodanig opgebouwd dat enkel de huidige waarde en het vorige resultaat van exponentiële smoothing gekend moeten zijn. Dit spaart in vergelijking met moving average geheugen uit en zorgt voor een snellere werking van het algoritme. Eerst zal even de opbouw van het algoritme bekeken worden om vervolgens over te gaan tot een korte toevoeging over de implementatie binnen deze masterproef. Het algoritme bestaat uit twee delen. Een initialisatie waarbij het eerste resultaat gewoon gelijk wordt gesteld aan de eerste waarde en een formule die van toepassing is op alle volgende waarden. Een exponentiële smoother kan beschreven worden met de volgende formules: s 0 = x 0 (5.2) s t = αx t + (1 α)s t 1, t > 0 (5.3) De x parameter stelt de originele waarden voor waarbij de index t staat voor de huidige

47 5.3 Testresultaten 33 waarde en 0 voor de eerste waarde, s duidt op de waarde na smoothing met index t voor de huidige en t-1 voor de vorige waarde. Verder is α de smoothing factor die bepaalt in welke mate de huidige waarde wordt beïnvloed door het verleden. In deze formulering zal een stijging van α resulteren in minder invloed van het verleden, indien α gelijk aan 1 wordt genomen zal er geen smoothing plaatsvinden. Deze formule komt soms ook voor in een lichtjes andere vorm waarbij α en 1-α zijn verwisseld waardoor een hogere α overeenkomt met meer invloed van waarden uit het verleden. Het grote voordeel van dit algoritme is de snellere respons op verandering in waarden dan bij moving average het geval was. Bij een exponentiële smoother zal het minder lang duren voordat een verandering in waarden merkbaar wordt, deze tijdsduur is wel nog voor een stuk afhankelijk van de α factor. Het wegfilteren van kortstondige fouten wordt ook beïnvloed door de α factor waardoor de keuze van deze factor uitermate belangrijk is voor de goede werking. Figuur 5.2 geeft hier een illustratief voorbeeld van de exponentiële smoothing. Hierbij werden dezelfde ingangswaarden gebruikt als in Figuur 5.1 en is bij vergelijking te zien dat in dit geval reeds een fout meer is weggewerkt op tijdstip 9. Daarnaast is ook hier te zien dat de implementatie afwijkt van het theoretische model omdat de waarde gediscretiseerd worden naar het aantal vingers. In de implementatie binnen deze masterproef is er opnieuw gebruik gemaakt van het aantal vingers voor de exponentiële smoother. Deze keer wordt er gekeken hoe dicht het aantal vingers van de vorige en huidige meting bij het resultaat van de smoother liggen en wordt de dichtste meting als huidige meting ingesteld. Indien beide metingen een gelijk aantal vingers vertonen zal steeds de meest recente meting worden gebruikt. 5.3 Testresultaten De vingerdetectie met toevoeging van smoothing omvat een groot deel van deze masterproef. Er zijn dan ook een aantal testen uitgevoerd om de prestatie van de smoothing methodes na te gaan. In deze sectie zullen de resultaten van deze de uitgevoerde testen besproken worden. Er zijn tests uitgevoerd met moving average waarbij verschillende waarden voor n zijn gebruikt alsook tests met exponentiële smoothing met een verscheidenheid aan α factoren. Voor moving average zal de n parameter zijnde het aantal waarden waarover het gemiddelde wordt genomen benoemd worden als venstergrootte omdat het kan aanzien worden als het plaatsen van een venster rond n opeenvolgende waarden. Wat de exponentiële smoother betreft zullen geen nieuwe benamingen gehanteerd worden. Bij de verschillende ingestelde parameters zijn vervolgens de vertragingstijden en het aantal fouten opgemeten. Deze fouten

48 5.3 Testresultaten 34 Figuur 5.2: Illustratie van exponentiële smoothing met factor α=0.2. zijn dan nog eens wat dieper bekeken door de grootste en kleinste foutsequentie in rekening te brengen. Om tot representatieve testresultaten te komen zijn er een aantal opnames uitgevoerd die dan gebruikt werden voor de tests. Deze opnames staan volledig los van de in een later hoofdstuk besproken dataset. Dit wil zeggen dat deze opnames niet gebruikt worden in de dataset en ook de opnameregels van de dataset niet volledig volgen. Er is een opname uitgevoerd waarbij de gebruiker een handvorm aanneemt en tijdens de opname overgaat naar een handvorm met een ander aantal vingers, dit om de vertraging bij overgangen te kunnen opmeten. Om de tijden op te meten werd bij ieder resultaat ook de tijd in milliseconden meegegeven. Om te bepalen hoeveel fouten er optreden bij een bepaalde smoothing methode met specifieke parameters zijn er zes opnames gebeurd. Bij elk van deze opnames zal de gebruiker een handvorm met nul, één, twee, drie, vier of vijf zichtbare vingers aannemen en deze willekeurig bewegen voor de Kinect tot er duizend frames bekomen zijn. Door met opnames te werken is er zekerheid dat telkens op dezelfde data wordt gewerkt waardoor de resultaten met elkaar vergeleken kunnen worden. Er zal eerst worden gekeken naar de optredende vertraging. Hiervoor zijn vele waarden voor de venstergrootte alsook voor de α parameter gebruikt. Figuur 5.3 toont de opgemeten resultaten. Er is bij moving average slechts tot een venstergrootte van zestien gegaan omdat een hogere venstergrootte te veel vertraging met zich meebrengt. Hierbij treed een vertraging

49 5.3 Testresultaten 35 Figuur 5.3: Opgemeten delay bij smoothing algoritmes. van meer dan 800ms op, aangezien er aan 15 frames per seconde wordt gewerkt wil dit zeggen dat het ongeveer één seconde zal duren vooraleer een verandering aan de ingang zichtbaar wordt aan de uitgang. Bij moving average is meteen duidelijk dat er een stijging in de vertragingstijd plaatsheeft bij een stijgende venstergrootte. Een venstergrootte van 8 zou nog aanvaardbaar kunnen zijn maar daarboven wordt de vertraging veel te groot. Als er gekeken wordt naar de resultaten bij een exponentiële smoother is er te zien dat een α factor dichter bij één een kleinere vertraging met zich meebrengt. Dit wil zeggen dat de vertraging die optreedt bij een waardeverandering afneemt wanneer de resultaten uit het verleden minder invloed hebben wat ook logisch is aangezien dit wil zeggen dat een nieuwe waarde minder moet voorkomen vooraleer ze merkbaar wordt. Ook hier is voor een α van 0.1 reeds een ongewenste vertraging zichtbaar en zal dus met een α factor van minimaal 0.2 worden gewerkt. Tabel 5.1 geeft enkele resultaten van de vingerdetectie na toepassing van de verschillende smoothing modes. Deze resultaten zijn procentueel weergegeven om ze eenvoudiger te kunnen interpreteren. Er zijn voor iedere test 1000 metingen uitgevoerd waarbij het belangrijk is ook op te merken dat een groot deel van de fouten optreedt in de initiële fase, zijnde de tijd tussen kalibratie van de gebruiker en het effectief aannemen van de handvorm. Dat is dan ook de reden dat de grootste, kleinste en gemiddelde foutpercentages zijn gebruikt. Alle drie deze waarden zijn nodig om een volledige vergelijking te kunnen maken. Uit de resultaten die hier zijn vermeld komt moving average er als beste uit. Echter zijn deze resultaten opgetreden bij een venstergrootte van 16 waarmee een vertraging van meer dan 800ms gepaard gaat. Dit is overduidelijk een onacceptabele vertraging in tegenstelling tot de vertraging die optreedt bij exponentiële smoothing. Voor exponentiële smoothing met een α factor van 0.1 bedraagt de vertraging slechts 570ms voor resultaten die niet zo enorm veel afwijken van deze voor moving average smoothing met venstergrootte 16 terwijl de resultaten toch nog beter zijn dan zonder smoothing. Meer uitgebreide resultaten van de uitgevoerde

50 5.3 Testresultaten 36 Tabel 5.1: Foutpercentages bij vingerdetectie. Kleinste Grootste Gemiddelde Normaal 3% 26.9% 20% Moving average (n = 16) 0.2% 24.5% 11.9% Exponentieel (α = 0.1) 2.5% 24.6% 17.4% testen zijn terug te vinden in Bijlage C. Ondanks dat met een grote venstergrootte bij moving average een hogere accuraatheid kan bekomen worden is er toch gekozen om verder te werken met de exponentiële smoothing. De doorslaggevende factor bij deze beslissing is de vertraging die optreedt bij moving average, deze is aanzienlijk lager voor exponentiële smoothing. Hierbij is bovendien gekozen voor een α factor van 0.2 omdat de betere accuraatheid bij een lagere factor niet opweegt tegen de bijkomende vertraging.

51 DE DATASET 37 Hoofdstuk 6 De dataset Na het detecteren van de handen en vingers waarbij voldoende parameters kunnen achterhaald worden zoals het aantal vingers, de positie en richtingsvector voor iedere vinger alsook de hand dient er uiteraard nog een vorm van classificatie voor de gebaren plaats te vinden. Voor de classificatie zelf wordt gebruik gemaakt van Hidden Markov modellen die later aan bod komen. Dit brengt de nood aan training van het systeem met zich mee wat aanleiding geeft tot dit hoofdstuk. Er is dan ook gekeken hoe het beste met een dataset kan gewerkt worden en wat zoal de vereisten zijn. De dataset moet bestaan uit opnames van gebaren die bij voorkeur met een Kinect zijn opgenomen om zowel de RGB als dieptedata ter beschikking te hebben. Er zijn eerst mogelijkheden bekeken om gebruik te maken van een bestaande datasets van derden. Dit was echter niet mogelijk en de reden hiervoor zal in dit hoofdstuk worden toegelicht. Verder zal er nog gekeken worden naar een aantal opgestelde regels voor het opnemen van een dataset alsook de opbouw van de uiteindelijk gebruikte dataset. 6.1 Datasets van derden Zoals reeds vermeld is er eerst gekeken in hoeverre bestaande datasets bruikbaar zijn binnen deze masterproef. Er bestaat een verscheidenheid aan datasets die vrij beschikbaar zijn, echter wordt deze groep al veel kleiner door de nood aan dieptedata. Van de overblijvende datasets zijn er nog veel afgevallen doordat de meeste datasets opnames bevatten van objecten of ruimtes met tot doel het gebruik bij onderzoek rond 3D reconstructie door middel van opnames. Uiteindelijk bleven er nog twee datasets over die mogelijk bruikbaar zouden zijn. Een eerste dataset was er één die door Prof. Mieke van Herreweghe zou worden opgenomen met gebruik van een Kinect camera. Na opvraging van de plannen rond de dataset bleek deze gepland te zijn tegen september 2013 wat het gebruik ervan binnen deze masterproef

52 6.2 Richtlijnen voor opname 38 onmogelijk maakt. De tweede mogelijkheid was het gebruik van een dataset die werd opgenomen voor gebruik in een masterproef van vorig academiejaar [25]. In deze dataset zaten vijftig gebaren die tien keer waren opgenomen met de Kinect voor drie verschillende personen. Hierbij kwamen telkens enkele gelijkaardige gebaren voor met zowel één hand als twee handen. Er zaten zowel voorbewerkte alsook onbewerkte opnames in deze dataset. Het eerste probleem met deze dataset was dat alle opnames in avi formaat stonden en OpenNI (het Kinect raamwerk dat gebruikt wordt) dit formaat niet kan inlezen. OpenNI kan enkel bestanden in oni formaat, wat een veel gebruikt formaat is voor opnames met de Kinect, inlezen. Bovendien bezit OpenNI geen enkele mogelijkheid om een oni bestand te maken van een avi bestand. Zo een oni bestand kan aan OpenNI gegeven worden om de initialisatie te starten waarbij de verwerking van de beelden in het oni bestand verder gebeurt zoals wanneer ze rechtstreeks van de kinect worden gestreamed. Om toch met de avi bestanden te kunnen werken is een programma geschreven dat in staat is om de avi bestanden om te zetten naar oni bestanden voor gebruik met OpenNI. In dit conversieprogramma wordt een bestaand oni bestand gebruikt om een virtuele Kinect te initialiseren. Daarna wordt voor iedere frame in een avi bestand de data gekopieerd naar een frame zoals opgeslagen in een oni bestand. Op die manier kan de conversie toch geschieden door pixel per pixel te kopiëren. De beschikbaarheid van een oni bestand als template is noodzakelijk om de nieuwe bestanden op de juiste manier op te slaan met alle extra relevante data voor de Kinect erbij. Na omzetting van de opnames voor één gebaar werd het nieuwe oni bestand aan de vingerdetectie gegeven om de resultaten ervan al eens te bekijken. Deze resultaten waren niet aanwezig, er vond dus geen kalibratie van de gebruiker plaats met tot gevolg dat de handen niet gedetecteerd werden. De oorzaak hiervan was de resolutie van de opnames die slechts 170 bij 128 pixels bedroeg, met als gevolg dat er niet genoeg details uit de beelden verkregen kunnen worden voor detectie van de handen en al zeker niet voor het vinden van de vingers. Voor de masterproef van voorgaand academiejaar was die resolutie wel hoog genoeg omdat er andere methoden werden toegepast. Er was dus nood ontstaan aan het opnemen van een eigen dataset voor gebruik binnen deze masterproef. Meer details over deze dataset worden in de volgende secties uitgezet. 6.2 Richtlijnen voor opname Om over te kunnen gaan tot het opnemen van een dataset is het belangrijk om een aantal regels en specificaties op te stellen waaraan de opnames moeten voldoen. Op die manier komt er enige uniformiteit in de opnames en kunnen fouten bij de opnames vermeden worden.

53 6.3 Opbouw van de dataset 39 Wat de regels voor de omgeving betreft is het belangrijk om te voorkomen dat er fel zonlicht in de opnameruimte kan optreden. Fel zonlicht zal het beeld dat de Kinect opneemt verstoren omdat het puntenpatroon dat deze uitstuurt hierdoor grondig verstoord wordt. Anderzijds is het best er voor te zorgen dat de ruimte goed verlicht is, hoewel dit geen absolute vereiste is zorgt het wel voor betere beelden om op verder te werken. Indien er te weinig licht is kunnen de persoon alsook zijn handen nog steeds gedetecteerd worden via de dieptedata waarvoor het lichtpatroon wordt gebruikt. De RGB beelden zullen echter wel invloed ondervinden van een tekort aan belichting. Het is tevens ook belangrijk ervoor te zorgen dat er ten allen tijde slechts één persoon in beeld is. Er zal slechts detectie worden toegepast op één persoon dus indien meerdere personen in beeld zijn wordt een extra selectie van de persoon noodzakelijk. Wat de opstelling betreft is het belangrijk om een afstand van ongeveer anderhalve meter te voorzien tussen de camera en de plaatst waar de persoon zich zal bevinden. Deze afstand is dusdanig gekozen dat er genoeg details uit het beeld kunnen verkregen worden zonder dat de persoon te dicht bij de camera staat. Indien de persoon te dicht bij de camera staat zal voor grotere personen niet het volledige bovenlichaam zichtbaar zijn waardoor de gebruikersdetectie fouten kan vertonen. De Kinect zelf wordt op een verhoogd platform gezet van ongeveer één meter hoog, hier mag spelling opzitten aangezien de Kinect nog omlaag of omhoog kan getilt worden. Figuur 6.1 illustreert een mogelijke opstelling. Als laatste is het ook belangrijk om een aantal technische specificaties voor de opgenomen beelden vast te leggen. Het is niet noodzakelijk om alle data op te nemen, voor de opgenomen dataset is dan ook besloten om het opnemen van geluid achterwege te laten. Geluid zal voor het herkennen van gebaren geen meerwaarde leveren en is dus overbodig. Ondanks dat er enkel gebruik wordt gemaakt van de dieptedata is ook de RGB data opgenomen met de mogelijkheid van het gebruik van de dataset in de toekomst in het achterhoofd. Voor alle beelden (RGB en diepte) is een VGA resolutie van 640 bij 480 pixels gebruikt. 6.3 Opbouw van de dataset Alle geselecteerde gebaren zijn gekozen uit een lijst met gebaren uit de vlaamse gebarentaal [1]. Er zijn zowel gebaren met één hand als met twee handen gebruikt en met verschillende handvormen. Hiermee wordt bedoeld dat het aantal vingers verschilt tussen gebaren. Uiteraard zijn er ook gebaren die zeer gelijkaardige handvorm hebben en waarbij enkel de positie waar het gebaar wordt uitgebeeld verschilt. De eerste vijf gebaren die een kleine startersdataset vormden zijn door mezelf geselecteerd, gebaren die achteraf werden toegevoegd zijn

54 6.3 Opbouw van de dataset 40 Figuur 6.1: Voorbeeld van een opstelling om dataset op te nemen. geselecteerd door andere personen die hebben meegewerkt aan de dataset. Die andere personen hebben geen inzicht in de werking van de vingerdetectie die de parameters moet achterhalen waarop geclassificeerd zal worden. Zij waren dus niet op de hoogte van de sterktes en zwaktes van de detectie. Op die manier is er geen voorkeur gegeven aan bepaalde gebaren en kan er getest worden met een verscheidenheid aan gebaren. Voor de opnames zijn drie personen gebruikt (waaronder mezelf) die telkens vijftien opnames per gebaar uitvoerden. Bij die opnames diende de gebruiker in beeld te wandelen en het gebaar uit te beelden. Het in beeld wandelen is noodzakelijk voor de kalibratie van de gebruiker. Verder zijn er geen bepaalde regels opgelegd voor de opnames en was er de meewerkende personen opgedragen niets te forceren en het gebaar uit te voeren zoals ze het zouden gebruiken in een gesprek. Voor gebaren met één hand is er dus geen bepaalde positie of houding voor de tweede hand opgelegd. Het enige punt dat van belang was en werd meegedeeld is dat gebaren die een verplaatsing in de richting van de camera bevatten worden uitgevoerd met de beweging naar het ledje op de Kinect gericht. Dit om de hand of handen ten allen tijde in beeld te houden bij een beweging. In Bijlage D zijn de gebruikte gebaren terug te vinden.

55 MACHINAAL LEREN 41 Hoofdstuk 7 Machinaal leren Om over te kunnen gaan tot de effectieve detectie van gebaren dient er eerst een techniek van machinaal leren geselecteerd te worden. Voor het herkennen van gebaren is hierbij gekozen voor Hidden Markov Modellen omdat dit een uitstekende techniek is voor het werken met sequentiële data. Een gebaar bestaat namelijk uit een sequentie van handelingen in de tijd, zijnde een bepaalde beweging en/of verandering van handvorm. Daarnaast zijn Hidden Markov modellen in staat om overlappende clusters van datapunten te onderscheiden. Zulke clusters kunnen ook voorkomen bij de detectie van gebaren waarbij twee gebaren gemeenschappelijke posities bevatten bij een beweging. Aldus zullen Hidden Markov Modellen gebruikt worden. Er zal in dit hoofdstuk eerst een beschrijving van Hidden Markov modellen aan bod komen waarbij ook de verschillende mogelijkheden die er zijn bij het gebruik van dergelijke modellen besproken worden. Deze mogelijkheden zijn het trainen van een Hidden Markov model, het evalueren en decoderen van een sequentie van observaties. Als laatste zullen er ook nog enkele specifieke Hidden Markov modellen besproken worden die binnen de masterproef gebruikt zijn. 7.1 Hidden Markov Modellen Een Hidden Markov model oftewel HMM is een statistisch model dat zeer populair is en toepassingen kent in herkenning van spraak, geschrift, kentekenplaten en gebaren. Hieruit blijkt meteen dat deze modellen reeds zijn gebruikt bij het herkennen van gebaren en dit meestal met goede resultaten. Een HMM is in theorie een Markov model met onbekende toestanden. Dit wil zeggen dat in tegenstelling tot een Markov model, waar de toestandssequentie die een bepaalde sequentie van observaties veroorzaakt eenvoudig te achterhalen is, bij een HMM de toestandssequentie die een sequentie van observaties veroorzaakt heeft on-

56 7.1 Hidden Markov Modellen 42 Figuur 7.1: Eenvoudige voorstelling van een Hidden Markov Model. bekend is. Bij een gewoon Markov Model wordt dan ook meestal enkel over observaties gesproken om verwarring te voorkomen. Voor een HMM kan echter wel worden nagegaan wat de waarschijnlijkheid is dat de sequentie van observaties veroorzaakt is door een bepaald model alsook wat de meest waarschijnlijke toestandssequentie is. Dit laatste is binnen deze masterproef minder belangrijk aangezien er voor ieder gebaar een HMM wordt gebouwd om vervolgens bij de detectie na te gaan welke het meest waarschijnlijke HMM (en dus gebaar) is. Figuur 7.1 geeft een grafische voorstelling van een HMM in zijn eenvoudigste vorm. Op de figuur zijn zowel de verborgen toestanden z als observaties x terug te vinden waarbij de index duidt op een tijdstip oftewel de positie van die waarde in een reeks van opeenvolgende data. Er is één uitzonderlijk geval zijde de initiële toestand i die bij het gebruik van een HMM moet worden bepaald. Zoals reeds eerder vermeld is ook in de figuur te zien dat een observatie steeds het gevolg is van de verborgen toestand op dat moment, waar ook steeds een emissie B met gepaard gaat. Tussen de verschillende verborgen toestanden vindt ook een transitie A plaats met een bepaalde kans. De twee termen emissie en transitie behoeven enige verklaring. Een transitie wordt bijgehouden in een transitiematrix, zo een matrix bevat de probabiliteiten om van een verborgen toestand naar een andere of dezelfde verborgen toestand over te gaan. Dit is dus een vierkante matrix met dimensie gelijk aan het aantal verborgen toestanden. Dit aantal verborgen toestanden kan bij het bouwen van een HMM worden vastgelegd. Een emissie zit in een emissiematrix die de probabiliteit op een bepaalde verborgen toestand voor een gegeven observatie bezit. Zo een emissiematrix heeft rijen gelijk aan het aantal verborgen toestanden en kolommen gelijk aan het aantal mogelijke observaties. Het net beschreven geval is enkel van toepassing op een HMM met discrete distributie. Wanneer er een gaussiaanse distributie wordt gebruikt zullen de emissies bestaan uit een matrix met gemiddelde waarden voor de observaties alsook een covariantiematrix per dimensie

57 7.1 Hidden Markov Modellen 43 van de observatie en dit per verborgen toestand. Een HMM wordt dus volledig gedefinieerd door zijn transitiematrix, emissiematrix en initiële toestand. In deze masterproef zijn HMMs met zowel discrete als Gaussiaanse distributies gebruikt Training Het doel van de training is het bekomen van de definiërende parameters van een HMM, zijnde de transitiematrix, emissiematrix en initiële toestand. Hiervoor zal het HMM moeten leren wat de verborgen toestanden zijn en wat de probabiliteiten zijn voor transities en emissies. Er kunnen bij training twee methoden onderscheiden worden. Allereerst is er training met toezicht (beter bekend als supervised training) waarbij zowel de input als output van een proces gekend is. Deze methode zal niet gebruikt worden binnen deze masterproef omdat de output data niet gekend is. Dan is er anderzijds nog training zonder toezicht (beter bekend als unsupervised training) waarbij enkel de input data gekend is zoals het geval is in deze masterproef. Het is voor deze trainingsfase dat de dataset belangrijk is. Er moet voldoende data ter beschikking zijn om een model te trainen, maar tegelijkertijd mag er ook geen overfitting optreden. Overfitting treedt op bij gebruik van een te complex model. Dit wil zeggen dat de aanwezigheid van ruis in de trainingsdata bij een te complex model mee wordt opgenomen, als direct gevolg wordt de kans op een correcte detectie negatief beïnvloed. Voor het effectief unsupervised trainen van een HMM wordt het Baum-Welch algoritme gebruikt. Dit algoritme zal hier niet worden uitgelegd, maar is volledig terug te vinden in [28] Evaluatie Voor evaluatie wordt er van uitgegaan dat er reeds training heeft plaatsgevonden en een HMM gedefinieerd kan worden. Bij evaluatie wordt dan een sequentie van observaties gebruikt om de probabiliteit dat de sequentie is ontstaan uit het gedefinieerde HMM na te gaan. In andere woorden omvat evaluatie het nagaan hoe goed een HMM een gegeven sequentie van observaties kan produceren. Dit is een zeer belangrijke fase binnen deze masterproef omdat hiermee wordt nagegaan welk gebaar volgens gegeven observaties gedetecteerd is. Stel dat er n gebaren in de dataset aanwezig zijn. Dan zijn er n HMMs getraind zodat deze gedefinieerd kunnen worden door middel van de emissiematrix, transitiematrix en initiële toestand. Bij evaluatie kan dan voor ieder van de HMMs de probabiliteit berekend worden dat de sequentie van observaties erdoor geproduceerd werd waarna het HMM met de hoogste probabiliteit het gebaar voorstelt. Zo kan dus voor iedere sequentie van observaties het bijhorende gebaar achterhaald worden.

58 7.1 Hidden Markov Modellen 44 Het algoritme dat gebruikt wordt voor evaluatie is het voorwaarts (oftewel Forward) algoritme en staat volledig beschreven in [28] Decodering Ook voor decodering wordt er verondersteld dat er reeds een HMM getraind is en gedefinieerd kan worden. Indien dit het geval is kan door decodering de meest waarschijnlijke sequentie van verborgen toestanden die een gegeven sequentie van observaties geproduceerd heeft achterhaald worden. Hiervoor wordt het Viterbi algoritme gebruikt. Dit is zeer gelijkaardig aan het voorwaarts algoritme met als verschil dat de probabiliteiten gemaximaliseerd worden in plaats van ze op te tellen. Het volledig algoritme is terug te vinden in [28]. Echter wordt decodering op geen enkel moment gebruikt binnen deze masterproef en is het enkel toegevoegd ter volledigheid Logaritmisch domein Bij het implementeren van HMMs kan underflow van floating-point types een probleem vormen. Dit omdat bij gebruik van het Viterbi of het Forward algoritme bij lange sequenties zeer kleine probabiliteiten kunnen ontstaan ten gevolge van vermenigvuldigingen op kleine kommagetallen. Voor het Viterbi algoritme wordt dit opgelost door gebruik te maken van probabiliteiten in het logaritmische domein en deze op te tellen in plaats van te vermenigvuldigen. Wat het Forward algoritme betreft wordt er gewerkt met schalingsfactoren die de probabiliteiten in een acceptabel bereik houden. Dit heeft dan wel tot gevolg dat de schalingsfactoren voor ieder tijdstip moeten bijgehouden worden Types Uit de beelden die verkregen zijn van de Kinect worden een aantal parameters bepaalt. Deze zijn: het aantal vingers, positie en richtingsvector voor de handen en voor iedere individuele vinger. Door elk van deze parameters apart in rekening te brengen en later combinaties te maken zijn enkele types van HMMs ontstaan. Er kunnen dus per gebaar meerdere HMMs zijn, namelijk een HMM per parameter. De verschillende types van HMMs zullen in deze sectie besproken worden waarbij ook reeds een aantal conclusies worden vermeld. De experimenten die tot deze conclusies hebben geleden zijn terug te vinden in Hoofdstuk 8.

59 7.1 Hidden Markov Modellen 45 Vingers Dit type HMM is gebouwd om enkel rekening te houden met het aantal vingers. Er kan meteen gesproken worden over een discrete distributie met één dimensie voor de observaties doordat er slechts zeven mogelijke waarden voor een observatie zijn. Namelijk nul, één, twee, drie, vier of vijf vingers plus nog een extra toestand voor het geval de hand niet gevonden is en er dus geen vingers gedetecteerd konden worden. Door enkel rekening te houden met het aantal vingers kunnen de gebaren met een verschillend aantal vingers reeds goed van elkaar onderscheiden worden. Echter doordat er meerdere gebaren met eenzelfde aantal vingers in de dataset zijn opgenomen is dit niet voldoende en kan de totale accuraatheid van de detectie niet als goed worden aanzien. Bij deze gebaren met eenzelfde aantal vingers is er wel steeds een verschil in rotatie, positie of beweging waardoor er zeker mogelijkheid is tot verbetering door meer parameters in rekening te brengen. Handposities Een andere mogelijkheid bij het trainen van de HMMs is door gebruik te maken van de positie van de handen. Dit is niet langer een discrete distributie omdat de handen zich overal in het gezichtsveld van de Kinect kunnen bevinden waardoor zeer veel waarden mogelijk zijn. Bovendien zullen tussen verschillende opnames van eenzelfde gebaar variaties aanwezig zijn bij de positie. Deze variaties zijn willekeurig doordat de persoon op een iets andere plaats in de ruimte staat. Daarbovenop zijn er ook nog verschillen tussen personen (zoals de lengte van de persoon) die meespelen. Toch zal de data van verschillende opnames voor eenzelfde gebaar steeds geclusterd kunnen worden. Voor dit geval is er dus gekozen voor een Gaussiaanse distributie met dimensie van de observaties gelijk aan drie. Er wordt gebruik gemaakt van 3D data dus zijn er drie dimensies noodzakelijk (X,Y,Z) en onbekende data voor een hand die niet gevonden werd krijgt een fictieve waarde. Het gebruiken van de posities levert meestal betere resultaten dan bij gebruik van enkel de vingers doordat er weinig gebaren zijn die precies dezelfde positie gebruiken. Overlap tussen de gaussiaanse verdelingen van verschillende gebaren is echter altijd mogelijk en zorgt dan ook steeds voor optredende fouten. Voor de richtingsvector van de handen kan hetzelfde type gebruikt worden. Omdat we ook in dat geval werken met continue data met mogelijk afwijkingen tussen opnames voor eenzelfde gebaar. Bij gebruik van de richtingsvectoren bleek uit testen ook reeds een goede correctheid op te treden, wat onverwacht was.

60 7.1 Hidden Markov Modellen 46 Vingerposities Als laatste eenvoudige type is er nog een HMM dat enkel rekening houdt met de posities van individuele vingers. Hierbij is bij testen een onderscheid gemaakt tussen normale posities die relatief zijn ten opzichte van het centraal punt voor de Kinect en posities die relatief zijn gemaakt ten opzichte van de bijhorende handpositie. Maar hierover zal in de resultaten nog meer worden gezegd. Deze posities zijn allen ondergebracht in één HMM waardoor de observaties een dimensie van vijftien krijgen. Deze dimensie van vijftien is het gevolg van werken met 3D data op vijf vingers waarbij voor onbekende data een fictieve waarde wordt gebruikt. Er is opnieuw gekozen voor een gaussiaanse distributie omwille van dezelfde reden als bij het vorige type. Het gebruik van de posities van de vingers levert ondermaatse correctheid op wat het gebruik ervan al snel heeft stopgezet. Opnieuw kan er voor de richtingsvectoren per vinger hetzelfde type worden gebruikt maar ook dit leidde tot ondermaatse accuraatheid waardoor het verder niet meer gebruikt werd. Combinaties Naast de HMMs die rekening houden met één parameter kan er ook rekening worden gehouden met meerdere parameters door gebruik te maken van verschillende HMMs. Deze kunnen op twee manieren gecombineerd worden. De eerste en eenvoudigste manier is het evalueren van een sequentie van observaties voor alle types HMMs en vervolgens de probabiliteiten voor de HMMs van de gewenste types voor eenzelfde gebaar op te tellen. Indien bijvoorbeeld gebruik wordt gemaakt van het aantal vinger en de handposities moeten deze types HMMs getraindd worden en bij evaluatie kunnen beide types voor gebaar1 apart bekeken worden, dit resulteert in een probabiliteit voor het aantal vinger en een probabiliteit voor de handposities. Na het achterhalen van de probabiliteiten kunnen ze opgeteld worden om tot de totale probabiliteit voor gebaar1 te komen. Hierbij wordt er vanuit gegaan dat er met logaritmische probabiliteiten wordt gewerkt. Deze methode levert reeds goede resultaten en kan zonder twijfel gebruikt worden indien de verschillende observaties geen direct verband hebben met elkaar. Een tweede methode bestaat eruit de observaties te gaan combineren en een HMM te trainen voor die combinatie om dan detectie uit te voeren met een combinatie van observaties van dezelfde soort. Dit wil dus zeggen dat er een hoger aantal dimensies gebruikt zal worden. Een direct gevolg hiervan is dat de trainingsfase aanzienlijk langer zal duren. Echter is deze methode enkel noodzakelijk indien de eerste methode geen goede resultaten levert en werd

61 7.1 Hidden Markov Modellen 47 ze binnen deze masterproef niet toegepast.

62 RESULTATEN 48 Hoofdstuk 8 Resultaten Bij de afwerking van deze masterproef zijn er een aantal testen uitgevoerd die aanleiding hebben gegeven tot een aantal resultaten. In dit hoofdstuk zal getracht worden om de meeste resultaten op een overzichtelijk manier zo goed mogelijk te beschrijven. Zo zal er eerst worden gestart met een uiteenzetting van de verschillende testen waarna de resultaten in relevante groepen zullen worden besproken. 8.1 Uitgevoerde testen Allereerst is er reeds een onderscheid tussen twee gebruikte datasets waarbij het verschil aanwezig is in het aantal gebaren dat gebruikt wordt. Zo is er een dataset met zeven gebaren gebruikt voor initiële validatie van verschillende modellen waarna is overgestapt op een grotere dataset met 20 gebaren om de prestatie op grotere schaal te bekijken. Voor elk van de datasets op zich is er dan nog eens een verschil tussen normale testen en testen met kruisvalidatie op niveau van de gebruiker met tot doel na te gaan hoe de modellen generaliseren naar andere gebruikers. Onder kruisvalidatie wordt binnen deze masterproef verstaan het uitvoeren van verschillende testen waarbij telkens een ander deel van de dataset wordt afgezonderd voor validatie. De resultaten die zo bekomen worden zullen dan ook apart bekeken worden. Aangezien er met HMMs gewerkt wordt is het nodig de dataset op te splitsen in een deel voor training en een deel voor validatie. Dit houdt in dat 2/3 van de data gebruikt wordt voor training terwijl de overige 1/3 gebruikt wordt voor het valideren. Aldus zijn verschillende combinaties mogelijk zoals in Figuur 8.1 visueel zichtbaar is gemaakt. Er is in de figuur duidelijk te zien dat er bij de kruisvalidatie telkens één gebruiker wordt gereserveerd voor het valideren terwijl op de andere data getraind wordt, zoals kruisvalidatie eerder gedefinieerd werd, in tegenstelling tot de normale mode waarbij voor iedere persoon

63 8.2 Dataset 7 gebaren 49 Figuur 8.1: Gebruikte opsplitsingen van de dataset voor tests. een stuk wordt getraind. Van hieraf zal naar de verschillende modes verwezen worden met de namen die in de Figuur zijn vermeld. Als laatste kan ook nog een onderscheid worden gemaakt door rekening te houden met de gebruikte data voor training en validatie. Mogelijke data omvat het aantal vingers, de positie van de handen, de richtingsvectoren van de handen, de posities van de vingers, de richtingsvectoren van de vingers of combinaties van de voornoemde mogelijkheden. De opbouw van het HMM voor elk van deze types is terug te vinden in Hoofdstuk 7 en zal niet opnieuw behandeld worden. 8.2 Dataset 7 gebaren In eerste instantie werd er gebruik gemaakt van een basis dataset bestaande uit zeven gebaren (de eerste zeven uit Bijlage D). Hierop zijn de meeste testen uitgevoerd en konden dan ook reeds mede door het onderscheid tussen eenvoudige en gecombineerde HMMs een aantal conclusies getrokken worden Eenvoudige modellen De eenvoudige modellen bestaan uit slechts één data parameter en geven een idee van de basis detectie van gebaren. Figuur 8.2 geeft een overzichtvan de resultaten bij gebruik van de eenvoudige HMMs voor de verschillende soorten testen bij gebruik van 3 verborgen toestanden. Uit deze resultaten is meteen te zien dat de normale test betere resultaten oplevert

64 8.2 Dataset 7 gebaren 50 dan gebruik van kruisvalidatietesten. Dit is op zich logisch omdat voor de kruisvalidatietesten niet getraind werd voor de testpersoon. Verder is ook te zien dat de eenvoudige modellen met uitzondering van de vingerposities en richting van de vingers reeds aanleiding geven tot goede resultaten voor de correcte detectie van gebaren, er wordt reeds 89% accuraatheid behaald in het beste geval. De slechte prestatie van de data op niveau van de vingers is te wijten aan de gevoeligheid aan kleine afwijkingen op die data. Kleine afwijkingen in datapunten ten gevolge van ruis zullen op de vingerdata reeds een aanzienlijke invloed hebben waardoor het gebruik van deze data ontmoedigd wordt. Deze conclusie kan overigens worden doorgetrokken naar alle uitgevoerde testen, met andere woorden zullen de datapunten op niveau van de vingers in geen geval tot betere resultaten leiden. Over het algemeen worden de minst goede resultaten behaald op basis van het aantal vingers indien de positie en richting van de vingers achterwege wordt gelaten. Dit is te danken aan de opbouw van de dataset waarbij verschillende gebaren met eenzelfde aantal vingers aanwezig zijn waardoor het moeilijk wordt om detectie uit te voeren op enkel die data. De positie en richting van de handen voor de gebaren verschilt dan weer wel tussen de gebaren onderling wat zich ook reflecteert in de accuraatheid bij gebruik van deze data. Voor de kruisvalidatie is echter wel steeds een lagere accuraatheid merkbaar die toch nog tot degelijke resultaten kan leiden in de gecombineerde modellen die later aan bod komen. Wat persoon 3 betreft worden steeds de minst goede resultaten behaald voor alle testen. Dit toont aan dat er toch enige afhankelijkheid is tussen de personen voor training en de persoon voor het testen. Deze prestatie zal vanuit theoretisch oogpunt dan ook verbeteren indien de trainset uit meer dan 2 personen zou bestaan. In de tot nog toe gebruikte resultaten werd er steeds vanuit gegaan dat de onbekende data voor training en validatie van de HMMs een vaste fictieve waarde kreeg toegewezen. Deze onbekende data kan plaatsvinden wanneer een hand niet gedetecteerd kan worden of indien op niveau van de vingers bepaalde vingers niet zichtbaar zijn (denk hierbij aan een handvorm met twee vingers). Echter is het ook mogelijk om in plaats van een vaste fictieve waarde een beperkte ruis te te voegen aan de waarde. Door toevoeging van de ruis kan gegarandeerd worden dat de verdeling bij de Gaussiaanse distributies niet te nauwer wordt, waarbij in het slechtste geval één enkele piekwaarde kan overblijven. Dit is dan ook mee opgenomen in de testen en gaf aanleiding tot de resultaten uit Figuur 8.3. Bij het gebruik van fictieve waarden waar een ruis op aanwezig is bleek de prestatie met enkel de richting of posities van de vingers te verbeteren, hetzelfde fenomeen treedt ook op bij gecombineerde modellen met deze data. Voor alle andere eenvoudige modellen alsook gecombineerde modellen blijkt de toegevoegde

65 8.2 Dataset 7 gebaren 51 Figuur 8.2: Resultaten bij gebruik van eenvoudige modellen met 3 verborgen toestanden voor de verschillende testen. Figuur 8.3: Resultaten bij gebruik van eenvoudige modellen met 3 verborgen toestanden voor de verschillende testen waarbij fictieve waarden ruis bevatten.

66 8.2 Dataset 7 gebaren 52 ruis tot minder goede prestatie te leiden in tegenstelling tot wat er verwacht werd. Door toevoeging van ruis kan de data als te variabel aanzien worden waardoor deze niet veel invloed zou mogen hebben op de training terwijl bij het gebruik van een vaste waarde de data mee als nuttig wordt aanzien en deel van het gebaar gaat uitmaken. Het blijkt dus beter te zijn om de fictieve waarden vast te nemen zodat ze zeker deel van het gebaar gaan uitmaken. Ook deze vaststelling is van toepassing op alle andere uitgevoerde testen (met gecombineerde data of een ander aantal verborgen toestanden). Om nog even alles samen te vatten is er reeds geconcludeerd dat het gebruik van de positie en richting van de vingers geen meerwaarde met zich meebrengt net zoals het gebruik van fictieve waarden met ruis de resultaten niet positief beïnvloedt. Op het gebruik van de posities van de vingers wordt later nog even teruggekomen, maar vanaf nu wordt er alvast verondersteld dat alle testen gebruik maken van vaste fictieve waarden voor onbekende data Gecombineerde modellen Naast de eenvoudige modellen kan er ook nog gebruik worden gemaakt van gecombineerde datamodellen voor de HMMs waarbij rekening wordt gehouden met meer dan één parameter. Deze combinatie gebeurt op de eenvoudigste manier door vermenigvuldiging van de probabiliteiten van de eenvoudige HMM modellen. Indien wordt overgegaan naar het logaritmische domein komt dit overeen met het optellen van de probabiliteiten. Het doel van het gebruiken van gecombineerde modellen is het verhogen van de accuraatheid omdat combinatie van twee modellen met middelmatige prestatie theoretisch resulteert in een nieuw model met betere resultaten dan de individuele modellen. Figuur 8.4 geeft de resultaten voor een stap per stap uitgebreid HMM waarbij telkens meer data in rekening wordt gebracht en dit voor 3 verborgen toestanden bij de verschillende testen. Uit de resultaten blijkt dat ook hier de normale test het beste presteert. De resultaten die hier zijn bekomen voor de normale test zijn tevens de beste resultaten die verkregen zijn voor de dataset van zeven gebaren. Verder is het ook hier nog eens duidelijk dat de posities en richtingen van de vingers geen meerwaarde met zich meebrengen en de resultaten enkel aanzienlijk slechter maken. Het is tevens ook zichtbaar dat het gebruik van het aantal vingers, handposities en richting van de hand betere prestaties oplevert dan wanneer de richting van de handen niet in rekening wordt gebracht. Hieraan kan dan meteen de opbouw van een gebaar gerelateerd worden. Aangezien een gebaar bestaat uit een handvorm met een bepaalde rotatie waar nog een beweging bij komt kijken is het te verwachten dat de beste resultaten optreden bij het in rekening brengen van deze elementen. Dit is dan ook wat gedaan wordt door de drie voornoemde parameters te gebruiken in het

67 8.2 Dataset 7 gebaren 53 model dat hier resulteert in een accuraatheid van 94,29%. Ook voor kruisvalidatie zijn de resultaten toegenomen en werden er accuraatheden bekomen die wijzen op de bruikbaarheid van het systeem voor personen waarvoor niet getraind werd indien de dataset voor training meer personen zou bevatten. Toch is het best om bij commercialisatie van dergelijke systemen het geheel te calibreren voor de gebruiker door deze bijvoorbeeld een aantal gebaren te laten uitbeelden. Naast alle testen die reeds besproken zijn is er ook nog een speciaal geval. Dat is namelijk het geval waarbij gebruik wordt gemaakt van vingerposities relatief ten opzichte van het centraal punt van de hand in plaats van de posities te gebruiken zoals verkregen van de camera. De resultaten van deze verandering zijn te zien in Figuur 8.5. Ondanks dat er een aanzienlijke prestatieverbetering optreedt door de vingerposities relatief te maken ten opzichte van de hand, blijft de prestatie door deze data mee in rekening te brengen minder goed dan wanneer er gebruik wordt gemaakt van het tot nu toe optimale model dat resulteert in 94.29% accuraatheid. Uitzonderlijk zien we de resultaten wel één keer verbeteren voor de kruisvalidatie. In zijn totaliteit en bij het in rekening brengen van alle resultaten (die terug te vinden zijn op de bijgevoegde DVD) kan echter alsnog geconcludeerd worden dat het in rekening brengen van de positie en/of richting van de vingers geen meerwaarde oplevert. Ondertussen is het misschien reeds opgevallen dat er telkens met drie verborgen toestanden werd gewerkt. Dit is niet toevallig zo gekozen maar is doordat daarbij de beste prestaties worden behaald. Om dit te bewijzen worden nu de resultaten bekeken voor een verschillend aantal verborgen toestanden. Hierbij zal gebruik worden gemaakt van de bekomen resultaten voor het optimale model waarbij rekening wordt gehouden met het aantal vingers en de positie en richting van de handen met vaste fictieve waarden. Deze resultaten zijn opgenomen in Figuur 8.6. Uit de figuur valt eerst en vooral op dat drie verborgen toestanden tot de beste resultaten leidt. Anderzijds is er ook nog te zien dat het resultaat voor één en twee verborgen toestanden identiek is, ook de bekomen confusion matrices zijn voor beide steeds identiek (ook terug te vinden op de DVD). Dit is een fenomeen dat opnieuw voor alle uitgevoerde testen is waargenomen en waarvoor geen directe verklaring werd gevonden. Dat er voor één en twee verborgen toestanden dezelfde resultaten worden bekomen betekent dat een HMM met twee verborgen toestanden hetzelfde is als een Naive Beyes classifier (wat een HMM met één verborgen toestand in weze is). Om alles samen te vatten kan er dus gesteld worden dat het beste model gebruik maakt van het aantal vingers en de positie en richting van de handen waarbij een vaste fictieve waarde wordt gebruikt, en dit alles bij drie verborgen toestanden. Voor dit model zijn nog

68 8.2 Dataset 7 gebaren 54 Figuur 8.4: Resultaten bij gebruik van gecombineerde modellen met 3 verborgen toestanden voor de verschillende testen. Figuur 8.5: Resultaten bij gebruik van gecombineerde modellen met 3 verborgen toestanden voor de verschillende testen met gerelativeerde vingerposities.

69 8.3 Dataset 20 gebaren 55 eens alle resultaten weergegeven voor normale test in Figuur Dataset 20 gebaren Naarmate de masterproef evolueerde zijn er op regelmatige momenten uitbreidingen gedaan aan de dataset. Deze uitbreidingen resulteerden in een uiteindelijke dataset met twintig gebaren die opgenomen zijn voor drie personen. Op deze dataset is een finale test uitgevoerd voor het optimale model om na te gaan in hoeverre de in deze masterproef gehanteerde methode voor herkenning van gebaren schaalt naar een grotere dataset. Echter is er alsnog gekeken naar een aantal verborgen toestanden hoger dan drie, met name vier en vijf. Dit omdat er meer overlap tussen gebaren aanwezig kan zijn waardoor een hoger aantal verborgen toestanden de prestatie zou kunnen beïnvloeden. De resultaten die in Figuur 8.8 zijn opgenomen bewijzen dat drie verborgen toestanden het optimale model blijft. Hoewel drie en vier verborgen toestanden dezelfde resultaten oplevert voor de normale test is dit bij kruisvalidatie niet het geval en worden daar steeds minder goede resultaten behaald voor een hoger aantal verborgen toestanden. De enige uitzondering hierop is persoon 1 waarbij voor vijf verborgen toestanden 39,33% wordt behaald, echter is dit toch nog lager dan het resultaat voor drie verborgen toestanden en dus blijft het optimale model voor de dataset van zeven gebaren ook hier gelden. Voor kruisvalidatie is echter wel een duidelijke daling in prestatie te zien bij het gebruik van twintig gebaren. Het is dus noodzakelijk om bij een groter aantal gebaren trainingsdata op te nemen voor iedere gebruiker uit de testset. Hoewel de 85,33% die hier behaald wordt voor de normale test lager ligt dan de 94,29% bekomen bij de dataset van zeven gebaren kunnen deze niet rechtstreeks worden vergeleken. Om ze toch tegenover elkaar af te wegen zullen de random percentages in rekening worden gebracht waarbij wordt nagegaan hoe goed beide presteren in vergelijking met een random classifier. Voor de dataset van zeven gebaren komt het random percentage uit op 14,29% wat wil zeggen dat het optimale model met HMMs 6,6 keer beter presteert dan een random classifier. De dataset van twintig gebaren heeft een random percentage van 5% waardoor het model met HMMs 17 keer betere prestatie oplevert. Er kan dus besloten worden dat de prestatie bij een dataset van twintig gebaren niet per se slechter is dan de prestatie bij een dataset van zeven gebaren ondanks dat er geen rechtstreekse vergelijking mogelijk is. Als laatste zal de confusion matrix voor normale test met drie verborgen toestanden in meer detail bekeken worden. Deze confusion matrix is te zien in Figuur 8.9. In deze confusion matrix stelt de horizontale as het voorspelde gebaar voor terwijl de verticale as het eigenlijke gebaar voorstelt. De waarden die in de matrix terug te vinden zijn stellen het aantal

70 8.3 Dataset 20 gebaren 56 Figuur 8.6: Resultaten bij gebruik van optimale model met vaste fictieve waarde bij verschillende aantallen verborgen toestanden. Figuur 8.7: Resultaten bij gebruik van het optimale model voor zeven gebaren.

71 8.3 Dataset 20 gebaren 57 Figuur 8.8: Resultaten bij gebruik van het optimale model voor twintig gebaren bij verschillende aantallen verborgen toestanden. Figuur 8.9: Confusion matrix van de normale test met optimaal model voor twintig gebaren.

72 8.3 Dataset 20 gebaren 58 detecties voor, wetende dat elk gebaar vijftien keer voorkomt in de dataset wil dit zeggen dat een vijftien op de diagonaal een perfect voorspelbaar gebaar is. Wat meteen opvalt in deze confusion matrix is de onderbreking in de diagonaal bij gebaar elf. Dit gebaar is geen enkele keer correct voorspeld en heeft dus een grote invloed gehad op de totale accuraatheid. Het is wel negen keer als gebaar drie voorspeld wat op de initiële houding bij uitvoering van het gebaar na identieke gebaren zijn. Gebaar drie is hierbij aanraken terwijl gebaar elf gooien voorstelt. Het onderscheid tussen deze gebaren is dus moeilijk te maken door de software aan de hand van de verkregen data omdat die initiële toestand maar van zeer korte duur is. Verder zijn er nog wat afwijkingen te zien die meestal vrij klein zijn en het gevolg zijn van één element van het gebaar dat identiek is zijnde het aantal vingers, de positie of richting van de handen. Zoals bij gebaar twintig dat vier keer verward wordt met gebaar negen doordat de positie van de handen amper verschilt.

73 CONCLUSIE 59 Hoofdstuk 9 Conclusie In deze masterproef werd onderzocht of er goede herkenning van gebaren kan verwezenlijkt worden door gebruik te maken van 3D data. Om tot de 3D data te komen werd gebruik gemaakt van opnames die hebben plaatsgevonden met de Kinect camera. Uit die opnames werden vervolgens het aantal vingers, de positie en richting van de handen alsook de positie en richting van de vingers gehaald met zelf ontworpen software die gebruik maakt van bestaande bibliotheken en raamwerken. Voor het effectief detecteren van de gebaren zijn een aantal HMMs geconstrueerd die dan getraind werden om er testen mee te kunnen uitvoeren. Deze HMMs werden dan ook nog eens gecombineerd om tot hogere accuraatheid bij de detectie van gebaren te komen. Ondanks het vele onderzoek dat reeds is gebeurd omtrent het herkennen van gebaren bleek het gebruik van 3D data meestal achterwege te blijven en aldus was er geen software ter beschikking voor het achterhalen van de data in 3D. Als eerste deel werd er dan ook een eigen vingerdetectie geïmplementeerd die na het detecteren van een gebruiker deze zijn handen uit het beeld moest knippen. Na het uitknippen van de handen diende er nog een aantal stappen te gebeuren om tot de nodige datapunten voor iedere gevonden hand te komen voor training van de HMMs. Naast de vingerdetectie werd er ook nog een smoothing geïmplementeerd en getest om de afwijkingen die optreden ten gevolge van storingen in de videobeelden van de Kinect zo veel mogenlijk te minimaliseren. Dit was allemaal onverwacht werk dat nodig was om verder te kunnen bij het herkennen van gebaren aan de hand van de 3D data. Uit de resultaten is gebleken dat er goede herkenning van gebaren kan plaatsvinden door gebruik te maken van 3D data in HMMs. Hoewel het uitgevoerde werk niet meteen kan vergeleken worden met ander werk duiden de hoge behaalde accuraatheden van 94,27% bij zeven gebaren en 85,33% bij twintig gebaren duidelijk op potentieel voor het gebruiken van 3D data bij het herkennen van gebaren. Het achterwege laten van de positie en richting

74 CONCLUSIE 60 voor de vingers was onverwacht maar deze data bracht duidelijk geen meerwaarde met zich mee bij de herkenning van gebaren door de gevoeligheid aan afwijkingen. De overblijvende data, zijnde aantal vingers, positie en richting van de handen, leidde met een eenvoudige methode van gecombineerde HMMs reeds tot goede resultaten. Dit doet vermoeden dat er nog hogere resultaten bereikt kunnen worden door de data samen onder te brengen in één HMM. Echter brengt dit nog heel wat werk mee omdat het dan een HMM met zowel discrete als continue distributie moet zijn waarvoor nog geen bestaande machine learning bibliotheek ondersteuning bied. Bij het gebruik van twintig gebaren is gebleken dat twee bijna identieke gebaren niet onderscheiden kunnen worden en er steeds naar één van beide gebaren wordt afgedwaald. Hiervoor zijn andere methoden misschien beter geschikt maar in geen enkel van de werken die ik reeds heb bestudeerd heb ik iets terug gevonden over de prestatie bij bijna identieke gebaren. Indien dit gebaar niet aanwezig was en een ander gebaar was gebruikt zou het percentage van correct voorspelde gebaren ongetwijfeld hoger liggen maar door het toeval bij samenstelling van de dataset ben ik toch tot deze conclusie kunnen komen. De overstap van een dataset met zeven gebaren naar een dataset met twintig gebaren heeft aangetoond dat de in deze masterproef gehanteerde methode goed generaliseert naar meerdere gebaren. De gebarenset kan dus worden uitgebreid zonder al te veel in te boeten aan de accuraatheid van detectie. Echter zijn er nog steeds twee punten die een rem zetten op de prestatie hoewel dit niet duidelijk is uit de resultaten. Enerzijds is er de kalibratie van de gebruiker, hoewel deze automatisch gebeurt speelt deze toch mee bij het achterhalen van de data uit de dataset omdat er steeds zekerheid moet zijn van kalibratie. Indien de kalibratie iets langer dan normaal zou duren gaan er een aantal datapunten verloren wat onrechtstreeks invloed kan hebben op de accuraatheid. Anderzijds is er ook de eigen vingerdetectie waarvoor maar een beperkte tijd kon worden uitgetrokken met als gevolg dat deze ongetwijfeld verder geoptimaliseerd kan worden. Om alles nog even samen te vatten ben ik in deze masterproef tot een accurate detectie van gebaren gekomen die gebruik maakt van HMMs met drie verborgen toestanden. De datapunten die hierbij gebruikt worden zijn het aantal vingers, de positie en richting van de handen. Ik ben niet gekomen tot het herkennen van gebaren in ware tijd. Hoewel de geschreven code wel ondersteuning bied voor een live stream van de Kinect waarbij ook de datapunten achterhaald worden dient er voor de herkenning van gebaren nog een fragmentatie in de tijd te gebeuren. Hierbij zou nog heel wat werk komen kijken.

75 ROS (ROBOT OPERATING SYSTEM) 61 Bijlage A ROS (Robot Operating System) In deze appendix is meer informatie over het ROS raamwerk terug te vinden zoals onder meer het opzetten van het raamwerk alsook de Kinect demo s, een lijst met de mogelijke commando s en de werking van de vinger-detectie demo. Veel van de informatie die hier beschreven staat is ook terug te vinden op de ROS webpagina, echter zijn er hier eigen toevoegingen gedaan en vormt het een beknopte leidraad tot het opzetten en gebruiken van de vinger-detectie demo. A.1 Het raamwerk opzetten Om ROS te installeren kan je beginnen vanaf [29], als besturingssysteem raad ik persoonlijk Ubuntu aan. Indien je toch een nieuwere versie van Ubuntu wenst te gebruiken zal je te kampen krijgen met problemen omdat er voor die versies nog geen ondersteuning voorzien werd voor de Kinect demo s. Verder is het uitermate belangrijk om iedere stap van de installatie te volgen zoals op de website aangegeven, indien een stap wordt overgeslagen of vergeten is het lastig om te achterhalen welke stap dit is om het vervolgens recht te zetten. Hier volgt een kort stappenplan voor het installeren van ROS met het oog op gebruik van de Kinect demo s: ˆ Kies een versie, bij voorkeur electric ˆ Installeer het desktop pakket van de door u gekozen ROS versie ˆ Installeer de openni packages met de nodige tools ˆ Installeer een Kinect demo naar keuze Zorg er ook zeker voor dat de werkomgeving in het bashrc bestand is aangepast, de commando s die hiervoor zorgen worden best met root rechten (sudo) uitgevoerd om het

76 A.2 De opbouw van het raamwerk 62 toevoegen te garanderen. Na de installatie zou je in staat moeten zijn om de Kinect demo s uit te voeren op voorwaarde dat de Kinect aangesloten is. A.2 De opbouw van het raamwerk De ROS depository is in de loop der jaren blijven groeien en is vandaag dus zeer groot geworden, daarom hebben we dan ook het desktop pakket geïnstalleerd en niet alles dat in de electric versie is opgenomen. Wat de versies betreft zijn er nog 2 oudere versies alsook twee nieuwere versies beschikbaar, waarbij de nieuwere versies geen ondersteuning bieden voor de Kinect demo s. ROS bevat zeer veel packages die in een aantal stack zijn opgenomen, bovendien kunnen er meerdere stacks aanwezig zijn binnen een ROS versie. De packages omvatten de eigenlijke modules oftewel nodes van ROS die elk hun eigen functionaliteiten bevatten. Om het navigeren tussen en manipuleren van al deze mappen te vereenvoudigen heeft ROS een eigen versie van verscheidene Unix commando s geïmplementeerd. Roscd en rosls zijn de ROS varianten voor cd en ls. Met roscd kan je door de naam van een stack of package mee te geven meteen navigeren naar de hoofdirectory van die stack of package. Rosls laat dan weer toe om de inhoud van de meegegeven stack of package te bekijken zonder heel het pad in te geven. Rosstack en rospack laten toe om naar bepaalde stacks of packages te zoeken door de naam ervan als argument mee te geven. Beide commando,s geven het pad naar de stack of package terug indien deze gevonden is, het is dus een handig vervangmiddel om niet het volledige pad te moeten invullen bij het aanmaken van scripts. Indien gewenst kan er ook andere informatie worden opgevraagd door extra argumenten mee te geven. Rosmake laat toe om een package te compileren door de naam van de package als argument mee te geven, wat veel gebruiksvriendelijker is dan helemaal naar de package te moeten navigeren om deze vervolgens met make te compileren. Rosdep is een belangrijk commando om na te gaan welke dependencies een package heeft, en deze dan ook meteen te compileren. Indien een dependency niet gevonden is zal deze automatisch geïnstalleerd worden op voorwaarde dat het als root wordt uitgevoerd. Rosrun laat toe om een node uit te voeren door de naam ervan mee te geven als argument. Hou er wel rekening mee dat de node bereikbaar moet zijn vanuit ROS PACKAGE PATH en dat deze daarnaast ook reeds gecompileerd is. Indien één van deze voorwaarden niet voldaan is zal er een foutmelding worden gegeven. Rostopic stelt de gebruiker in staat om alle informatie over een topic op te vragen. Dit commando kan ook gebruikt worden om alle topics of een specifieke topic te bekijken. Bij

77 A.2 De opbouw van het raamwerk 63 het opvragen kan de informatie die de topic ontvangt of verzend bekeken worden. Rosnode laat toe om alle draaiende nodes te bekijken, onafhankelijk of deze individueel gestart zijn of via een master node. Er kan ook gekozen worden om meer informatie van een draaiende node te bekijken, deze node te stoppen, pingen en dergelijke. Roscore is een absolute must indien meerdere nodes gebruikt worden. Dit commando zal een aantal benodigde nodes opstarten die de communicatie tussen nodes onderling mogelijk zullen maken. Het uitvoeren van dit commando zal drie ROS elementen starten: ˆ Master De communicatie binnen ROS gebeurt volgens een publisher-subscriber patroon waarbij de ROS master instaat voor het registreren en de naamgeving van alle nodes uit het raamwerk. Zo kunnen nodes met elkaar communiceren en elkaar services aanbieden of deze van elkaar gebruiken. De master is dus noodzakelijk om verschillende nodes connectie te laten maken met elkaar, waarna ze peer-to-peer kunnen communiceren. ˆ Parameter server Deze zogenaamde server is volledig gedeeld met alle nodes om ze in staat te stellen parameters op te slaan of te verkrijgen. Het is echter niet ontworpen voor zware lasten en kan dus best enkel gebruikt worden voor opslag van parameters voor de configuratie van nodes. Volgende parameter types zijn toegestaan: 32-bit integer boolean string double iso8601 datum list base64-geëncodeerde binaire data ˆ Rosout Dit is een node die instaat voor het bijhouden van logs. Roslaunch stelt de gebruiker in staat om een ROS package uit te voeren zonder naar de directory te navigeren. Dit kan enkel gebruikt worden op voorwaarde dat de package in kwestie gevonden kan worden door ROS en dat deze daarnaast ook nog een launch file bevat. Over de launch files volgt later nog meer.

78 A.2 De opbouw van het raamwerk 64 Om al deze commando s en nog anderen te bekijken alsook meer inzicht te krijgen in de opbouw en de werking van het ROS raamwerk is het sterk aangeraden om de tutorials te doorlopen. Deze tutorials zijn terug te vinden op de wiki en laten je zelf een volledige package maken waardoor de structuur en werking ervan meteen duidelijk worden. Naast al deze commando s bevat ROS ook nog een aantal tools om te bekijken wat er gebeurt in één of meerdere nodes of om een visueel beeld te krijgen van de werking van bepaalde nodes. Rxplot geeft een weergave van de data voor één of meerdere ROS topics in de vorm van een grafiek. Rxgraph laat de verschillende nodes zien alsook de relaties tussen elkaar door gebruik te maken van ovalen en connectielijnen. Deze tool kan zeer handig zijn om meer inzicht te krijgen in de nodes die gebruikt worden voor bepaalde packages. In Figuur A.1 zijn de nodes en bijhorende relaties te zien voor de vinger-detectie, bij de lijnen staat de naam van de bijhorende topic en in een ovaal staat de naam van de bijhorende node. Het is meteen duidelijk dat er al een aantal nodes vereist zijn bij de uitvoering van de vinger-detectie demo. Rosbag kan gebruikt worden om een datastroom op te nemen en deze vervolgens ook op te slaan in een bestand met extensie.bag. De opgenomen data kan dan later opnieuw worden afgespeeld door het opgeslagen bestand te gebruiken, hierbij kan onder meer de afspeelsnelheid worden aangepast. Dit is vooral bruikbaar voor het opnemen van data die achteraf regelmatig terug gebruikt zal worden zodat deze niet steeds opnieuw moet worden uitgevoerd maar gewoon kan worden afgespeeld. Rviz is voor deze scriptie een zeer handige tool omdat deze toelaat de omgeving te vizualizeren in 3D op de manier waarop de camera of sensoren deze zien of detecteren. Er kan vrij nauwkeurig worden ingesteld wat er juist zichtbaar moet zijn en wat overbodig is. Bij de vinger-detectie bijvoorbeeld is er niet veel nut aan de omgeving en zijn enkel de handen belangrijk. Rziv kan dan worden ingesteld zodat we enkel dit te zien krijgen zoals zichtbaar is in Figuur A.2. In de figuur zien we hoe de Kinect met behulp van de vinger-detectie code twee handen detecteert, waarvan één thumbs-up en een open hand met de palm naar de Kinect gericht. Nu zullen we nog even kijken naar de van een launch file. Zoals reeds eerder aan bod is gekomen kunnen de launch files uitgevoerd worden via het roslaunch commando, maar wat omvat dergelijke launch file dan precies? Een launch file is geschreven in een vorm van XML en kan zowel nodes als parameters bevatten. De files kunnen bestaan uit een hiërarchy van andere files waarbij een depth-first algoritme wordt toegepast voor de uitvoering, zodat de diepste files eerst uitgevoerd worden. Een parameter

79 A.2 De opbouw van het raamwerk 65 Figuur A.1: Rxgraph van de vinger-detectie uit het ROS raamwerk. beschrijving omvat een naam en waarde voor de parameter waarbij ook substitutieargumenten zoals $ROS PACKAGE PATH gebruikt kunnen worden. Indien meerdere parameters met dezelfde naam gedefinieerd zijn, zal de laatste definitie gebruikt worden als waarde. Nodes bevatten een naam, een package naam, een type en eventueel argumenten. Verder zijn er nog enkele mogelijkheden die beschikbaar zijn voor de launch files waaronder if en unless. If zal een tag, zijnde het parameters of nodes, in rekening brengen indien aan een bepaalde voorwaarde voldaan is terwijl deze met unless uitgesloten kunnen worden door aan de voorwaarde te voldoen. Hoewel een launch file voornamelijk bestaat uit parameters en nodes kunnen er daarnaast ook nog andere tags gedefinieerd worden: ˆ Launch is het hoofdelement waarbinnen alle andere tags gedefinieerd worden. ˆ Machine definieert het toestel waar de nodes uitgevoerd kunnen worden, maar is niet toepasselijk aangezien we lokaal zullen werken. ˆ Include wordt gebruikt om andere launch files te integreren in de huidige launch file. ˆ Remap laat naamveranderingen toe voor argumenten van de ROS node. ˆ Env gebruikt men om variabelen in te stellen voor nodes die gestart zullen worden. ˆ Rosparam kan parameters ophalen uit en opslaan op de parameter server, die zoals eerder vermeld gestart wordt door roscore.

80 A.2 De opbouw van het raamwerk 66 Figuur A.2: Rviz voorbeeld van de vinger-detectie uit het ROS raamwerk. ˆ Group laat toe om groepen te maken in een launchfile zodat instellingen toegepast worden toegepast op een groep van nodes. ˆ Test is in principe hetzelde als een node tag maar benadrukt specifiek dat het om een te testen node gaat. Hou er wel rekening mee dat de tags enkel kleine letters bevatten en de hoofdletters hier enkel waren toegevoegd om de opmaak proper te houden. Ter illustratie zullen we nu de launch file voor vinger-detectie bekijken aan de hand van een korte toelichting. <launch> <! launch k i n e c t s e n s o r > <i n c l u d e f i l e = $ ( f i n d openni camera )/ launch / openni node. launch /> <! run hand d e t e c t i o n > <node pkg= h a n d i n t e r a c t i o n type= d e t e c t s k e l h a n d s name= handdetector output= s c r e e n respawn= true /> <! This reduces the point cloud r e s o l u t i o n to 320 x240, f o r f a s t hand

S e v e n P h o t o s f o r O A S E. K r i j n d e K o n i n g

S e v e n P h o t o s f o r O A S E. K r i j n d e K o n i n g S e v e n P h o t o s f o r O A S E K r i j n d e K o n i n g Even with the most fundamental of truths, we can have big questions. And especially truths that at first sight are concrete, tangible and proven

Nadere informatie

04/11/2013. Sluitersnelheid: 1/50 sec = 0.02 sec. Frameduur= 2 x sluitersnelheid= 2/50 = 1/25 = 0.04 sec. Framerate= 1/0.

04/11/2013. Sluitersnelheid: 1/50 sec = 0.02 sec. Frameduur= 2 x sluitersnelheid= 2/50 = 1/25 = 0.04 sec. Framerate= 1/0. Onderwerpen: Scherpstelling - Focusering Sluitersnelheid en framerate Sluitersnelheid en belichting Driedimensionale Arthrokinematische Mobilisatie Cursus Klinische Video/Foto-Analyse Avond 3: Scherpte

Nadere informatie

Non Diffuse Point Based Global Illumination

Non Diffuse Point Based Global Illumination Non Diffuse Point Based Global Illumination Karsten Daemen Thesis voorgedragen tot het behalen van de graad van Master of Science in de ingenieurswetenschappen: computerwetenschappen Promotor: Prof. dr.

Nadere informatie

Pesten onder Leerlingen met Autisme Spectrum Stoornissen op de Middelbare School: de Participantrollen en het Verband met de Theory of Mind.

Pesten onder Leerlingen met Autisme Spectrum Stoornissen op de Middelbare School: de Participantrollen en het Verband met de Theory of Mind. Pesten onder Leerlingen met Autisme Spectrum Stoornissen op de Middelbare School: de Participantrollen en het Verband met de Theory of Mind. Bullying among Students with Autism Spectrum Disorders in Secondary

Nadere informatie

COGNITIEVE DISSONANTIE EN ROKERS COGNITIVE DISSONANCE AND SMOKERS

COGNITIEVE DISSONANTIE EN ROKERS COGNITIVE DISSONANCE AND SMOKERS COGNITIEVE DISSONANTIE EN ROKERS Gezondheidsgedrag als compensatie voor de schadelijke gevolgen van roken COGNITIVE DISSONANCE AND SMOKERS Health behaviour as compensation for the harmful effects of smoking

Nadere informatie

Media en creativiteit. Winter jaar vier Werkcollege 7

Media en creativiteit. Winter jaar vier Werkcollege 7 Media en creativiteit Winter jaar vier Werkcollege 7 Kwartaaloverzicht winter Les 1 Les 2 Les 3 Les 4 Les 5 Les 6 Les 7 Les 8 Opbouw scriptie Keuze onderwerp Onderzoeksvraag en deelvragen Bespreken onderzoeksvragen

Nadere informatie

LDA Topic Modeling. Informa5ekunde als hulpwetenschap. 9 maart 2015

LDA Topic Modeling. Informa5ekunde als hulpwetenschap. 9 maart 2015 LDA Topic Modeling Informa5ekunde als hulpwetenschap 9 maart 2015 LDA Voor de pauze: Wat is LDA? Wat kan je er mee? Hoe werkt het (Gibbs sampling)? Na de pauze Achterliggende concepten à Dirichlet distribu5e

Nadere informatie

Taco Schallenberg Acorel

Taco Schallenberg Acorel Taco Schallenberg Acorel Inhoudsopgave Introductie Kies een Platform Get to Know the Jargon Strategie Bedrijfsproces Concurrenten User Experience Marketing Over Acorel Introductie THE JARGON THE JARGON

Nadere informatie

Appendix A: List of variables with corresponding questionnaire items (in English) used in chapter 2

Appendix A: List of variables with corresponding questionnaire items (in English) used in chapter 2 167 Appendix A: List of variables with corresponding questionnaire items (in English) used in chapter 2 Task clarity 1. I understand exactly what the task is 2. I understand exactly what is required of

Nadere informatie

Opgave 2 Geef een korte uitleg van elk van de volgende concepten: De Yield-to-Maturity of a coupon bond.

Opgave 2 Geef een korte uitleg van elk van de volgende concepten: De Yield-to-Maturity of a coupon bond. Opgaven in Nederlands. Alle opgaven hebben gelijk gewicht. Opgave 1 Gegeven is een kasstroom x = (x 0, x 1,, x n ). Veronderstel dat de contante waarde van deze kasstroom gegeven wordt door P. De bijbehorende

Nadere informatie

Security Les 1 Leerling: Marno Brink Klas: 41B Docent: Meneer Vagevuur

Security Les 1 Leerling: Marno Brink Klas: 41B Docent: Meneer Vagevuur Security Les 1 Leerling: Klas: Docent: Marno Brink 41B Meneer Vagevuur Voorwoord: In dit document gaan we beginnen met de eerste security les we moeten via http://www.politiebronnen.nl moeten we de IP

Nadere informatie

ETS 4.1 Beveiliging & ETS app concept

ETS 4.1 Beveiliging & ETS app concept ETS 4.1 Beveiliging & ETS app concept 7 juni 2012 KNX Professionals bijeenkomst Nieuwegein Annemieke van Dorland KNX trainingscentrum ABB Ede (in collaboration with KNX Association) 12/06/12 Folie 1 ETS

Nadere informatie

Ontpopping. ORGACOM Thuis in het Museum

Ontpopping. ORGACOM Thuis in het Museum Ontpopping Veel deelnemende bezoekers zijn dit jaar nog maar één keer in het Van Abbemuseum geweest. De vragenlijst van deze mensen hangt Orgacom in een honingraatpatroon. Bezoekers die vaker komen worden

Nadere informatie

Dutch survival kit. Vragen hoe het gaat en reactie Asking how it s going and reaction. Met elkaar kennismaken Getting to know each other

Dutch survival kit. Vragen hoe het gaat en reactie Asking how it s going and reaction. Met elkaar kennismaken Getting to know each other Dutch survival kit This Dutch survival kit contains phrases that can be helpful when living and working in the Netherlands. There is an overview of useful sentences and phrases in Dutch with an English

Nadere informatie

Firewall van de Speedtouch 789wl volledig uitschakelen?

Firewall van de Speedtouch 789wl volledig uitschakelen? Firewall van de Speedtouch 789wl volledig uitschakelen? De firewall van de Speedtouch 789 (wl) kan niet volledig uitgeschakeld worden via de Web interface: De firewall blijft namelijk op stateful staan

Nadere informatie

Invloed van het aantal kinderen op de seksdrive en relatievoorkeur

Invloed van het aantal kinderen op de seksdrive en relatievoorkeur Invloed van het aantal kinderen op de seksdrive en relatievoorkeur M. Zander MSc. Eerste begeleider: Tweede begeleider: dr. W. Waterink drs. J. Eshuis Oktober 2014 Faculteit Psychologie en Onderwijswetenschappen

Nadere informatie

Het beheren van mijn Tungsten Network Portal account NL 1 Manage my Tungsten Network Portal account EN 14

Het beheren van mijn Tungsten Network Portal account NL 1 Manage my Tungsten Network Portal account EN 14 QUICK GUIDE C Het beheren van mijn Tungsten Network Portal account NL 1 Manage my Tungsten Network Portal account EN 14 Version 0.9 (June 2014) Per May 2014 OB10 has changed its name to Tungsten Network

Nadere informatie

Bijlage 2: Informatie met betrekking tot goede praktijkvoorbeelden in Londen, het Verenigd Koninkrijk en Queensland

Bijlage 2: Informatie met betrekking tot goede praktijkvoorbeelden in Londen, het Verenigd Koninkrijk en Queensland Bijlage 2: Informatie met betrekking tot goede praktijkvoorbeelden in Londen, het Verenigd Koninkrijk en Queensland 1. Londen In Londen kunnen gebruikers van een scootmobiel contact opnemen met een dienst

Nadere informatie

Verschil in Perceptie over Opvoeding tussen Ouders en Adolescenten en Alcoholgebruik van Adolescenten

Verschil in Perceptie over Opvoeding tussen Ouders en Adolescenten en Alcoholgebruik van Adolescenten Verschil in Perceptie over Opvoeding tussen Ouders en Adolescenten en Alcoholgebruik van Adolescenten Difference in Perception about Parenting between Parents and Adolescents and Alcohol Use of Adolescents

Nadere informatie

De Relatie tussen Werkdruk, Pesten op het Werk, Gezondheidsklachten en Verzuim

De Relatie tussen Werkdruk, Pesten op het Werk, Gezondheidsklachten en Verzuim De Relatie tussen Werkdruk, Pesten op het Werk, Gezondheidsklachten en Verzuim The Relationship between Work Pressure, Mobbing at Work, Health Complaints and Absenteeism Agnes van der Schuur Eerste begeleider:

Nadere informatie

Lichamelijke factoren als voorspeller voor psychisch. en lichamelijk herstel bij anorexia nervosa. Physical factors as predictors of psychological and

Lichamelijke factoren als voorspeller voor psychisch. en lichamelijk herstel bij anorexia nervosa. Physical factors as predictors of psychological and Lichamelijke factoren als voorspeller voor psychisch en lichamelijk herstel bij anorexia nervosa Physical factors as predictors of psychological and physical recovery of anorexia nervosa Liesbeth Libbers

Nadere informatie

Unlocking the potential of public available gene expression data for large-scale analysis

Unlocking the potential of public available gene expression data for large-scale analysis Faculty of Science and Bio-engineering Sciences Department of Computer Science Computational Modeling Lab Unlocking the potential of public available gene expression data for large-scale analysis Jonatan

Nadere informatie

Uitgebreid eindwerkvoorstel Lokaliseren van personen en objecten met behulp van camera s

Uitgebreid eindwerkvoorstel Lokaliseren van personen en objecten met behulp van camera s Uitgebreid eindwerkvoorstel Lokaliseren van personen en objecten met behulp van camera s Sofie De Cooman 21 December 2006 Stagebedrijf: Interne begeleider: Externe begeleider: BarcoView Koen Van De Wiele

Nadere informatie

De Invloed van Kenmerken van ADHD op de Theory of Mind: een Onderzoek bij Kinderen uit de Algemene Bevolking

De Invloed van Kenmerken van ADHD op de Theory of Mind: een Onderzoek bij Kinderen uit de Algemene Bevolking Kenmerken van ADHD en de Theory of Mind 1 De Invloed van Kenmerken van ADHD op de Theory of Mind: een Onderzoek bij Kinderen uit de Algemene Bevolking The Influence of Characteristics of ADHD on Theory

Nadere informatie

CHROMA STANDAARDREEKS

CHROMA STANDAARDREEKS CHROMA STANDAARDREEKS Chroma-onderzoeken Een chroma geeft een beeld over de kwaliteit van bijvoorbeeld een bodem of compost. Een chroma bestaat uit 4 zones. Uit elke zone is een bepaald kwaliteitsaspect

Nadere informatie

Usage guidelines. About Google Book Search

Usage guidelines. About Google Book Search This is a digital copy of a book that was preserved for generations on library shelves before it was carefully scanned by Google as part of a project to make the world s books discoverable online. It has

Nadere informatie

Over dit boek. Richtlijnen voor gebruik

Over dit boek. Richtlijnen voor gebruik Over dit boek Dit is een digitale kopie van een boek dat al generaties lang op bibliotheekplanken heeft gestaan, maar nu zorgvuldig is gescand door Google. Dat doen we omdat we alle boeken ter wereld online

Nadere informatie

de Rol van Persoonlijkheid Eating: the Role of Personality

de Rol van Persoonlijkheid Eating: the Role of Personality De Relatie tussen Dagelijkse Stress en Emotioneel Eten: de Rol van Persoonlijkheid The Relationship between Daily Stress and Emotional Eating: the Role of Personality Arlette Nierich Open Universiteit

Nadere informatie

WWW.EMINENT-ONLINE.COM

WWW.EMINENT-ONLINE.COM WWW.EMINENT-OINE.COM HNDLEIDING USERS MNUL EM1016 HNDLEIDING EM1016 USB NR SERIEEL CONVERTER INHOUDSOPGVE: PGIN 1.0 Introductie.... 2 1.1 Functies en kenmerken.... 2 1.2 Inhoud van de verpakking.... 2

Nadere informatie

Understanding and being understood begins with speaking Dutch

Understanding and being understood begins with speaking Dutch Understanding and being understood begins with speaking Dutch Begrijpen en begrepen worden begint met het spreken van de Nederlandse taal The Dutch language links us all Wat leest u in deze folder? 1.

Nadere informatie

Process Mining and audit support within financial services. KPMG IT Advisory 18 June 2014

Process Mining and audit support within financial services. KPMG IT Advisory 18 June 2014 Process Mining and audit support within financial services KPMG IT Advisory 18 June 2014 Agenda INTRODUCTION APPROACH 3 CASE STUDIES LEASONS LEARNED 1 APPROACH Process Mining Approach Five step program

Nadere informatie

Screen Design. Deliverable 3 - Visual Design. Pepijn Gieles 0877217 19-12-2014. Docent: Jasper Schelling

Screen Design. Deliverable 3 - Visual Design. Pepijn Gieles 0877217 19-12-2014. Docent: Jasper Schelling Screen Design Deliverable 3 - Visual Design Pepijn Gieles 0877217 19-12-2014 Docent: Jasper Schelling Hulp bij het inloggen Inloggen Particulier Personal Banking Private Banking Zakelijk Zoeken in Particulier

Nadere informatie

Mondeling tentamen Havo - ERK niveau B1 / B1 +

Mondeling tentamen Havo - ERK niveau B1 / B1 + Mondeling tentamen Havo - ERK niveau B / B + Het mondeling voor Engels Havo duurt 5 minuten en bestaat uit een gesprek met je docent waarin de volgende onderdelen aan de orde komen: *Je moet een stukje

Nadere informatie

Wat is Interaction Design?

Wat is Interaction Design? Wat is Interaction Design? Wat is interaction design? Designing interactive products to support the way people communicate and interact in their everyday and working lives. Preece, Sharp and Rogers (2015)

Nadere informatie

Emotioneel Belastend Werk, Vitaliteit en de Mogelijkheid tot Leren: The Manager as a Resource.

Emotioneel Belastend Werk, Vitaliteit en de Mogelijkheid tot Leren: The Manager as a Resource. Open Universiteit Klinische psychologie Masterthesis Emotioneel Belastend Werk, Vitaliteit en de Mogelijkheid tot Leren: De Leidinggevende als hulpbron. Emotional Job Demands, Vitality and Opportunities

Nadere informatie

Stichting NIOC en de NIOC kennisbank

Stichting NIOC en de NIOC kennisbank Stichting NIOC Stichting NIOC en de NIOC kennisbank Stichting NIOC (www.nioc.nl) stelt zich conform zijn statuten tot doel: het realiseren van congressen over informatica onderwijs en voorts al hetgeen

Nadere informatie

ECHTE MANNEN ETEN GEEN KAAS PDF

ECHTE MANNEN ETEN GEEN KAAS PDF ECHTE MANNEN ETEN GEEN KAAS PDF ==> Download: ECHTE MANNEN ETEN GEEN KAAS PDF ECHTE MANNEN ETEN GEEN KAAS PDF - Are you searching for Echte Mannen Eten Geen Kaas Books? Now, you will be happy that at this

Nadere informatie

De Relatie tussen Betrokkenheid bij Pesten en Welbevinden en de Invloed van Sociale Steun en. Discrepantie

De Relatie tussen Betrokkenheid bij Pesten en Welbevinden en de Invloed van Sociale Steun en. Discrepantie De Relatie tussen Betrokkenheid bij Pesten en Welbevinden en de Invloed van Sociale Steun en Discrepantie The Relationship between Involvement in Bullying and Well-Being and the Influence of Social Support

Nadere informatie

Interaction Design for the Semantic Web

Interaction Design for the Semantic Web Interaction Design for the Semantic Web Lynda Hardman http://www.cwi.nl/~lynda/courses/usi08/ CWI, Semantic Media Interfaces Presentation of Google results: text 2 1 Presentation of Google results: image

Nadere informatie

Functioneel Ontwerp / Wireframes:

Functioneel Ontwerp / Wireframes: Functioneel Ontwerp / Wireframes: Het functioneel ontwerp van de ilands applicatie voor op de iphone is gebaseerd op het iphone Human Interface Guidelines handboek geschreven door Apple Inc 2007. Rounded-Rectangle

Nadere informatie

How to install and use dictionaries on the ICARUS Illumina HD (E652BK)

How to install and use dictionaries on the ICARUS Illumina HD (E652BK) (for Dutch go to page 4) How to install and use dictionaries on the ICARUS Illumina HD (E652BK) The Illumina HD offers dictionary support for StarDict dictionaries.this is a (free) open source dictionary

Nadere informatie

Creatief onderzoekend leren

Creatief onderzoekend leren Creatief onderzoekend leren De onderwijskundige: Wouter van Joolingen Universiteit Twente GW/IST Het probleem Te weinig bèta's Te laag niveau? Leidt tot economische rampspoed. Hoe dan? Beta is spelen?

Nadere informatie

FOR DUTCH STUDENTS! ENGLISH VERSION NEXT PAGE. Toets Inleiding Kansrekening 1 22 februari 2013

FOR DUTCH STUDENTS! ENGLISH VERSION NEXT PAGE. Toets Inleiding Kansrekening 1 22 februari 2013 FOR DUTCH STUDENTS! ENGLISH VERSION NEXT PAGE Toets Inleiding Kansrekening 1 22 februari 2013 Voeg aan het antwoord van een opgave altijd het bewijs, de berekening of de argumentatie toe. Als je een onderdeel

Nadere informatie

Verschillen in het Gebruik van Geheugenstrategieën en Leerstijlen. Differences in the Use of Memory Strategies and Learning Styles

Verschillen in het Gebruik van Geheugenstrategieën en Leerstijlen. Differences in the Use of Memory Strategies and Learning Styles Verschillen in het Gebruik van Geheugenstrategieën en Leerstijlen tussen Leeftijdsgroepen Differences in the Use of Memory Strategies and Learning Styles between Age Groups Rik Hazeu Eerste begeleider:

Nadere informatie

UNIT 2 Begeleiding. Coaching proces, Instrumenten and vaardigheden voor Coacing en mobiliteit for Coaching and Mobility

UNIT 2 Begeleiding. Coaching proces, Instrumenten and vaardigheden voor Coacing en mobiliteit for Coaching and Mobility UNIT 2 Begeleiding Coaching proces, Instrumenten and vaardigheden voor Coacing en mobiliteit for Coaching and Mobility 1 2 Wat is coaching? Coaching is een methode voor het ontwikkelen van potentieel

Nadere informatie

Comics FILE 4 COMICS BK 2

Comics FILE 4 COMICS BK 2 Comics FILE 4 COMICS BK 2 The funny characters in comic books or animation films can put smiles on people s faces all over the world. Wouldn t it be great to create your own funny character that will give

Nadere informatie

Intercultural Mediation through the Internet Hans Verrept Intercultural mediation and policy support unit

Intercultural Mediation through the Internet Hans Verrept Intercultural mediation and policy support unit 1 Intercultural Mediation through the Internet Hans Verrept Intercultural mediation and policy support unit 2 Structure of the presentation - What is intercultural mediation through the internet? - Why

Nadere informatie

VAN HET VAGEVUUR IN DE HEL PDF

VAN HET VAGEVUUR IN DE HEL PDF VAN HET VAGEVUUR IN DE HEL PDF ==> Download: VAN HET VAGEVUUR IN DE HEL PDF VAN HET VAGEVUUR IN DE HEL PDF - Are you searching for Van Het Vagevuur In De Hel Books? Now, you will be happy that at this

Nadere informatie

De bijsluiter in beeld

De bijsluiter in beeld De bijsluiter in beeld Een onderzoek naar de inhoud van een visuele bijsluiter voor zelfzorggeneesmiddelen Oktober 2011 Mariëtte van der Velde De bijsluiter in beeld Een onderzoek naar de inhoud van een

Nadere informatie

Update Empowermentproject Awasi Kenia september 2013

Update Empowermentproject Awasi Kenia september 2013 Update Empowermentproject Kenia september 2013 Het Empowerment-project in Kenia van de Rotaryclub Rhenen-Veendaal begint aan de derde fase: een derde en laatste bezoek, met een Empowerment workshop voor

Nadere informatie

Relationele Databases 2002/2003

Relationele Databases 2002/2003 1 Relationele Databases 2002/2003 Hoorcollege 4 8 mei 2003 Jaap Kamps & Maarten de Rijke April Juli 2003 Plan voor Vandaag Praktische dingen 3.1, 3.2, 3.3, 3.4, 3.5. SQL Aantekeningen 2 Tabellen. Theorie

Nadere informatie

Relationele Databases 2002/2003

Relationele Databases 2002/2003 Relationele Databases 2002/2003 Hoorcollege 4 8 mei 2003 Jaap Kamps & Maarten de Rijke April Juli 2003 1 Plan voor Vandaag Praktische dingen Huiswerk 3.1, 3.2, 3.3, 3.4, 3.5. SQL Aantekeningen 2 Tabellen.

Nadere informatie

Grammatica uitleg voor de toets van Hoofdstuk 1

Grammatica uitleg voor de toets van Hoofdstuk 1 Grammatica uitleg voor de toets van Hoofdstuk 1 Vraagzinnen: Je kunt in het Engels vraagzinnen maken door vaak het werkwoord vooraan de zin te zetten. Bijv. She is nice. Bijv. I am late. Bijv. They are

Nadere informatie

Interactive Grammar leert de belangrijkste regels van de Engelste spelling en grammatica aan.

Interactive Grammar leert de belangrijkste regels van de Engelste spelling en grammatica aan. Interactive Grammar Interactive Grammar leert de belangrijkste regels van de Engelste spelling en grammatica aan. Doelgroep Interactive Grammar Het programma is bedoeld voor leerlingen in de brugklas van

Nadere informatie

Brain-Computer Interfaces. ir. Pieter-Jan Kindermans, Vakgroep Elektronica en Informatiesystemen, Universiteit Gent

Brain-Computer Interfaces. ir. Pieter-Jan Kindermans, Vakgroep Elektronica en Informatiesystemen, Universiteit Gent Brain-Computer Interfaces ir. Pieter-Jan Kindermans, Vakgroep Elektronica en Informatiesystemen, Universiteit Gent 1 Een robot besturen met gedachten? Bron: M. Velliste, et al. Cortical control of a prosthetic

Nadere informatie

Healthy people want everything, sick people want only one thing. would love to see a Hospital Teacher

Healthy people want everything, sick people want only one thing. would love to see a Hospital Teacher Healthy people want everything, sick people want only one thing. would love to see a Hospital Teacher Consultant Education Sick Pupils Educational Service Centre University Medical Centre The Netherlands

Nadere informatie

De Invloed van Perceived Severity op Condoomgebruik en HIV-Testgedrag. The Influence of Perceived Severity on Condom Use and HIV-Testing Behavior

De Invloed van Perceived Severity op Condoomgebruik en HIV-Testgedrag. The Influence of Perceived Severity on Condom Use and HIV-Testing Behavior De Invloed van Perceived Severity op Condoomgebruik en HIV-Testgedrag The Influence of Perceived Severity on Condom Use and HIV-Testing Behavior Martin. W. van Duijn Student: 838797266 Eerste begeleider:

Nadere informatie

Introduction Henk Schwietert

Introduction Henk Schwietert Introduction Henk Schwietert Evalan develops, markets and sells services that use remote monitoring and telemetry solutions. Our Company Evalan develops hard- and software to support these services: mobile

Nadere informatie

Welkom! Michael Sourbron.

Welkom! Michael Sourbron. Make IT personal Welkom! Michael Sourbron Michael.Sourbron@callexcell.be François Gysbertsen François.Gysbertsen@callexcell.be GertJan Coolen GertJan.Coolen@frontline.nl Agenda Introductie Engage uw klant

Nadere informatie

CSRQ Center Rapport over onderwijsondersteunende organisaties: Samenvatting voor onderwijsgevenden

CSRQ Center Rapport over onderwijsondersteunende organisaties: Samenvatting voor onderwijsgevenden CSRQ Center Rapport over onderwijsondersteunende organisaties: Samenvatting voor onderwijsgevenden Laatst bijgewerkt op 25 november 2008 Nederlandse samenvatting door TIER op 5 juli 2011 Onderwijsondersteunende

Nadere informatie

Assessment van Gespreksvaardigheden via de Webcamtest: Onderzoek naar Betrouwbaarheid, Beleving en de Samenhang met Persoonlijksfactoren

Assessment van Gespreksvaardigheden via de Webcamtest: Onderzoek naar Betrouwbaarheid, Beleving en de Samenhang met Persoonlijksfactoren : Onderzoek naar Betrouwbaarheid, Beleving en de Samenhang met Persoonlijksfactoren Assessment of Counseling Communication Skills by Means of the Webcamtest: A Study of Reliability, Experience and Correlation

Nadere informatie

Multi user Setup. Firebird database op een windows (server)

Multi user Setup. Firebird database op een windows (server) Multi user Setup Firebird database op een windows (server) Inhoudsopgave osfinancials multi user setup...3 Installeeren van de firebird database...3 Testing van de connectie met FlameRobin...5 Instellen

Nadere informatie

Meet your mentor and coach

Meet your mentor and coach Young Professional Program The importance of having a mentor in business Meet your mentor and coach What do Larry Page, and Steve Jobs have in common? They ve all received guidance from mentors. Yes even

Nadere informatie

ICARUS Illumina E653BK on Windows 8 (upgraded) how to install USB drivers

ICARUS Illumina E653BK on Windows 8 (upgraded) how to install USB drivers ICARUS Illumina E653BK on Windows 8 (upgraded) how to install USB drivers English Instructions Windows 8 out-of-the-box supports the ICARUS Illumina (E653) e-reader. However, when users upgrade their Windows

Nadere informatie

Ius Commune Training Programme 2015-2016 Amsterdam Masterclass 16 June 2016

Ius Commune Training Programme 2015-2016 Amsterdam Masterclass 16 June 2016 www.iuscommune.eu Dear Ius Commune PhD researchers, You are kindly invited to attend the Ius Commune Amsterdam Masterclass for PhD researchers, which will take place on Thursday 16 June 2016. During this

Nadere informatie

Sekseverschillen in Huilfrequentie en Psychosociale Problemen. bij Schoolgaande Kinderen van 6 tot 10 jaar

Sekseverschillen in Huilfrequentie en Psychosociale Problemen. bij Schoolgaande Kinderen van 6 tot 10 jaar Sekseverschillen in Huilfrequentie en Psychosociale Problemen bij Schoolgaande Kinderen van 6 tot 10 jaar Gender Differences in Crying Frequency and Psychosocial Problems in Schoolgoing Children aged 6

Nadere informatie

Quick scan method to evaluate your applied (educational) game. Validated scales from comprehensive GEM (Game based learning Evaluation Model)

Quick scan method to evaluate your applied (educational) game. Validated scales from comprehensive GEM (Game based learning Evaluation Model) WHAT IS LITTLE GEM? Quick scan method to evaluate your applied (educational) game (light validation) 1. Standardized questionnaires Validated scales from comprehensive GEM (Game based learning Evaluation

Nadere informatie

Ervaringen met begeleiding FTA cursus Deployment of Free Software Systems

Ervaringen met begeleiding FTA cursus Deployment of Free Software Systems Ervaringen met begeleiding FTA cursus Deployment of Free Software Systems Frans Mofers Nederland cursusmateriaal & CAA's alle cursusmateriaal vrij downloadbaar als PDF betalen voor volgen cursus cursussite

Nadere informatie

Bahtinov maskers als optische schuifmaat? Teus Tukker, Ferry Zijp

Bahtinov maskers als optische schuifmaat? Teus Tukker, Ferry Zijp Bahtinov maskers als optische schuifmaat? Teus Tukker, Ferry Zijp Onderwerpen Wie zijn wij? Kleine selectie van onze astrofoto s Geschiedenis van het Bahtinov masker Hoe ziet een sterafbeelding er rond

Nadere informatie

Effecten van contactgericht spelen en leren op de ouder-kindrelatie bij autisme

Effecten van contactgericht spelen en leren op de ouder-kindrelatie bij autisme Effecten van contactgericht spelen en leren op de ouder-kindrelatie bij autisme Effects of Contact-oriented Play and Learning in the Relationship between parent and child with autism Kristel Stes Studentnummer:

Nadere informatie

9 daagse Mindful-leSs 3 stappen plan training

9 daagse Mindful-leSs 3 stappen plan training 9 daagse Mindful-leSs 3 stappen plan training In 9 dagen jezelf volledig op de kaart zetten Je energie aangevuld en in staat om die batterij op peil te houden. Aan het eind heb jij Een goed gevoel in je

Nadere informatie

Intermax backup exclusion files

Intermax backup exclusion files Intermax backup exclusion files Document type: Referentienummer: Versienummer : Documentatie 1.0 Datum publicatie: Datum laatste wijziging: Auteur: 24-2-2011 24-2-2011 Anton van der Linden Onderwerp: Documentclassificatie:

Nadere informatie

1a. We werken het geval voor het tandenpoetsen uit. De concepten zijn (we gebruiken Engelse termen en afkortingen):

1a. We werken het geval voor het tandenpoetsen uit. De concepten zijn (we gebruiken Engelse termen en afkortingen): Uitwerking Huiswerkopgave Inleiding Modelleren Hoofdstuk 3 1a. We werken het geval voor het tandenpoetsen uit. De concepten zijn (we gebruiken Engelse termen en afkortingen): tube=[cap:{open,close},hand:{l,r,none}]

Nadere informatie

Handleiding Installatie ADS

Handleiding Installatie ADS Handleiding Installatie ADS Versie: 1.0 Versiedatum: 19-03-2014 Inleiding Deze handleiding helpt u met de installatie van Advantage Database Server. Zorg ervoor dat u bij de aanvang van de installatie

Nadere informatie

Question-Driven Sentence Fusion is a Well-Defined Task. But the Real Issue is: Does it matter?

Question-Driven Sentence Fusion is a Well-Defined Task. But the Real Issue is: Does it matter? Question-Driven Sentence Fusion is a Well-Defined Task. But the Real Issue is: Does it matter? Emiel Krahmer, Erwin Marsi & Paul van Pelt Site visit, Tilburg, November 8, 2007 Plan 1. Introduction: A short

Nadere informatie

ARTIST. Petten 24 September 2012. www.ecn.nl More info: schoots@ecn.nl

ARTIST. Petten 24 September 2012. www.ecn.nl More info: schoots@ecn.nl ARTIST Assessment and Review Tool for Innovation Systems of Technologies Koen Schoots, Michiel Hekkenberg, Bert Daniëls, Ton van Dril Agentschap NL: Joost Koch, Dick Both Petten 24 September 2012 www.ecn.nl

Nadere informatie

Determinanten en Barrières van Seksuele Patiëntenvoorlichting. aan Kankerpatiënten door Oncologieverpleegkundigen

Determinanten en Barrières van Seksuele Patiëntenvoorlichting. aan Kankerpatiënten door Oncologieverpleegkundigen Determinanten en Barrières van Seksuele Patiëntenvoorlichting aan Kankerpatiënten door Oncologieverpleegkundigen Determinants and Barriers of Providing Sexual Health Care to Cancer Patients by Oncology

Nadere informatie

Knelpunten in Zelfstandig Leren: Zelfregulerend leren, Stress en Uitstelgedrag bij HRM- Studenten van Avans Hogeschool s-hertogenbosch

Knelpunten in Zelfstandig Leren: Zelfregulerend leren, Stress en Uitstelgedrag bij HRM- Studenten van Avans Hogeschool s-hertogenbosch Knelpunten in Zelfstandig Leren: Zelfregulerend leren, Stress en Uitstelgedrag bij HRM- Studenten van Avans Hogeschool s-hertogenbosch Bottlenecks in Independent Learning: Self-Regulated Learning, Stress

Nadere informatie

Inhoudsopgave Fout! Bladwijzer niet gedefinieerd. Fout! Bladwijzer niet gedefinieerd. Fout! Bladwijzer niet gedefinieerd.

Inhoudsopgave Fout! Bladwijzer niet gedefinieerd. Fout! Bladwijzer niet gedefinieerd. Fout! Bladwijzer niet gedefinieerd. Validatie van het EHF meetinstrument tijdens de Jonge Volwassenheid en meer specifiek in relatie tot ADHD Validation of the EHF assessment instrument during Emerging Adulthood, and more specific in relation

Nadere informatie

Downloaded from UvA-DARE, the institutional repository of the University of Amsterdam (UvA) http://dare.uva.nl/document/446446

Downloaded from UvA-DARE, the institutional repository of the University of Amsterdam (UvA) http://dare.uva.nl/document/446446 Downloaded from UvA-DARE, the institutional repository of the University of Amsterdam (UvA) http://dare.uva.nl/document/446446 File ID 446446 Filename Titlepage SOURCE (OR PART OF THE FOLLOWING SOURCE):

Nadere informatie

Settings for the C100BRS4 MAC Address Spoofing with cable Internet.

Settings for the C100BRS4 MAC Address Spoofing with cable Internet. Settings for the C100BRS4 MAC Address Spoofing with cable Internet. General: Please use the latest firmware for the router. The firmware is available on http://www.conceptronic.net! Use Firmware version

Nadere informatie

PROJECT INFORMATION Building De Meerlanden Nieuweweg 65 in Hoofddorp

PROJECT INFORMATION Building De Meerlanden Nieuweweg 65 in Hoofddorp BT Makelaars Aalsmeerderweg 606 Rozenburg Schiphol Postbus 3109 2130 KC Hoofddorp Telefoon 020-3 166 166 Fax 020-3 166 160 Email: info@btmakelaars.nl Website : www.btmakelaars.nl PROJECT INFORMATION Building

Nadere informatie

IDENTITEIT IN DE METHODE?

IDENTITEIT IN DE METHODE? 74 IDENTITEIT IN DE METHODE? ONDERZOEK DOOR EEN LERAAR IN OPLEIDING Bram de Muynck en Esther Langerak 75 Van lectoraten wordt gevraagd om ook studenten te betrekken bij onderzoek. Dit gebeurt bij het lectoraat

Nadere informatie

De Relatie Tussen Persoonskenmerken en Ervaren Lijden bij. Verslaafde Patiënten met PTSS

De Relatie Tussen Persoonskenmerken en Ervaren Lijden bij. Verslaafde Patiënten met PTSS Persoonskenmerken en ervaren lijden bij verslaving en PTSS 1 De Relatie Tussen Persoonskenmerken en Ervaren Lijden bij Verslaafde Patiënten met PTSS The Relationship between Personality Traits and Suffering

Nadere informatie

TAAL ACTIEF GROEP 8 SPELLING 2 PDF

TAAL ACTIEF GROEP 8 SPELLING 2 PDF TAAL ACTIEF GROEP 8 SPELLING 2 PDF ==> Download: TAAL ACTIEF GROEP 8 SPELLING 2 PDF TAAL ACTIEF GROEP 8 SPELLING 2 PDF - Are you searching for Taal Actief Groep 8 Spelling 2 Books? Now, you will be happy

Nadere informatie

Identity & Access Management & Cloud Computing

Identity & Access Management & Cloud Computing Identity & Access Management & Cloud Computing Emanuël van der Hulst Edwin Sturrus KPMG IT Advisory 11 juni 2015 Cloud Architect Alliance Introductie Emanuël van der Hulst RE CRISC KPMG IT Advisory Information

Nadere informatie

blur Aukje Fleur Janssen & Roos Gomperts Volvo Design Challange

blur Aukje Fleur Janssen & Roos Gomperts Volvo Design Challange blur Aukje Fleur Janssen & Roos Gomperts Volvo Design Challange blur (NL for English see bellow) Aukje Fleur Janssen & Roos Gomperts Volvo Design Challenge Voor Volvo Design Challenge bundelden we onze

Nadere informatie

FOR DUTCH STUDENTS! ENGLISH VERSION NEXT PAGE

FOR DUTCH STUDENTS! ENGLISH VERSION NEXT PAGE FOR DUTCH STUDENTS! ENGLISH VERSION NEXT PAGE Tentamen Analyse 8 december 203, duur 3 uur. Voeg aan het antwoord van een opgave altijd het bewijs, de berekening of de argumentatie toe. Als jeeen onderdeel

Nadere informatie

Cameramanager LSU Installation Guide

Cameramanager LSU Installation Guide Cameramanager LSU Installation Guide Network based video surveillance server Version 1.1 / August 2009 Copyright 2010 - Cameramanager.com Page 1 LSU installation guide index 1. Connecting the LSU to your

Nadere informatie

Kikkers en Heilige Koeien UvAConext & standaarden voor het primaire onderwijs en onderzoek proces

Kikkers en Heilige Koeien UvAConext & standaarden voor het primaire onderwijs en onderzoek proces Kikkers en Heilige Koeien UvAConext & standaarden voor het primaire onderwijs en onderzoek proces SURF Seminar September 2015 Frank Benneker, ICTS Universiteit van Amsterdam Perspectief ICTS & OO dienstverlening

Nadere informatie

De Invloed van Werkeisen en Hulpbronnen op de. Psychische Vermoeidheid en het Plezier in het Werk bij Werknemers. and Work Satisfaction of Employees

De Invloed van Werkeisen en Hulpbronnen op de. Psychische Vermoeidheid en het Plezier in het Werk bij Werknemers. and Work Satisfaction of Employees De Invloed van Werkeisen en Hulpbronnen op de Psychische Vermoeidheid en het Plezier in het Werk bij Werknemers The Influence of Job Demands and Job Resources on Psychological Fatigue and Work Satisfaction

Nadere informatie

PIR DC-SWITCH. DC Passive infra-red Detector. Model No. PDS-10 GEBRUIKSAANWIJZING/INSTRUCTION MANUAL

PIR DC-SWITCH. DC Passive infra-red Detector. Model No. PDS-10 GEBRUIKSAANWIJZING/INSTRUCTION MANUAL PIR DC-SWITCH DC Passive infra-red Detector Model No. PDS-10 GEBRUIKSAANWIJZING/INSTRUCTION MANUAL Please read this manual before operating your DETECTOR PIR DC-Switch (PDS-10) De PDS-10 is een beweging

Nadere informatie

Cognitieve Bias Modificatie van Interpretatiebias bij Faalangstige Studenten

Cognitieve Bias Modificatie van Interpretatiebias bij Faalangstige Studenten CBM-I bij Faalangst in een Studentenpopulatie 1 Cognitieve Bias Modificatie van Interpretatiebias bij Faalangstige Studenten Cognitive Bias Modification of Interpretation Bias for Students with Test Anxiety

Nadere informatie

ESOMAR PAPER: Four simple strategies: 25% more ROI for newspaper advertisement

ESOMAR PAPER: Four simple strategies: 25% more ROI for newspaper advertisement ESOMAR PAPER: Four simple strategies: 25% more ROI for newspaper advertisement Learnings from 2011 case for: Erdee Media Group Cebuco, Amsterdam BY Martin Leeflang (Validators) Esomar Paper Augustus 2011

Nadere informatie

Maillijsten voor medewerkers van de Universiteit van Amsterdam

Maillijsten voor medewerkers van de Universiteit van Amsterdam See page 11 for Instruction in English Maillijsten voor medewerkers van de Universiteit van Amsterdam Iedereen met een UvAnetID kan maillijsten aanmaken bij list.uva.nl. Het gebruik van de lijsten van

Nadere informatie

Hoe met Windows 8 te verbinden met NDI Remote Office (NDIRO) How to connect With Windows 8 to NDI Remote Office (NDIRO

Hoe met Windows 8 te verbinden met NDI Remote Office (NDIRO) How to connect With Windows 8 to NDI Remote Office (NDIRO Handleiding/Manual Hoe met Windows 8 te verbinden met NDI Remote Office (NDIRO) How to connect With Windows 8 to NDI Remote Office (NDIRO Inhoudsopgave / Table of Contents 1 Verbinden met het gebruik van

Nadere informatie

LinkedIn Profiles and personality

LinkedIn Profiles and personality LinkedInprofielen en Persoonlijkheid LinkedIn Profiles and personality Lonneke Akkerman Open Universiteit Naam student: Lonneke Akkerman Studentnummer: 850455126 Cursusnaam en code: S57337 Empirisch afstudeeronderzoek:

Nadere informatie

De Invloed van Religieuze Coping op. Internaliserend Probleemgedrag bij Genderdysforie. Religious Coping, Internal Problems and Gender dysphoria

De Invloed van Religieuze Coping op. Internaliserend Probleemgedrag bij Genderdysforie. Religious Coping, Internal Problems and Gender dysphoria De Invloed van Religieuze Coping op Internaliserend Probleemgedrag bij Genderdysforie Religious Coping, Internal Problems and Gender dysphoria Ria de Bruin van der Knaap Open Universiteit Naam student:

Nadere informatie

Cambridge International Examinations Cambridge International General Certificate of Secondary Education

Cambridge International Examinations Cambridge International General Certificate of Secondary Education *3745107457* Cambridge International Examinations Cambridge International General Certificate of Secondary Education DUTCH 0515/03 Paper 3 Speaking Role Play Card One 1 March 30 April 2015 Approx. 15 minutes

Nadere informatie

Mentaal Weerbaar Blauw

Mentaal Weerbaar Blauw Mentaal Weerbaar Blauw de invloed van stereotypen over etnische minderheden cynisme en negatieve emoties op de mentale weerbaarheid van politieagenten begeleiders: dr. Anita Eerland & dr. Arjan Bos dr.

Nadere informatie