Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal...

84
Automatische analyse van eye-tracking shopping-experimenten Younes Ichiche 27 mei 2012

Transcript of Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal...

Page 1: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

Automatische analyse van eye-trackingshopping-experimenten

Younes Ichiche

27 mei 2012

Page 2: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

ii

Page 3: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

Voorwoord

Dit eindwerk kon slechts tot stand komen dankzij de medewerking van vele mensen, maarvooral dankzij het De Nayer Instituut, Toon Goedemé die het eindwerk heeft aangeboden,Ann Philips als promotor voor het begeleiden van het onderzoek en Geert Brône voor hetter beschikking stellen van de eye-tracker. Daarbij wil ik Toon Goedemé en Geert Brônenog eens extra bedanken voor het werk dat ze hebben gestoken in het aanvragen van hetTETRA-project (Goedeme and Brone, 2011). Ook wil ik mijn ouders bedanken voor hetfinancieren van mijn studies en de steun die ze geboden hebben door de jaren heen. Alslaatste wil ik de winkel AVEVE die zich nabij de Hogeschool Lessius Antwerpen bevindzeker niet vergeten om ze te bedanken voor de opnames die we mochten nemen.

Page 4: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

iv

Abstract

Beeldverwerkingstechnieken kunnen gebruikt worden bij verschillende soorten van onder-zoeken en projecten waar men binaire beelden wenst te bewerken. In dit onderzoek zaler gebruik gemaakt worden van objectherkenning en zal er gezocht worden naar overeen-komsten in verschillende beeldjes. Hierbij zal men gebruik maken van opnames waar eengigantisch aanbod van gegevens uit zal gehaald worden, en zullen deze gebruikt wordenom overeenkomsten te vinden tussen beelden.

Deze opnames zullen worden gemaakt met een eye-tracker. Het is een toestel dat het oogzal volgen en dus zal bijhouden naar welke positie er op het beeld gekeken zal worden.Het is een technologie dat al meer dan 30 jaar bestaat. In het begin waren deze methodesnog niet zo accuraat en makkelijk in gebruik. Maar de de laatste jaren is hier een groteverbetering in gekomen en is men zo ver geraakt met de technologie waardoor deze toe-stellen minder calibratie nodig hebben en draagbaar zijn geworden. Zo zal het toestel dathier gebruikt wordt zeer sterk op een bril lijken waar een bedrading aan vasthangt om degegevens naar een toestel over te brengen en te verwerken en zo weg te kunnen schrijvennaar twee bestanden: de opname zelf als een avi-bestand en informatie over deze opnamein een wks-bestand. Dit laatste bestand zal informatie bevatten over de positie naar waargekeken wordt, op welk tijdstip elke frame genomen wordt, informatie over het gebuikteprogramma, de pupilgrootte en nog andere informatie die niet van belang zal zijn voordit onderzoek.

Voor objectherkenning bestaat er ook een zeer groot aanbod aan algoritmes die gebruiktkunnen worden. Daarom zal er in het begin een overzicht van de bestaande algoritmesworden besproken. Daaruit zullen er een paar geselecteerd worden die makkelijk bruikbaarzijn. De resultaten die bekomen worden zullen met elkaar vergeleken worden. Hieruit zalmen dan een gepast algoritme kiezen die de beste resultaten zal opleveren.

Eerst zal het programma zo geschreven worden dat bij de uitvoering van dit programma deopnames meteen verwerkt zullen worden. Zo zal er ook meteen een analyse gebeuren vande opnames en worden er ook meteen resultaten geproduceerd. Op deze manier verkrijgenwe producten en opnames apart, alsook resultaten van een geanalyseerde opname. Dezeresultaten zullen dan gegenereerd worden onder drie specifieke vormen.

Om het programma gebruiksvriendelijker te maken zal er een Grafische User Interfaceontworpen worden. Dit zal er voor zorgen dat het zeer makkelijk wordt om productenen opnames toe te voegen die geanalyseerd moeten worden. Zo kunnen deze opnamesgeselecteerd worden om ze dan te analyseren en de resultaten hiervan te kunnen bekijken.Het verwijderen van een van deze zaken wordt ook makkelijk, en is allemaal mogelijk metbehulp van een klikje.

Page 5: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

Short Summary

This thesis is written on a research based on eye-trackers in combination with objectrecognition. As first, there will be discussed why and on what purpose we will make thisresearch. Then we will discuss a few important methods on how to recognize parts of apicture in another picture. From those discussed methods a few will be selected to betested into the program. A conclusion will be made and the best one will be selected tomake a program to analyse the recordings with the products we want to find. As last aGraphical User Interface will be made to make the program user-friendly.

First of all, the research which has been done, will show how good we can track objectswith an eye-tracker. This isn’t as easy as it sounds, every frame which needs to be analysedneeds to be studied on the correctness of their results. But before we can do this, a lotneeds to be done to accomplish that result. The purpose of the thesis is also to make auser-friendly method to automatically track those information in those recordings. It willbe much faster than a person who needs to view hours of tapes, which is a boring andfrustrating job. Especially as all those things can be done much faster and with moredetail with the help of a computer.

The results of those analysed recordings will have three output methods. A movie whichshows all the information for every frame processed. This will make it easy to see ifthe recognitions are being processed correctly. It will also take much longer than thetwo other methods which will be revealed now and which are the output we really want.The first output is a Comma separated Value file (CSV) where each line has a producttogether with the viewed time and the amount of times that a product has being viewed.The other result is a Word Cloud, where the product names are randomly positioned andby that forming a cloud. The size, the position and the darkness of a product name isdetermined by how more and how longer a product has being viewed.

There are a lot of object recognition algorithms, but every one has it’s specific advantagesand disadvantages. There are also many ways on storing the points which of that hasbeing found on a picture. In this research the method for storing keypoints has beingchosen, as they give a very good mathematical description of the point we search. Alsothe algorithm which has all it’s source files for compilation available and which can becompiled from source will make it easier to use, so the original can be edited to fit intothe new program.

Therefore three algorithms has being chosen: SIFT, ASIFT and SURF. SURF is faster andthe matching process will be better when there is a lot of noise in the picture, but thealgorithm gives too less keypoints as result. ASIFT gives more keypoints and has it’s

Page 6: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

vi

benefit for being affine, which means we can view a keypoint from a certain angle. Youdon’t need to look straight at something as more keypoints will be generated so thematching will even recognize regions over an angle of 50◦. But the matching of severalframes with those keypoints are poor and messy as a lot of wrong matches are beingmade. It is also easy to integrate SIFT which is also written in C like the program writtenfor this thesis. This algorithm does also find a big amount of keypoints and the matchesfound are highly correct.

But before we can have those results, a lot of steps needs to be done. So first of all we needto add products and recordings. The difference between a product and a recording, isthat a product will have one file which needs to be used so we can look it into a frame of arecording. In other words, a product can be described with the use of one file. A recordingwill be extracted into separated frames and for every frame, keypoints will be found andsaved. Those are the same points found in the frames of recordings of a product, but weneeds to do some more steps to obtain a file which will describe that whole product.

Those points which will describe a mathematical area in a picture are called keypoints.Those will have data on the position of that point and some other data. A keypoint willalso have a descriptor which in the case of SIFT which will have a standard of 128 valuesfrom 0 till 255 for the descriptor. This descriptor will describe a 128-dimensional spacewhich can be mathematically calculated to see if we have a match.

To get a file with all the keypoints which will describe a product we will take together allthe keypoints of all frames. But there are a lot of points which will be the same. So allthe keypoints within the file will be checked and will be made a mathematical difference.If the difference is lower than a defined constant, then the keypoint will resemble eachother a lot. An average of the two keypoints will then be made and saved, while the twooriginal ones will be deleted. The reason for making an average of the keypoint is becauseotherwise one keypoint will have an advantage over the other keypoint which is almostthe same. What if one keypoint could have a bit of noise? This is one of the reasons theaverage of two almost identical keypoints will give a better keypoint to be recognized orcompared.

A second step is to make the elimination of double keypoints over all the products. Thiswill also be checked mathematically with the size of it’s difference between each other. Butif a double keypoint will be found, both will be deleted and the average will be rememberedin a separated file. This method will make it easy to eliminate that particular keypointin new products that could will be added later on.

For every product which will have near-unique points describing a product, one file ispresent and is the only one which will be needed to search for that product. Recordingshave for every frame their file with keypoints. To search for products into a recording,every keypoint of every frame will be calculated with their euclidean distance with allthe keypoints of a product. If we want to search for more than one product, then wesimple want to loop through all the products. For the method searching a point we needto remember the closest and the second closest result. The point of the smallest numberwill be remembered if the ratio of the closest and the second closest result will be belowa constant. This process is called the analysing of a recording.

Once a recording has been analysed, all the information about the products found are

Page 7: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

vii

remembered in a structural data tree. Those information needs to be used immediatelybefore the program ends or the analysed information will be lost. So this informationwill be processed by a function to count how many times a product has been looked at,together with its total amount of time in seconds. Those information will then also beadded to the data tree.

Once we have the processed data from the analysed recording we get a tree of data throughall the frames. The result of the last frame can be used to make the CSV and the wordcloud. For other purposes like the result movie, the data in the information tree will coverall the frames of the movie and is needed to show all the details of the processed data.

All those processing will be made easy with the use of a Graphical User Interface. Thisway products and recordings can be added with a single click. A recording and eventuallyone or more products can be selected to analyse a recording. The types of output canbe selected and those can be processed. It is also possible to process multiple recordingsat the same time as the program is multi-threaded. On the end, it’s possible to select aresult and to view it. It is also easy when you want to delete something, just select it anduse the remove or delete button in the right section.

The results of the processing in this research came out quite good. Even when lookingfrom a distance, lets say one meter still give reasonable results. When the product wherewe are looking to is quite small, much less keypoints are being found. This will make theanalysing process a bit harder and less correct. When a product is taken by hand it’scloser and many more keypoints are being found. The resolution used by the eye-trackerfor this research is 240x320 which is quite low, so it could be better to have a camerawith a higher resolution. The processing will then take much longer but the results willbe more accurate.

One of the results we got was one with traps for mouses. Those are packages which arebeing looked at from a short distance and the recognitions of the products went quitewell. So to obtain good result we need to look closer or have a camera on the eye-trackerwhich has a better resolution. When looking closer to a package, we mean taking thepackage in hand like when you want to read it’s contents on the back side of a product.This is the same as when you take something in you’re hands to look at.

Page 8: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

viii

Page 9: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

Inhoudsopgave

1 Inleiding en doelstelling 3

1.1 Algemene probleemstelling . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.2 Organisatie van deze tekst . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

2 Eye-trackers 7

2.1 Wat is een eye-tracker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

2.2 Eye-tracking technieken . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

2.2.1 Saccade bewegingen . . . . . . . . . . . . . . . . . . . . . . . . . . 8

2.2.2 Saccade tracking . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

2.2.3 Eerst eye-tracking technieken . . . . . . . . . . . . . . . . . . . . . 9

2.2.4 Scherm gemonteerde eye-trackers . . . . . . . . . . . . . . . . . . . 9

2.2.5 Mobiele eye-trackers . . . . . . . . . . . . . . . . . . . . . . . . . . 10

3 Methoden voor objectherkenning 13

3.1 Beeldverwerkingstechnieken . . . . . . . . . . . . . . . . . . . . . . . . . . 13

3.1.1 Introductie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

3.1.2 Hoek detectoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

3.1.2.1 Harris detector . . . . . . . . . . . . . . . . . . . . . . . . 15

3.1.2.2 SUSAN detector . . . . . . . . . . . . . . . . . . . . . . . 15

3.1.2.3 Harris-Laplace en Harris-Affine Invariant . . . . . . . . . . 15

3.1.2.4 Edge-based regions detector . . . . . . . . . . . . . . . . . 16

3.1.2.5 Besluit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

3.1.3 Vlek detectoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

3.1.3.1 Hessian detector . . . . . . . . . . . . . . . . . . . . . . . 18

3.1.3.2 Hessian-Laplace en Hessian-Affine . . . . . . . . . . . . . . 18

3.1.3.3 Salient regions . . . . . . . . . . . . . . . . . . . . . . . . 18

Page 10: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

x INHOUDSOPGAVE

3.1.3.4 Besluit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

3.1.4 Regio detectoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

3.1.4.1 IBR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

3.1.4.2 MSER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

3.1.4.3 Segmentatiegebaseerde methode . . . . . . . . . . . . . . . 21

3.1.4.4 Besluit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

3.2 Efficiente algoritmes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

3.2.1 DoG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

3.2.2 SIFT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

3.2.3 ASIFT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

3.2.4 SURF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

3.2.5 FAST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

3.3 Keypoints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

3.3.1 Genereren van keypoints . . . . . . . . . . . . . . . . . . . . . . . . 28

3.3.2 Vergelijken van keypoints . . . . . . . . . . . . . . . . . . . . . . . 29

3.4 Besluit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

3.5 Gekozen algoritmes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

4 De opnames 33

4.1 Keuze van de winkel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

4.2 Keuze van soorten producten . . . . . . . . . . . . . . . . . . . . . . . . . 33

4.3 Voortgang van de opnames . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

4.4 Intrainen van producten . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

5 Verwerken van gegevens 37

5.1 Inlezen en verzamelen van data . . . . . . . . . . . . . . . . . . . . . . . . 39

5.1.1 Inlezen van het wks-bestand . . . . . . . . . . . . . . . . . . . . . . 39

5.1.2 Inlezen van het avi-bestand . . . . . . . . . . . . . . . . . . . . . . 40

5.2 Bewerken van gegevens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

5.2.1 Uitsnijden van de Region Of Interest (ROI) . . . . . . . . . . . . . 40

5.2.2 Genereren van keypoints . . . . . . . . . . . . . . . . . . . . . . . . 41

5.2.3 Samenvoegen van keypoints bij de producten . . . . . . . . . . . . . 41

5.2.4 Reduceren van keypoints . . . . . . . . . . . . . . . . . . . . . . . . 41

5.2.4.1 Elimineren van dubbele keypoints binnen eenzelfde product 43

Page 11: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

INHOUDSOPGAVE xi

5.2.4.2 Elimineren van dubbele keypoints over al de producten . . 45

5.3 Genereren van resultaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

5.3.1 Vinden van overeenkomsten . . . . . . . . . . . . . . . . . . . . . . 49

5.3.2 Analyseren van opnames . . . . . . . . . . . . . . . . . . . . . . . . 50

5.3.2.1 Zoeken van overeenkomsten tussen opname en producten . 51

5.3.2.2 Tellen van de producten . . . . . . . . . . . . . . . . . . . 52

5.3.3 Resultaat types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

5.3.3.1 Comma Seperated Value (CSV) . . . . . . . . . . . . . . . 53

5.3.3.2 Word Cloud . . . . . . . . . . . . . . . . . . . . . . . . . . 53

5.3.3.3 Resultaten filmpje . . . . . . . . . . . . . . . . . . . . . . 54

6 Grafische User Interface (GUI) 57

6.1 Interne werking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

6.1.1 Threads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

6.1.2 Resultaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

6.2 Handleiding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

6.2.1 Producten toevoegen/verwijderen . . . . . . . . . . . . . . . . . . . 63

6.2.2 Opname toevoegen/verwijderen . . . . . . . . . . . . . . . . . . . . 64

6.2.3 Opname analyseren . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

6.2.4 Resultaten bekijken/verwijderen . . . . . . . . . . . . . . . . . . . . 65

7 Besluit 67

Bibliografie 69

Page 12: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

xii INHOUDSOPGAVE

Page 13: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

Verklarende lijst van afkortingen enwoordjes

DoG Difference-of-Gaussians

SURF Speeded Up Robust Features

SIFT Scale-invariant feature transform

ASIFT Affine Scale-invariant feature transform

FAST Features from Accelerated Segment Test

SUSAN Smallest Univalue Segment Assimilating Nucleus

MSER Maximally Stable Extremal Regions

IBR intensity-based regions

CSV Comma Sepperated Value

ROI Region Of Interest

keypoints Punt op het beeld die een bepaalde beschrijving hebben hoe ze er uit zien.De beschrijving zit in de descriptor

descriptor Een n-dimentionale array van waarden die een punt op een afbeelding be-schrijft

Match(ing) Overeenkomstige punten/keypoints zoeken, gebeurt met behulp van eendescriptor

Word Cloud Een wolk van woorden

GUI Graphical User Interface

GTK GIMP Toolkit

GIMP GNU Image Manipulation Program

GNU GNU’s Not Unix

Page 14: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

xiv INHOUDSOPGAVE

Page 15: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

Lijst van figuren

1.1 Eind resultaten voor de verwerkte gegevens. . . . . . . . . . . . . . . . . . 4

1.2 Persoon in de winkel met een Tobii eye-tracker. . . . . . . . . . . . . . . . 5

2.1 Tobii eye-tracker. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

2.2 Oude methoden voor eye-tracking gemonteerd op een tafel . . . . . . . . . 9

2.3 Resultaat figuren bij eye-tracker . . . . . . . . . . . . . . . . . . . . . . . . 10

2.4 Eye-tracker bij gebruik van een computer . . . . . . . . . . . . . . . . . . . 11

3.1 Hoek detectoren met aangeduide gevonden punten/regio’s. . . . . . . . . . 17

3.2 Vlek detectoren met aangeduide gevonden punten/regio’s. . . . . . . . . . 20

3.3 Regio detectoren met aangeduide gevonden punten/regio’s. . . . . . . . . . 22

3.4 Tweede afgeleide van de gaussische filter. . . . . . . . . . . . . . . . . . . . 23

3.5 Difference-of-Gaussians. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

3.6 Het punt X wordt vergeleken met zijn 26 buren. . . . . . . . . . . . . . . . 25

3.7 Benadering van de tweede orde Gaussische filter gebruikt door SURF. . . . 27

3.8 SIFT descriptor gevisualiseerd. . . . . . . . . . . . . . . . . . . . . . . . . 28

3.9 Efficiënte algoritmes met aangeduide gevonden punten/regio’s. . . . . . . . 29

5.1 Overzicht van het programma. . . . . . . . . . . . . . . . . . . . . . . . . . 38

5.2 Histogram van aantal keypoints in functie van hun euclidische afstand. Drieverschillende producten steeds vergeleken met Lijmvallen. . . . . . . . . . . 42

5.3 Aantal keypoints gevonden in een opname in functie van de drempelwaar-den bij het verwijderen van dubbele keypoints bij producten. . . . . . . . . 44

5.4 Links wordt het aantal seconden in functie van de drempelwaarde getoond,rechts het aantal keer bekeken in functie van de drempelwaarde. . . . . . . 47

5.5 Aantal keypoints in functie van de drempelwaarden bij het verwijderen vandubbele keypoints over al de producten. . . . . . . . . . . . . . . . . . . . 48

5.6 Vinden van producten in een opname. . . . . . . . . . . . . . . . . . . . . . 50

Page 16: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

LIJST VAN FIGUREN 1

5.7 Schematische boom structuur van de resultaten van doAnalizeProject. . 51

5.8 Inhoud van het Rattenvallen2.csv bestand. . . . . . . . . . . . . . . . . 53

5.9 Voorbeeld van eenWord Cloud van 800 willekeurige woordjes met de functiemkWordCloud. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

5.10 Word Cloud resultaten vanuit de geanaliseerde opnamen . . . . . . . . . . 55

5.11 Voorbeeld van het resultatenfilmpje voor Rattenvallen2. . . . . . . . . . . 56

6.1 Voorbeeld van de GUI van het programma. . . . . . . . . . . . . . . . . . . 58

6.2 Overzicht van de GUI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

6.3 Callback functie van de knoppen in de GUI. . . . . . . . . . . . . . . . . . 60

6.4 Overzicht van bijhorende functies voor callbacks. . . . . . . . . . . . . . . . 61

6.5 Toevoegen van een opname/product. . . . . . . . . . . . . . . . . . . . . . 64

Page 17: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

2 LIJST VAN FIGUREN

Page 18: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

Hoofdstuk 1

Inleiding en doelstelling

In dit onderzoek wensen we een prototype te ontwikkelen voor de analyse van oogbewe-gingsdata, gekoppeld aan een objectherkenningsalgoritme. Hiervoor zal er een eye-trackergebruikt worden die de date van de positie van het oog zal registreren en een bijhorendfilmpje zal weergeven waar het beeld op te zien zal zijn. Deze data zal men verwerkenzodat hieruit een product informatie wordt gegenereerd en deze zal men in een bepaaldevorm gieten die voor de eindgebruiker nuttig en makkelijk bruikbaar zal zijn.

1.1 Algemene probleemstelling

De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel datveel op een gewone bril lijkt. Het kleine verschil is dat deze wat groter is en dat er eenbekabeling aan hangt, een voorbeeld van een commerciële eye-tracker getoond in figuur1.2, is de Tobii R© eye-tracker. Dit kleine toestel heeft de grootte van een oude mp3 speler.

De eye-tracker die voor dit onderzoek gebruikt wordt is een variant en een die lijkt opeen prototype van een eye-tracker. Dit is omdat de webcam die men gebruikt met velcrowordt aangebracht in het centrum van de gebruikte bril, en de infrarood camera met zijnlicht gesteund wordt met een extern hard kabeltje zodat het naar het oog gericht kanworden. Daarbij wordt er ook een laptop gebruikt waarnaar de kabels naar toe gaan. Opdeze manier kan een tweede persoon controle hebben over de calibratie en de opnames diegemaakt zullen worden.

De data die geproduceerd wordt door de software van deze eye-tracker is de informatiedie we nodig zullen hebben. Het filmpje dat geproduceerd wordt kan gebruikt worden omdeze te analyseren en te zien hoe het winkel gedrag bij een persoon kan zijn. Want dit iswat we willen onderzoeken: Hoe een persoon reageert op bepaalde producten die men inde winkel ziet. Wat trekt de persoon aan? Waar wordt er het langste naar gekeken? Watkrijgt de aandacht?

Het onderzoeken van zo een filmpje kan lange tijd in beslag nemen. En dit is een frustre-rend werk voor de persoon die deze filmpjes moet analyseren, en moet tellen hoeveel keerdat er naar een product gekeken werd, of hoe lang er naar een bepaald product gekekenwerd.

Page 19: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

4 Inleiding en doelstelling

(a) Word Cloud

1 Lokaas ,1 ,1.202 Bio Gazon ,1 ,0.633 Eukanuba Large ,1 ,0.434 Eukanuba Small ,1 ,0.175 Science plan Light ,2 ,0.406 Science plan Chicken ,2 ,0.937 Science plan Beef ,2 ,6.37

(b) Een CSV bestand

Figuur 1.1: Eind resultaten voor de verwerkte gegevens.

In dit onderzoek zal er dan met behulp van objectherkenning een prototype worden ont-wikkeld die het werk van een persoon zal overnemen. Er zal geteld worden hoeveel keerer naar een product gekeken wordt en voor hoe lang. Daarbij kan een computer dit veelsneller doen. Deze resultaten kunnen gegenereerd worden binnen de paar minuutjes watzeker veel sneller zal zijn dan iemand die zijn tijd en concentratie moet gebruiken om dezebeelden zelf te moeten analyseren. Het doel is dus om deze analyse automatisch te doen.

Er zal dus een prototype ontwikkeld worden voor het analyseren van opnames van eeneye-tracker. Deze kunnen omgezet worden naar verschillende eindresultaten. Voor ditonderzoek werd er dan gekozen om als eindresultaat een Word Cloud te tonen. Dit is eenwolk van woorden zoals getoond wordt in figuur 1.1a. Het andere type van resultaat is eenCSV-bestand, dit is een bestand waar al de informatie staat op een lijn, en zal gescheidenworden door komma’s. Een voorbeeld wordt getoond in figuur 1.1b. Dit bestand kangebruikt worden voor allerlei verschillende toepassingen.

1.2 Organisatie van deze tekst

Het vervolg van deze masterthesis is al volgt opgebouwd. We beginnen in hoofdstuk 2met een situering en een overzicht van gerelateerde technieken voor eye-tracking. Hierzullen we vertellen welke soorten technieken men in het verleden had voor het volgen vanoogbewegingen en gaan we een beschrijving geven van deze technieken. In hoofdstuk 3worden er mogelijke beeldverwerkingstechnieken voorgesteld. Hieruit zullen er een paartechnieken geselecteerd worden die gepast zullen zijn bij dit onderzoek. En uit praktischwerk zal hieruit de beste gekozen worden. Verder zullen er opnames genomen worden,dit zal besproken worden in hoofdstuk 4. Hier zal men bespreken welke keuze er gemaaktwerd en hoe al de gerelateerde zaken bij de opnames verliepen.

In hoofdstuk 5 zal de volledige verwerking besproken worden. Er zal vertrokken wordenvan twee bestandjes die de eye-tracker geeft tot de resultaten die hierdoor gecreëerd wer-den. Als laatste zal er in hoofdstuk 6 een grafische User Interface worden ontworpen omde verwerking voor de eindgebruiker gemakkelijk te maken. Uiteindelijk zal deze thesisworden afgesloten met een besluit in hoofdstuk 7.

Page 20: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

1.2 Organisatie van deze tekst 5

Figuur 1.2: Persoon in de winkel met een Tobii eye-tracker.

Page 21: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

6 Inleiding en doelstelling

Page 22: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

Hoofdstuk 2

Eye-trackers

In dit hoofdstuk zal er uitgelegd worden wat een eye-tracker is. Er zullen draagbare enbank gemonteerde methoden besproken worden. Daarbij worden de verschillende metho-den om het oog te volgen besproken met hun voor- en nadelen. Deze secties zijn gebaseerdop het boek Eye Tracking Methodology van Andrew Duchowski (Duchowski, 2007) en depaper Eye-Tracking: Research Areas and Applications (Richardson and Spivey, 2004) vanDaniel C. Richardson.

2.1 Wat is een eye-tracker

In figuur 2.1 is persoon met een mobiele eye-tracker te zien. Dit is een toestel dat menoveral en makkelijk kan gebruiken, zoals de naam het aangeeft is dit een mobiel apparaat.Een eye-tracker is een toestel met twee camera’s: één gericht naar voren zodat we eenbeeld hebben in de richting naar waar het hoofd gericht is, en een andere naar het oogzelf zodat er informatie is over de richting waar het oog naar toe kijkt. Hierdoor kan hettoestel registreren waar een persoon naar toe kijkt.

Naargelang de instellingen van het programma kan men op de beelden die men bekomtaanduiden waar de persoon naar toe kijkt. Daarbij wordt er informatie zoals de pupil-grootte, welke frames, de tijd, de coördinaten waar naar toe gekeken wordt en nog enkele

Figuur 2.1: Tobii eye-tracker.

Page 23: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

8 Eye-trackers

details, naar een bestand geschreven.

Een eye-tracker kan gebruikt worden voor verschillende doeleinden, onder andere voorusability-onderzoek, marketingstudies of bij onderzoeken om na te gaan hoe een persooneen boek leest. Of het kan ook gebruikt worden om na te gaan hoe twee personen reagerenin een conversatie dat ze onderling hebben. Zo kan men bijvoorbeeld zien welke gebareneen persoon doet zonder dat hijzelf er zich van bewust is. In dit project gaan we eeneye-tracker gebruiken voor marketing onderzoek. Meer bepaald om na te gaan welkeproducten het meest de aandacht trekken.

2.2 Eye-tracking technieken

In de komende secties zal er verteld worden wat saccade bewegingen zijn en hoe dezeworden gevolgd. Daarbij zullen er drie gebruikelijke soorten van eye-tracking techniekenworden uitleggen.

2.2.1 Saccade bewegingen

Een saccade of een oogsprong is een snelle beweging van het oog dat tot doel heeft eenander fixatie punt te nemen. Zo kan het oog van positie veranderen en andere omgevingenbewonderen. Dit zonder dat het hoofd hoeft te bewegen. Deze zogenaamde saccadeskunnen zeer snel gaan, men zegt dat deze tot 500◦/s (Richardson and Spivey, 2004)kunnen gaan, uit theoretische berekeningen is men zelfs tot een saccade piek van 600◦/s(Duchowski, 2007) gekomen. Theoretisch heeft men dan ook ondervonden dat zo eensaccade beweging tussen de 120ms en de 300ms (Duchowski, 2007) kan duren voor er eenfixatie kan worden vastgesteld.

2.2.2 Saccade tracking

In het verleden werden vier methoden met succes toegepast om het oog te kunnen volgen.De eerste is Electro-OculoGraphy (EOG) welk 40 jaar geleden gebruikt werd en nog steedsgebruikt wordt. Deze gaat differentiële verschillen in de huid opmeten door elektrodes dieop de huid rond het oog worden aangebracht. Een andere techniek is met een ScleralContact Lens/Search Coil. Hier zal men een contact lens op het oog leggen, deze zijngelijkaardig met de contact lenzen die bestaan als vervanging voor een bril. Maar inplaats dat ze het zicht verbeteren bevatten ze een spoel die gedetecteerd kan worden dooreen magnetisch veld. De derde methode is Video-OculoGraphy (VOG). Deze gaat vaak tewerk met een onzichtbare lichtbron zoals infrarood die in de buurt van het oog geplaatstwordt. Hierdoor ontstaan er reflecties die op het hoornvlies terechtkomen. Naar het oog iser dan een camera gericht die deze infrarood reflecties zal kunnen detecteren. Hier wordter dan de positie van de reflectie op het hoornvlies tegenover het centrum van de pupilopgemeten. Zo is de richting naar waar het oog kijkt bekend. Deze methoden hebbenvaak een kin/hoofd (zie figuur 2.2) ondersteuning nodig of een mondstuk waar men de

Page 24: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

2.2 Eye-tracking technieken 9

(a) Kinsteun (b) Mondsteun

Figuur 2.2: Oude methoden voor eye-tracking gemonteerd op een tafel

tanden opzet. Dit is voor de stabilisatie van de metingen op het oog en ook een onderdeelvan de kalibratie van het systeem.

2.2.3 Eerst eye-tracking technieken

Elke methode om de beweging van het oog te kunnen registreren heeft zijn voor- ennadelen. Er zijn methoden die meer accuraat zijn dan anderen, of de snelheid waarmeede posities van het oog kunnen geregistreerd worden zijn trager of sneller in hun snelheidvan opmeten.

De meest comfortabele methode voor het volgen van het oog is deze met een infraroodweerkaatsing op het hoornvlies. Zo hoeft men geen onaangename contactlenzen op hetoog te dragen, of hoeft men geen electrodes aan te brengen op de huid rond het oog. Voorsommige methoden is een ondersteuning voor het hoofd dan wel weer belangrijk zodathet hoofd gefixeerd staat. Daarbij heeft deze methode een sampling rate van 60Hz watbetekent dat er om de 16ms de positie van het oog geregistreerd kan worden.

Om deze metingen met zo weinig mogelijke afwijkingen te verkrijgen, is het nodig hethoofd te kunnen ondersteunen. Zo zijn er methoden die gemonteerd zijn op een tafelzoals getoond op figuur 2.2. Deze nemen veel meer plaats in en zijn niet mobiel zoals eenhoofd-gemonteerde methode. Het voordeel is wel dat ze correcter zijn in het opmeten vande reflecties op het hoornvlies. Tafel-gemonteerde methoden hebben daarbij minder risicoom uit kalibratie te vallen. Dit is zeer belangrijk anders zijn de resultaten nutteloos.

2.2.4 Scherm gemonteerde eye-trackers

Een moderne techniek die niet mobiel is maar wel op een computer gemonteerd is, wordtgetoond op figuur 2.4a, deze heeft zijn sensoren gemonteerd aan de onderkant van hetscherm. Deze techniek is een van de makkelijkste die aangeleerd en gebruikt kan worden.

Page 25: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

10 Eye-trackers

(a) Gaze plot (b) Heat map

Figuur 2.3: Resultaat figuren bij eye-tracker

Er hoeft ook niets bevestigd te worden aan de persoon die het moet gebruiken, het hoofdhoeft ook niet te worden ondersteund en dit maakt deze methode zeer gebruiksvriendelijk.

Bij deze methode laten we een gebruiker op een computer werken of kunnen er beel-den getoond worden. Zo kan men bijvoorbeeld zien hoe een gebruiker omgaat met eenprogramma, hoe er genavigeerd wordt op een website of wat er op een beeld opvalt.Hiermee kan men bijvoorbeeld heat maps of gazeplots verkrijgen zoals getoond op figuur2.3. Figuur 2.4b toont de Golden Triangle van Google, een resultaat dat bekomen wordtwanneer men verschillende gebruikers hetzelfde trefwoord laat opzoeken op Google. Zo isaangetoond dat een gebruiker zich het meest fixeert naar het gedeelte linksboven van dezeresultaten. Dit zijn inderdaad de meest interessantste, vaak is dit het resultaat dat menzoekt. Daarbij zien we ook dat de bovenste advertentie van Google het meeste aandachtkrijgt. Zo kan men ook concluderen dat het bovenste resultaat meer geld kan opleverenen dat men dus een hogere prijs kan vragen om op deze positie te kunnen staan.

2.2.5 Mobiele eye-trackers

Een mobiele eye-tracker zoals afgebeeld in figuur 2.1 biedt veel meer mogelijkheden ingebruik. Deze is zeer compact en kan overal gebruikt worden, zonder dat hij de testpersoonhindert. Men heeft geen tafel of ondersteuning nodig, hij rust op de neus en oren zoals eengewone lees- of zonnebril. Het enige verschil is dat hij een beetje zwaarder en groter zalzijn en dat hij een kabel heeft die zijn gegevens zo doorzendt naar een draagbaar toestel.Daarbij wordt deze vaak nog met een elastisch koordje achter het hoofd vastgezet zodatkleine bewegingen de kalibratie niet kunnen storen.

Deze toestellen moeten ook gekalibreerd worden, dit gebeurt met software dat op hetdraagbaar toestel staat. Op deze figuur is dit het vierkante toestelletje dat aan de broekvan de persoon hangt (bij dit onderzoek gebruiken we een laptop waar de gegevens naartoe zullen gaan). Op het toestel krijgen we hetzelfde beeld waar de persoon met de eye-tracker naar toe kijkt. Hierop wordt een rastersysteem gebruikt met bolletjes. Het aantalbolletjes is instelbaar. Met behulp van een optisch laserlicht kan men specifieke puntjesop een muur aanduiden die dan overeenkomen met de puntjes op het raster. Wanneer depersoon er naar toe kijkt kan men het punt waar naar gekeken wordt confirmeren. Dit

Page 26: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

2.2 Eye-tracking technieken 11

(a) Vaste eye-tracker onder het beeld. (b) Golden triangle heat map op google

Figuur 2.4: Eye-tracker bij gebruik van een computer

proces wordt steeds herhaald tot het toestel volledig gekalibreerd is. Wanneer het toesteleen beetje uit kalibratie valt hoeft men niet al de punten te kalibreren, maar enkel dezewaar men vermoed dat het nodig is. Dit volledige proces dat juist besproken werd, is dekalibratie die gebruikt wordt bij een eye-tracker.

Page 27: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

12 Eye-trackers

Page 28: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

Hoofdstuk 3

Methoden voor objectherkenning

In de opnamen die bekomen worden zouden we producten willen herkennen, daarom zaler gebruik gemaakt worden van beeldverwerkingstechnieken. De filmpjes worden alle-maal in afzonderlijke beeldjes geknipt waardoor een algoritme bepaalde kenmerken ophet beeld kan herkennen. Deze kenmerken kunnen dan gebruikt worden om met anderekenmerken van een andere beeld vergeleken te worden. Zo gaan we dezelfde kenmerkenwillen terugvinden tussen twee beelden die eventueel dezelfde regio’s kunnen bevatten.Eén van deze technieken is de zogenaamde SIFT, dat gebruikt wordt bij het samenstellenvan panorama’s.

Er zijn zeer veel verschillende soorten technieken die verschillen in snelheid, en het soortkenmerk die ze kunnen vinden. Belangrijk is ook de hoek, de schaal en de grootte waarineen bepaald kenmerk nog als eenzelfde kan beschouwd worden. In dit hoofdstuk zullen wede verschillende technieken met hun voor- en nadelen bespreken. Veel onderdelen van dithoofdstuk zijn gebaseerd op de paper A Survey on Local Invariant Features (Tuytelaarsand Mikolajczyk, 2008). Daarbij zullen uitbreidingen besproken worden en zullen hunbijhorende referenties vermeld worden indien ze niet uit vorig vermelde paper komen. Ditzijn vooral algoritmes die vermeld zullen worden in sectie 3.2.

3.1 Beeldverwerkingstechnieken

Soms wil men uit een beeld specifieke kenmerken herkennen zoals enkel randen of enkelhoeken. Soms wil men enkel regio’s afsplitsen van bijna dezelfde kleuren of intensiteiten,hiervoor heeft men verschillende technieken nodig. Als men enkel geïnteresseerd is in eenbepaald kenmerk zal dit ook sneller gaan, want wat is het nut om randen én hoeken tezoeken als we enkel hoeken nodig hebben?

In sectie 3.1.2 zullen een paar technieken besproken worden voor het zoeken van hoeken,sectie 3.1.3 zal een paar algoritmes bespreken die vlekken zullen zoeken, sectie 3.1.4 zalgaan over het zoeken van regio’s en in sectie 3.2 zullen technieken besproken worden diemeer dan een specifiek kenmerk zullen detecteren.

Page 29: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

14 Methoden voor objectherkenning

3.1.1 Introductie

Beeldverwerkingstechnieken hebben bepaalde kenmerken met hun specifieke termen zoalsinvariant of covariant, rotatie invariant of isotroop en affine invariant. Om bepaaldewoorden en termen die in de volgende onderdelen gebruikt zullen worden, beter te kunnenbegrijpen zal er eerst worden uitgelegd wat deze termen willen betekenen.

Invariant of covariant: Een kenmerk is invariant als deze niet veranderd wanneer menhet object transformeert. De grootte van het object zal in de 2D wereld nog steeds evengroot blijven.

Rotatie invariant of isotroop: Een object is isotroop wanneer het van uit elke richtingdat het bekeken wordt er hetzelfde uitziet. Een voorbeeld is een bal of in de 2D wereldeen cirkel. In het algemeen betekent dit dat wanneer men het object draait, dit nog steedshetzelfde blijft.

Affine invariant: Dit is wanneer een foto zo vervormd wordt dat bijvoorbeeld een vier-kant in de 3D wereld als een parallellogram op een foto gezien kan worden of omgekeerd.Dit kan veroorzaakt worden wanneer er een beeld van een object schuin op een foto wordtgebracht. Wanneer het schuin trekken van het resultaat geen invloed heeft en hetzelfderesultaat oplevert spreekt men van affine invariant.

Keypoints: Dit zijn kenmerken die gevonden zijn door een specifiek algoritme. Het iszeer belangrijk dat deze kenmerken reproduceerbaar zijn, dit betekent dat een anderefoto met bijna hetzelfde beeld deze keypoint op zijn specifieke plaats kan reproduceren,of beter gezegd benaderen. Deze zogenaamde keypoints bevatten descriptoren, dit is eenmultidimensionale ruimte die het gevonden punt beschrijft. Op deze manier zal menkunnen berekenen of we hetzelfde kenmerk gevonden hebben. Deze descriptoren wordengebruikt door de meeste efficiënte algoritmes die besproken zullen worden in sectie 3.2.Hoe deze descriptoren gebruikt kunnen worden om overeenkomstige keypoints te vindenzal besproken worden in sectie 3.3.

De gradiënt van een beeld: Dit is de eerste afgeleide van een beeld. Wanneer er in hetbeeld een overgang is van een donker gedeelte (lage pixelwaarde) naar een licht gedeelte(hoge pixelwaarde) zal dit een grote waarde geven voor de afgeleide van het beeld op dieplaats. Hoe sterker de overgang is, hoe groter de pixelwaarde zal zijn.

Laplaciaan van een beeld: De Laplaciaan van een beeld is de tweede afgeleide van hetbeeld. Dit zal een positieve piek geven wanneer het beeld overgaat in de gradiënt vaneen lage pixelwaarde naar een hoge. Een negatieve piek ontstaat wanneer de pixelwaardeveranderd van een hoge naar een lage waarde voor de gradiënt.

In 1954 toonde een observatie aan dat men bepaalde kenmerken in een beeld kan her-kennen. Deze punten hebben de naam ’Interest points’ gekregen. Deze term werd voorhet eerst geïntroduceerd door Moravec in 1979 en wijst een belangrijk kenmerk aan ineen beeld. Deze punten zijn meestal hoeken, randen, bogen en nog veel meer. Door hetzoeken in een beeld naar deze specifieke eigenschappen kan er een lijst van interest pointsworden opgemaakt.

Page 30: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

3.1 Beeldverwerkingstechnieken 15

3.1.2 Hoek detectoren

De detectoren die hier besproken zullen worden zijn deze die hoeken als specifiek kenmer-ken kunnen vinden in een beeld. In de komende secties zullen deze verschillende bekendedetectoren besproken worden. Deze zijn soms wel is een inspiratie geweest om efficiënterealgoritmes te kunnen ontwerpen.

3.1.2.1 Harris detector

Deze detector vindt tweedimensionale variaties in de intensiteit van een beeld. Ze wordengedetecteerd door de tweede afgeleide (Laplaciaan) van het beeld te nemen. Hierdoorzullen al de sterke verandering duidelijk te zien zijn in het beeld. Deze veranderingenworden in elk punt aangeduid als een eigenwaarde. Dit toont aan hoe sterk de variatiein het beeld in een bepaalde richting is. Grote veranderingen van eigenwaarde in beiderichtingen (x- en y-richting) duidt op een locale maximum waar deze waarden groot zullenzijn. Op deze manier weet men dat men een hoek gevonden heeft. Deze punten zijninvariant voor translatie en rotatie. Daarbij vindt deze methode niet alleen kenmerkenzoals hoeken, maar ook T-kruisingen, draaiingen zoals bochten. . .

3.1.2.2 SUSAN detector

SUSAN detector staat voor Smallest Univalue Segment Assimilating Nucleus. Omdatdeze techniek geen gradiënten gebruikt, maar benaderingen door gebruik te maken vancirkels rond een bepaald punt heeft deze techniek minder last van ruis. Deze methodemaakt gebruik van een centrale pixel die men de nucleus noemt, hier rond bevind zicheen cirkel met vaste straal. Daarbij kan deze detector kan ook randen vinden. De pixelsop de cirkel worden in twee groepen gedeeld, namelijk deze met dezelfde intensiteit als denucleus en al de andere pixels. De grootte hiervan zal dan belangrijke informatie gevenover de structuur van het punt in het beeld. Bij randen zal de waarde zakken tot 50%,terwijl hoeken tot een waarde van 25% kunnen geraken. Dit wordt aangetoond op delinkerkant van figuur 3.1b. Deze techniek zal meer punten vinden dan een Harris detectoren zal ook sneller zijn omdat deze geen afgeleide moet nemen van het beeld. Deze detectoris invariant voor translatie en rotatie.

3.1.2.3 Harris-Laplace en Harris-Affine Invariant

Mikolajczyk en Schmid hebben samen een schaal invariante hoek detector ontworpennamens Harris-Laplace. Daarnaast hebben ze ook een affine invariante detector ontworpennamens Harris-Affine. Beide technieken gaan uit van een selectie van de schaal die hetbeste past voor het gedetecteerde punt in het beeld.

Harris-Laplace zal een gewone Harris Detector (uitgelegd in sectie 3.1.2.1) toepassenmaar zal dan gebruik maken van verschillende schalen van het beeld. Hier zal dan elkpunt die met de Harris detector gevonden wordt vergeleken worden met hetzelfde punt opal de verschillende schalen. De schaal waarbij een bepaald punt het grootste extremum zal

Page 31: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

16 Methoden voor objectherkenning

Algoritme Hoeken

Vlekk

en

Regio’s

Rotatie

Invarian

t

Scha

alInvarian

t

Affine

Invarian

t

Herha

alba

arheid

Lokalisatie

Nau

wkeurigheid

Efficientie

Harris X X +++ +++ +++SUSAN X X ++ ++ ++Harris-Laplace X (X) X X +++ +++ ++Harris-Affine X (X) X X X +++ +++ ++Edge-based regions X X X X +++ +++ +

Tabel 3.1: Samenvating van de verschillende besproken hoek detectoren.

hebben zal met zijn bijhorende schaal worden geselecteerd. De grootte van het kenmerk ishier onafhankelijk van de grootte van het beeld. Meestal worden deze punten met behulpvan een cirkel aangeduid. De grootte van die cirkel is evenredig met de grootte van hetkenmerk.

Harris-Affine start met de Harris-Laplace punten die gevonden werden. Deze wordendan aangeduid met ellipsen op het beeld zoals Lindeberg het voorstelde, dit wordt namelijkgebruikt om bij een methode de affine invariante kenmerken aan te duiden. Met de tweedeafgeleide van het beeld zal de affine vorm van de hoek waaronder het beeld staat wordengeschat. Deze zal dan genormaliseerd worden en men zal opnieuw de hoek proberen tedetecteren. Wanneer de waarden niet overeenkomen zal men een nieuwe schatting moetenmaken en zal er terug geprobeerd worden om de hoek te detecteren.

3.1.2.4 Edge-based regions detector

Deze detector gebruikt de geometrie van een rand die in de nabijheid van een Harris hoekwordt gevonden. Deze kenmerken zijn stabiel omdat ze vanuit meerdere standpunten,grootte en belichting kunnen gedetecteerd worden. Ze worden dan geregistreerd vanuithet standpunt van de hoek waaruit vertrokken werd. In de praktijk zal men starten meteen Harris hoek en de dichtstbijzijnde rand die gedetecteerd werd met een Canny edgedetector. Het resultaat zijn parallellogrammen, maar omdat de affine methoden ellipsenals resultaat gebruikt en omdat het makkelijker is deze resultaten te kunnen vergelijkenmet andere waarden worden ze dus omgevormd naar ellipsen. Dit laatste zorgt voor verliesvan informatie omdat ellipsen vrij zijn in hun rotatie.

Page 32: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

3.1 Beeldverwerkingstechnieken 17

(a) Harris detector

(b) SUSAN detector

(c) Harris-Laplace en Harris-Affine

(d) Edge-based

Figuur 3.1: Hoek detectoren met aangeduide gevonden punten/regio’s.

Page 33: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

18 Methoden voor objectherkenning

3.1.2.5 Besluit

In een beeld maakt het niet uit of de hoek die gedetecteerd wordt wel een echte hoek is.Als een methode een kenmerk als hoek detecteert, zal dit ook gebeuren in een gelijkaar-dig beeld met dezelfde vorm als kenmerk. Dit komt omdat de detectoren als belangrijkeeigenschap hebben dat ze herhaalbaar zijn. Daarbij worden hoeken makkelijker gelokali-seerd in een beeld, enkel de definiëring van hun schaal is niet zo goed. Tabel 3.1 geeft eensamenvatting van de eigenschappen van de besproken hoek detectoren.

Figuur 3.1 toont alle hoek detectoren. De ellipsen tonen aan dat deze een affine eigenschaphebben. De ruiten bij Edge-based op figuur 3.1d worden omgevormd naar ellipsen omdatdeze een affine eigenschap hebben.

3.1.3 Vlek detectoren

Vlek detectoren, ook wel blob detectoren genoemd, zijn algoritmes die vlekken, regio’s ofbenaderende cirkelvormige vlakken kunnen vinden in een beeld. Een aantal detectorenzullen hier besproken worden.

3.1.3.1 Hessian detector

Deze detector kan enkel lokale maximums vinden bij vormen of randen, het nadeel isdat ze enkel in één richting gevonden kunnen worden. Daarbij is de lokalisatie van depunten meer onderworpen aan ruis en kleine veranderingen in dichtstbijzijnde texturen.Deze onstabiele eigenschap zou het moeilijker maken om op deze manier gelijkenissente kunnen vinden met een ander beeld. Daarbij kan deze enkel vlekken vinden van eenbepaalde grootte die overeen stemmen met de grootte van de filter.

3.1.3.2 Hessian-Laplace en Hessian-Affine

Hessian-Laplace en Hessian-Affine detectoren zijn gelijkaardig aan deze van de Harrisdetector voor het detecteren van hoeken, besproken in sectie 3.1.2.3. Maar hier ligt hetverschil dan dat deze methode vlekken zal vinden in plaats van hoeken. Deze soortdetectoren zullen locale maximums zoeken in de Hessian determinant. De punten diegevonden worden kunnen enkel voor vlekken van een bepaalde grootte en grootte van defilter herkend worden. Het bekomen resultaat is ook gelijkaardig aan deze van de Harrisdetector voor hoeken. Tegenover gewone Hessian detector besproken in sectie 3.1.3.1zullen deze detectors kenmerken op meerdere schalen kunnen vinden en vanuit meerderehoeken voor de affine detector.

3.1.3.3 Salient regions

Deze detector gaat op zoek naar saliente karakteristieken. Dit zijn lokale complexe enonvoorspelbare punten die gemeten worden door de entropie te berekenen van de waar-schijnlijkheidsgraad van de verdeeldheid van de intensiteit in een regio. Toch is het niet

Page 34: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

3.1 Beeldverwerkingstechnieken 19

Algoritme Hoeken

Vlekk

en

Regio’s

Rotatie

Invarian

t

Scha

alInvarian

t

Affine

Invarian

t

Herha

alba

arheid

Lokalisatie

Nau

wkeurigheid

Efficientie

Hessian X X ++ ++ ++Hessian-Laplace (X) X X X ++ ++ +++Hessian-Affine (X) X X X X ++ ++ +++Salient Regions (X) X X X (X) + + ++

Tabel 3.2: Samenvating van de verschillende besproken vlek detectoren.

voldoende om met de entropie op een bepaalde schaal het kenmerk te kunnen lokaliseren.Daarom wordt de schaal als een gewichtsfunctie toegevoegd aan het kenmerk.

3.1.3.4 Besluit

Vlek detectoren zijn minder accuraat in een beeld dan hoek detectoren, maar hun grootteen vorm worden wel beter gedefinieerd. Daarbij worden blob detectoren vaak als tegenge-steld beschouwd met hoek detectoren. Voor deze reden worden deze vaak in combinatiegebruikt in efficiënte algoritmes die men zal bespreken in sectie 3.2. Een van deze efficiëntealgoritmes zijn DoG en SURF die vaak onder dit soort van categorie van detectoren wor-den gebracht. Tabel 3.2 geeft een samenvatting van de eigenschappen van de besprokenvlek detectoren.

Figuur 3.2 toont alle besproken vlek detectoren met de regio’s aangeduid die gevondenwerden. De aanduidingen met een ellipsen betekent dat de punten een affine eigenschaphebben.

3.1.4 Regio detectoren

In dit deel zullen regio detectoren besproken worden. Dit zijn algoritmes die gelijkaardigeoppervlakten zullen groeperen. Algoritmes zoals MSER (sectie 3.1.4.2) en IBR (sectie3.1.4.1) die hier besproken zullen worden, kunnen ook blobs (vlekken) detecteren zoals insectie 3.1.3 besproken werd. Het voordeel dat deze algoritmes hebben ten opzichte vanvlek detectoren is dat deze ook onregelmatige vormen kunnen vinden.

Page 35: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

20 Methoden voor objectherkenning

(a) Hessian detector

(b) Hessian-Laplace en Hessian-Affine

(c) Salient regions

Figuur 3.2: Vlek detectoren met aangeduide gevonden punten/regio’s.

Page 36: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

3.1 Beeldverwerkingstechnieken 21

Algoritme Hoeken

Vlekk

en

Regio’s

Rotatie

Invarian

t

Scha

alInvarian

t

Affine

Invarian

t

Herha

alba

arheid

Lokalisatie

Nau

wkeurigheid

Efficientie

IBR X X X X ++ ++ ++MSER X X X X +++ +++ ++Segmentatiegebaseerd X X (X) (X) + + +

Tabel 3.3: Samenvating van de verschillende besproken regio detectoren.

3.1.4.1 IBR

IBR staat voor Intensity Based Regions, deze zal zoals de naam het aangeeft naar intensi-teit extremums zoeken in het beeld. Zo zal de regio rondom een punt radiaal onderzochten gegroepeerd worden. Deze willekeurige vormen worden dan vervangen door een ellips.

3.1.4.2 MSER

MSER staat voor Maximally Stable Extremal Regions. Deze is gebaseerd op de intensiteitvan een beeld. Naburige pixels met een intensiteit die zeer dicht bij elkaar liggen, wordenbijeen genomen en als één grote regio beschouwd. Hier zullen de regio’s omlijnd wordenvolgens hun intensiteit zodat ze als eenzelfde kunnen bekeken worden. Om een set vankarakteristieken te verkrijgen zal men wel gebruik maken van ellipsen die de omcirkelderegio’s het best zullen benaderen.

3.1.4.3 Segmentatiegebaseerde methode

Hier zullen we een groot aantal pixels samen nemen tot een groot vlak waar weinig totgeen variatie in intensiteit aanwezig is. Door het vergroten van het aantal segmentenkan men de vlakken bekijken als een soort van superpixel. Omdat ze ongeveer eenzelfdegrootte hebben is deze methode schaal invariant. Ze bedekken de hele foto zonder dat erenige overlapping kan gebeuren. Dit soort van beeld segmentatie is vaak veel te groot omgebruikt te worden als een lokaal kenmerk. Daarom zal dit ook minder geschikt zijn voorobject herkenning.

3.1.4.4 Besluit

Regio gebaseerde detectoren zijn zeer accuraat in hun lokalisatie van hun kenmerken.Zeker als dit gestructureerde beelden zijn zoals objecten met geprinte oppervlakken of

Page 37: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

22 Methoden voor objectherkenning

(a) IBR

(b) MSER

(c) Segmentatiegebaseerd

Figuur 3.3: Regio detectoren met aangeduide gevonden punten/regio’s.

Page 38: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

3.2 Efficiente algoritmes 23

Figuur 3.4: Tweede afgeleide van de gaussische filter.

gebouwen. Superpixels worden vaak gebruikt om de snelheid op te drijven zodat men enkelnaar de superpixel hoeft te kijken. Het enige nadeel bij MSER is dat deze zeer gevoelig isaan ruis in het beeld. Anderzijds scoort deze methode heel goed in zijn herhaalbaarheid.Het probleem bij IBR is dat deze niets zou kunnen vinden als de regio waar gezocht wordtniet-convex (geen cirkels bevat) is, maar ze is wel beter wanneer er kleine openingen zijnin de regio’s. Tabel 3.3 geeft een samenvatting van de eigenschappen van de besprokenregio detectoren.

Figuur 3.3 toont alle regio detectoren die besproken werden. Bij de figuur links van 3.3bzien we de regio’s die erna rechts worden omgevormd naar ellipsen omdat deze methodeaffine invariant is.

3.2 Efficiente algoritmes

In deze sectie zullen een paar methoden worden beschreven die werden ontworpen met alsdoel efficiënt te zijn. Dit zijn vaak uitbreidingen van de vorige methoden die besprokenwerden, of ze maken er soms gedeeltelijk gebruik van. Hieruit zullen enkele geschiktealgoritmes gebruikt worden waarmee het onderzoek kan worden verder gezet.

3.2.1 DoG

DoG staat voor Difference-of-Gaussians, dit zal het beeld eerst enkele keren gladder ma-ken met behulp van een Gaussiaanse convolutie masker zoals getoond in figuur 3.4. Hetresultaat hiervan wordt geproduceerd in verschillende schalen, deze zullen dan gecombi-neerd worden met paren om zo een DoG blob te genereren. Hieruit zullen zowel localemaximums met hun grootte en locatie gevonden worden. Om ook nog informatie over deranden te hebben zal de Laplaciaan (tweede afgeleide) van het beeld genomen worden. Opdeze manier zullen de eigenwaarden van de volledige Hessiaanse matrix berekend wordenen op dit moment wordt ook hun maat van belangrijkheid geëvalueerd. Figuur 3.5 geefteen voorbeeld van wat een DoG filter is. (Lei, 2002)

Het resultaat L(x, y, σ) wordt gezien als een resultaat van de convolutie van een variabeleGaussische schaal G(x, y, σ) met het beeld I(x, y):

L(x, y, σ) = G(x, y, σ) ∗ I(x, y) (3.1)

Page 39: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

24 Methoden voor objectherkenning

Figuur 3.5: Difference-of-Gaussians.

Hier is * de convolutie van beide functies:

L(x, y, σ) =1

2πσ2e

−(x2+y2)

2σ2 (3.2)

Om op deze manier een lokalisatie van de stabiele keypoints te vinden over verschillendeschalen gaat er een difference-of-Gaussian (figuur 3.5) D(x, y, σ) worden geconvolueerdmet het beeld. Deze zal dan berekend kunnen worden door het verschil van de dichtstbij-zijnde schalen met factor k:

D(x, y, σ) = L(x, y, kσ)− L(x, y, σ) (3.3)

In het resultaat zal elk punt vergeleken worden met zijn acht buur-punten in het huidigebeeld en de negen in de schaal er boven en onder zoals getoond in figuur 3.6. Het punt zalgeselecteerd worden als deze verschillend is van zijn omliggende punten. Punten die eenhoog contrast hebben of een groot verschil in randovergangen zijn onstabiel en wordengeëlimineerd. (Lowe, 2004) (N. and II, 2007)

3.2.2 SIFT

SIFT staat voor Scale-Invariant Feature Transform. Dit zal het beeld convolueren meteen gaussiaanse filter onder verschillende schalen. Men zal dan kenmerken vinden dooreen DoG (sectie 3.2.1) gecombineerd met interpolatie over deze verschillende schalen te

Page 40: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

3.2 Efficiente algoritmes 25

Figuur 3.6: Het punt X wordt vergeleken met zijn 26 buren.

gebruiken. Dit gebeurt door de Laplaciaan (tweede afgeleide) te nemen van het beeld enlokaal maximums te vinden. Na het lokaliseren van deze punten zal voor elk punt eenschaal en een oriëntatie worden toegewezen. De oriëntaties van de gradiënt en hun groot-heden worden gecombineerd in een histogram waaruit de descriptoren gevormd worden.Deze methode is schaal en rotatie invariant.

Men kan SIFT in vier belangrijke stages indelen (Lowe, 2004), namelijk:

1. Het zoeken van extremums over verschillende schalen. Dit gebeurt met behulpvan een Difference-of-Gaussian (besproken in sectie 3.2.1). Dit is een zeer goedebenadering van de Laplacian-of-Gaussian. Zo zullen er kandidaat keypoints wordenopgeleverd die in de volgende stappen worden gefilterd.

2. Voor elke lokalisatie van een keypoint wordt er een gedetailleerd model vast gesteldom zo de locatie en schaal te verkrijgen. De keypoints worden geselecteerd op basisvan hun stabiliteit. Zo zullen punten die langs randen gelokaliseerd zijn of een laagcontrast hebben (en daarom gevoelig zijn aan ruis) worden verwijderd. Dit gebeurtmet behulp van een benadering van de Taylor reeks expansie van de functieD(x, y, σ)tot de kwadratische termen van deze reeks. Het verwerkte resultaat hiervan is

D(x̂) = D +1

2

∂DT

∂xx̂ (3.4)

waarbij D(x̂) groter moet zijn dan een opgegeven waarde. Indien dit niet het gevalis zal het punt verwijderd worden van de resultaten. Maar voor stabiliteit is dit nietvoldoende! Daarom zal er ook nog de trace en determinant van de Hesiaanse matrix(formule 3.5) gebruikt worden om te kijken dat het resultaat volgens vergelijking3.6 kleiner zal zijn dan een opgegeven waarde voor r.

H =

[Dxx Dxy

Dxy Dyy

](3.5)

Tr(H)2

Det(H)<

(r + 1)2

r(3.6)

Page 41: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

26 Methoden voor objectherkenning

3. Voor elke Keypoint wordt er één of meerdere oriëntaties toegewezen die gebaseerdzijn op de gradiënt van dit locale punt op het beeld. Omdat we nu een vaste schaalvoor de geselecteerde keypoint hebben kunnen we pixelgewijs de gradiënt groottem(x, y) en de oriëntatie θ(x, y) vanuit elke sample L(x, y) berekenen met:

m(x, y) =√(L(x+ 1, y)− L(x− 1, y))2 + (L(x, y + 1)− L(x, y − 1))2 (3.7)

θ(x, y) = tan−1 L(x, y + 1)− L(x, y − 1)

L(x+ 1, y)− L(x− 1, y)(3.8)

Een oriëntatie histogram van de gradiënt rond het keypoint zal 36 richtingen krijgendie de volledige 360◦ zal bedekken. Deze waarden zullen komen vanuit de grootte vande gradiënt en van een cirkelvormige Gaussiaan-gewogen venster met een σ die 1.5keer de omvang heeft van het keypoint. Pieken in dit histogram komen overeen metdominante richtingen, deze zullen dan gebruikt worden voor de oriëntatie. Wanneerer meer dan één piek boven de 80% ligt zullen hieruit meerdere keypoints gegenereerdworden waar hun verschil enkel zal liggen in hun oriëntatie.

4. Nu we de locatie, oriëntatie en de grootte van de keypoint hebben is de laatste staphet verkrijgen van een descriptor. Deze moet sterk te onderscheiden zijn van anderenen moet zo invariant mogelijk zijn voor resterende variaties zoals de belichting.

De hieruit gegenereerde keypoints hebben een descriptor lengte van 128. Dit zijn decimalewaarden die een histogram vormen van een 4x4 rooster met elk 8 oriëntatie zoals getoondin figuur 3.8.

3.2.3 ASIFT

ASIFT staat voor Affine Scale-invariant Feature Transform. Dit is een verbeterde versievan de gewone SIFT, zoals de naam het zegt heeft ze een affine eigenschap. Het simulerenen normaliseren van rotaties, translaties en detectie onder verschillende schalen is hetbasis idee van SIFT. Affine-SIFT voegt hier nog een extra simulatie aan toe, namelijk hetdetecteren van kenmerken bij het veranderen van de camerahoek. Deze methode zal eerstal de verstoringen die worden veroorzaakt door een verandering van de camerahoek metvoldoende nauwkeurigheid simuleren en normaliseren (Morel and Yu., 2009). Daarna zalhet SIFT algoritme worden toegepast om de keypoints te detecteren.

De complexiteit van deze routine ligt hoger dan deze van SIFT. Het zal daarom ooklanger duren eer deze methode keypoints als resultaat geeft. Daarbij zal deze meer key-points opleveren dan SIFT omdat er verschillende standpunten van de camera wordengesimuleerd. Wanneer bij deze methode keypoints van twee verschillende beelden verge-leken worden zal de verhouding van keypoints tegenover de gevonden punten evenveel ofminder overeenkomsten opleveren.

3.2.4 SURF

SURF staat voor Speeded Up Robust Features. Dit is gebaseerd op een ruwe benaderingvan de Hessiaanse matrix (Johannes Bauer and Protzel, 2007). Hier zal men geen gebruik

Page 42: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

3.3 Keypoints 27

Figuur 3.7: Benadering van de tweede orde Gaussische filter gebruikt door SURF.

maken van een Gaussische benadering van de Mexicaanse hoed zaols SIFT wel doet, maarzal er gebruik worden gemaakt van box-types (N. and II, 2007) zoals in figuur 3.7 getoondwordt. Daarbij zal het beeld ook niet worden glad gemaakt wanneer men over zal gaanvan schaal (Juan, 2009) terwijl dit bij DoG (voor de methode in figuur 3.5) wel gedaanwordt. Op deze manier zullen er minder berekeningen gemaakt worden voor het lokaliserenvan keypoints. Deze methode die geïnspireerd werd door SIFT is beter bestand tegentransformaties van de objecten in het beeld, ze geeft sneller resultaten door benaderingenen optimalisaties (N. and II, 2007), terwijl deze een relatief lage inpakt zullen hebben ophet resultaat. Deze methode die sneller is dan SIFT zal minder keypoints opleveren, ditkan wel positief zijn omdat het vinden van gelijkaardige keypoints sneller zal verlopen.In het algemeen zal ruis in het beeld geen invloed hebben in het aantal keypoints datgevonden zullen worden. Wel zal SURF in tegenstelling tot andere algoritmes minder lasthebben bij het matchen van deze keypoints met deze van een ander beeld.

3.2.5 FAST

FAST staat voor Features from Accelerated Segment Test. Deze werd gebaseerd op deSUSAN detector (besproken in sectie 3.1.2.2) die gebruik maakt van de intensiteit vannaburige pixels. Hier wordt gestart van een centrale pixel waar zich een cirkel rond bevindtvan 16 pixels en dus een vaste straal heeft. Deze pixels worden vergeleken met de centralepixel en geclassificeerd onder lichter, donkerder en gelijke intensiteit. Op deze manier zalde entropie voor elk van de klassen berekend worden tot ze nul is, deze informatie zal onsvertellen of we hier een hoek hebben. De implementatie is een zeer grote geneste if-then-else verklaring in C die dan gecompileerd wordt en zal werken als een hoek detector. Ditis zeer efficiënt, en zelfs 30 keer sneller dan de DoG detector die besproken werd in sectie3.2.1.

3.3 Keypoints

Keypoints zijn het resultaat van kenmerken die gevonden worden in een beeld. Ze wordengebruikt door algoritmes zoals SIFT, SURF en al de varianten die hierop gebaseerd zijn.Deze keypoints bevatten descriptoren die de gevonden kenmerken in een beeld beschrijven.Deze kunnen op een eenvoudige manier, zoals men zal uitleggen in sectie 3.3.2 gebruikt

Page 43: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

28 Methoden voor objectherkenning

Figuur 3.8: SIFT descriptor gevisualiseerd.

worden om vergelijkingen tussen beelden te vinden. Ze zijn schaal en rotatie invarianten invariant voor de belichting en gezichtspunt van een 3D camera. Daarbij zijn ze goedgelokaliseerd, zowel in ruimtelijke als in hun frequentie domein en verminderen ze de kansop verstoringen van ruis in het beeld.

Om descriptoren te verkrijgen wordt er rond de keypoint gekeken en zal SURF en SIFTeen 4x4 vierkant rooster gebruiken om deze informatie in te gieten. Op figuur 3.8 wordtze als een 2x2 rooster getoond. De informatie die hiervoor gebruikt wordt is de gradiëntvan het beeld. Zo zal bij SIFT de gradiënt oriëntatie in elke cel gekwantificeerd wordentot 8 verschillende oriëntaties zoals getoond wordt in figuur 3.8. De gradiënten wordengeconvolueerd en de grootte zal dan gesommeerd worden bij de juiste oriëntatie. De SURFdescriptor zal enkel de variaties in de x- en y-richting sommeren en zal ook de sommatievan de absolute waarde van de richtingen nemen. Dit zal dan 4 waarden geven voor elkvakje van het rooster.

Ondanks dat deze descriptoren met hetzelfde algoritme berekend kunnen worden om opdie manier gelijkenissen tussen beelden te vinden moeten de vergelijkingen binnen een-zelfde methode van detector gebeuren. Uit experimenteel onderzoek werd gevonden datSIFT optimaal werkt met 128 decimale descriptoren, terwijl dit bij SURF 64 kommage-tallen zijn. Indien er bijvoorbeeld voor SURF 128 waarden gebruikt wordt zal dit weinigeffect hebben op het resultaat (Johannes Bauer and Protzel, 2007) en zal het meer re-kentijd vragen, daarbij zullen deze overeenkomsten minder goed zijn omdat de descriptorgevoeliger zal zijn voor vervormingen.

3.3.1 Genereren van keypoints

In figuur 3.8 wordt getoond hoe een SIFT descriptor er uit ziet. Het linkse rooster wordtbekomen door een 16x16 rooster van het beeld rond het punt dat gevonden werd tenemen. De descriptors worden dan gegenereerd van het beeld op I(x, y) en zal men zoalsvergelijking 3.2 convolueren met Gσi waar σi de schaal is van de keypoint gecentreerd op

Page 44: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

3.4 Besluit 29

(a) DoG (b) SURF (c) FAST

Figuur 3.9: Efficiënte algoritmes met aangeduide gevonden punten/regio’s.

(xi, yi). Door de gaussiaanse convolutie zullen de pixels in het centrum van het 16x16rooster een grotere bijdrage leveren bij het maken van de oriëntatie histograms.

3.3.2 Vergelijken van keypoints

Het vinden van gelijke keypoints, ook wel matchen of matching van keypoints genoemd,van twee verschillende foto’s wordt gevonden door elke keypoint met descriptor (Si) vanfoto(1) te nemen en deze te vergelijken met al de descriptoren (Sj) van de keypoints vanfoto(2). Zo wordt er steeds de euclidische afstand (N. and II, 2007) van de descriptor metN dimensies

dtemp =

√√√√N−1∑k=0

(S[k]i − S[k]j)2 (3.9)

berekend en wordt de dichtstbijzijnde waarde en de tweede dichtstbijzijnde waarde bijdeze keypoint onthouden:{

d2 = d1; d1 = dtemp if dtemp < d1d2 = dtemp else if dtemp < d2

(3.10)

Elke keer wanneer er een keypoint van foto(1) vergeleken werd met al de keypoints vanfoto(2) wordt de dichtstbijzijnde waarde door de tweede dichtstbijzijnde waarde gedeelden dit resultaat moet dan kleiner zijn dan een opgegeven waarde:

ξ <d1d2

(3.11)

Wanneer dit het geval is, mogen we met een grote zekerheid weten dat we een gelijkaardigpunt gevonden hebben.

3.4 Besluit

Als er op voorhand niets over de inhoud van de foto’s geweten is, zou het best een goedidee zijn om verschillende soorten kenmerken in een foto op te sporen. Hier zou men dan

Page 45: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

30 Methoden voor objectherkenning

Algoritme Hoeken

Vlekk

en

Rotatie

Invarian

t

Scha

alInvarian

t

Affine

Invarian

t

Efficientie

Snelheid

#keyp

oints

Correctheid

Bestand

tegenruis

SIFT (X) X X X +++ ++ ++ +++ ++ASIFT (X) X X X X +++ + +++ ++ ++SURF (X) X X X +++ +++ + +++ +++FAST X X ++ ++++

Tabel 3.4: Samenvating van de verschillende besproken efficiënte algoritmes.

best één van de efficiënte algoritmes kunnen gebruiken die combinaties van verschillendesoorten van kenmerken terugvinden in een foto. Er kan ook een groot verschil gemaaktworden in de grootte van invariantie van het gekozen algoritme. Er kan bijvoorbeeldgekozen worden voor een algoritme waar de invariantie groot genoeg is zodat er weinigverschil is tussen de gevonden kenmerken. Als we een hogere variëteit hebben, dan kaner meer ruis in komen en is het ook zo complex geworden dat het veel langer duurt.Het beste zou zijn dat men zo weinig mogelijk variatie in de detectoren gebruikt, zo kanmen best een grootte kiezen dat optimaal zou zijn voor de applicatie. Als de verwachtetransformaties relatief klein zijn, is het beter de robuustheid van de detector te veranderen.Dit is uiteindelijk beter dan de grootte van invariantie te verhogen.

Een Harris detector heeft een hoge herhaalbaarheid en accuraatheid van de lokalisatievan zijn rotatie invariante kenmerken. Hessian detectoren vinden vlekken die niet goedgelokaliseerd zijn, daarbij hebben deze een tweede orde afgeleide nodig en dit kan zeerrekenintensief zijn. Een SUSAN detector gebruikt geen afgeleiden in zijn berekeningen,hier zal het beeld ook niet worden glad gemaakt en dit heeft als gevolg dat ze gevoeliger zalzijn aan ruis in het beeld. Rotatie invariante methoden zijn zeer geschikt voor applicatieswaar enkel ruimtelijke plaatsbepaling van het kenmerk wordt gedaan. Voorbeelden hiervanzijn bewegende beelden en zelfs camera calibratie.

Efficiente algoritmes zijn zeer interessant omdat deze meestal keypoints genereren die zeermakkelijk gebruikt kunnen worden. Dit zijn algoritmes zoals SURF, SIFT en ASIFT.SIFT vindt meer keypoints dan SURF, maar SURF is sneller. ASIFT vindt nog meerdan SIFT maar ze is veel trager. Daarbij zullen de matchen die ASIFT heeft niet snelverminderen in aantal wanneer men de hoek van hoe we op het object bekijken grotermaken dan 20◦. In een experimenteel onderzoek van Morel en Yu (Morel and Yu., 2009)kan men het beeld zelfs tot een hoek van 80◦ kantelen en worden er nog steeds gelijke-nissen gevonden terwijl het bij SIFT na de 10◦ al snel afneemt. Daarbij is SURF beterbestand tegen ruis in het beeld (Johannes Bauer and Protzel, 2007). Tabel 3.4 geeft eensamenvatting van de eigenschappen van de besproken efficiënte algoritmes. In figuur 3.9worden een paar van deze efficiënte algoritmes getoond.

Page 46: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

3.5 Gekozen algoritmes 31

3.5 Gekozen algoritmes

Om gebruik te kunnen maken van algoritmes is het aan te raden de broncode van dezete bezitten. De broncode die als meteen bruikbaar werd gevonden waren deze van SIFT,ASIFT en SURF. Daarbij hebben deze ook als voordeel dat ze keypoints met descriptorenopleveren volgens hoe Lowe (Lowe, 2004) het voorschrijft. Deze descriptoren kunnengebruikt worden om vergelijkingen te kunnen vinden tussen twee beelden. Hoe dezedescriptoren werken werd uitgelegd in sectie 3.3.

Een eye-tracker (besproken in hoofdstuk 2) produceert beelden met de positie waar ernaar gekeken wordt, daarom gaan we enkel de regio van belang nemen. Dit is een kleineafbeelding dat uit het beeld wordt geknipt, als centrum heeft dit de positie waar waargekeken wordt. Deze is veel kleiner dan het originele beeld en heeft als nadeel dat ditveel minder pixels bevat, dus ook minder keypoints zal opleveren. Uiteindelijk hebbenwe enkel de kenmerken nodig die terug gevonden worden in de buurt naar waar gekekenwordt. Ondanks dat SURF snel is, zou het kunnen dat dit geen goede oplossing zal zijnomdat deze minder keypoints zal opleveren dan SIFT.

Meestal kijkt een persoon recht op een product die hij wilt bekijken. Ondanks dat Affine-SIFT zeer interessant is met zijn grote invariantie voor de kijkhoek, zal deze minderinteressant zijn voor het herkennen van producten in dit onderzoek, het zal daarbij ookmeer ruis in de resultaten kunnen creëren. Daarbij zullen de producten geregistreerdworden door er naar toe te kijken, de kans is dan zeer groot dat het op dezelfde manierzal gebeuren als wanneer iemand een product bekijkt tijdens een opname. Indien mendenkt dat er op het product schuin gekeken zou kunnen worden, kan men dit ook doenwanneer er een opname gemaakt wordt om het product te registreren. Zo zullen er danook keypoints aangemaakt worden vanuit die specifieke hoeken. Op deze manier zullen ervoldoende keypoints worden aangemaakt die voldoende informatie zullen bevatten voorhet herkennen van een specifiek product.

Experimenteel hebben we ondervonden dat SIFT de beste oplossing was. Deze gaf integenstelling tot de andere algoritmes redelijk correcte resultaten op. SURF is geen goedeoplossing: ze was snel, maar leverde in veel beelden maar één tot zelfs geen enkele keypointop. ASIFT daarentegen leverde makkelijk 15 tot 25 keypoints per frame, maar de bekomenresultaten bleken meer willekeurig te zijn voor hun overeenkomsten.

Page 47: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

32 Methoden voor objectherkenning

Page 48: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

Hoofdstuk 4

De opnames

Om het experiment tot een goed einde te brengen hebben we testopnames nodig. Daarvoorselecteren we een winkel die goed gesitueerd is, waar producten zijn die we goed kunnenonderzoeken en waar men de klanten niet zal storen. Deze winkel moeten we contacterenom te kunnen vragen of we daar opnames mogen doen. De opnamen moeten ook goedvoorbereid worden zodat er geen kostbare tijd wordt verloren.

4.1 Keuze van de winkel

Onze keuze is gevallen op de winkel AVEVE omwille van zijn situering, de winkel is opwandelafstand van de Hogeschool Lessius Antwerpen. Daarbij is deze winkel niet al tegroot en is het daar zeer rustig, vooral ’s morgens tijdens een weekdag. Bij momentenzijn er maar enkele klanten aanwezig waardoor niemand wordt gehinderd. Deze winkelbevat ook een grote keuze aan verpakkingen waardoor we een breder aanbod hebben om tekunnen onderzoeken welke producten gemakkelijker gevonden zullen worden dan anderen.Dit laatste zal besproken worden in 4.2.

Deze winkel werd door ons gecontacteerd met de vraag of we er onze opnames mochtenverrichten. Daarbij werd er ook vermeld dat de opnames als doel zullen hebben om eenthesis onderzoek voort te kunnen brengen. Deze hebben toen vriendelijk gereageerd:we waren van harte welkom voor het verrichten van ons onderzoek. Door een technischprobleem moesten we terug gaan op een ander moment wat we toen ook hebben gemeld.We waren vrij dit te doen zonder de winkelverantwoordelijke hiervan op de hoogte testellen.

4.2 Keuze van soorten producten

In de opnames willen we aan object herkenning doen. Dit wil zeggen dat we in ditonderzoek producten van het ene filmpje gaan vergelijken met een product van een anderfilmpje. De mogelijke methoden om dit te doen werd besproken in hoofdstuk 3 en zal indetail uitgelegd worden in hoofdstuk 5.

Page 49: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

34 De opnames

Nadat de winkel gecontacteerd werd en geconfirmeerd had dat we er opnames mochtenverrichten, ben ik persoonlijk naar de winkel gaan kijken welke producten het best geschiktwaren om te filmen en te onderzoeken. Zo zal de tijd die we nodig hadden tijdens hetfilmen worden geoptimaliseerd.

Omdat beeldverwerkingstechnieken herkenningspunten tussen beelden kan terugvinden,willen we bij verschillende soorten verpakkingen nagaan of deze altijd even goed wordtherkend. Daarom zullen we volgende soorten van verpakkingen onderzoeken:

• Dozen (vierkante verpakking)

• Zakken (Verpakking die gekreukt is)

• Blikken (cilindervorm)

Uit deze drie verschillende soorten verpakkingen werden een aantal producten geselec-teerd waarin we binnen elke categorie de verschillende soorten verpakkingen met elkaarvergelijken. Binnen het soort verpakking zal er dan onderscheid gemaakt worden tus-sen producten die sterk op elkaar zullen lijken, zoals een zelfde personage, dier of logo.Hierdoor is een gedeelte op de verpakking hetzelfde, maar een ander gedeelte dan weeranders.

4.3 Voortgang van de opnames

Bij het aankomen in de winkel hebben we ons meteen aangemeld aan het onthaal zodatde kassierster meteen wist wie we waren. We waren er met drie personen: Geert Brône,nog een collega uit Hogeschool Lessius Antwerpen en ik. Één van hen had de eye-trackerop en de andere bediende de laptop. Voor het kalibreren van deze eye-tracker kan menbest met twee personen zijn, zodat de ene persoon de kalibratie en controle heeft over deopname terwijl de andere persoon met de eye-tracker rond kan kijken en zich geen zorgenhoeft te maken over de meer technische zaken zoals de kalibratie, het starten en stoppenvan de opname.

De eerste keer dat we er zijn geweest hadden we een technisch probleem waardoor westoring op het beeld hadden en het beeld zelfs volledig wegviel. We zijn dan een tweedekeer moeten teruggaan, met een andere eye-tracker en een extra batterij. Toen hebben weontdekt dat het probleem niet lag aan de bekabeling of de eye-tracker zelf, maar haddenwe ontdekt dat de batterij leeg was.

De tweede keer hebben we met succes al de opnames kunnen doen. We hebben al deproducten die we wilden herkennen afzonderlijk met de eye-tracker bekeken. Daarna heb-ben we de opname filmpjes gemaakt waarin we vergelijkingen maken tussen verschillendeverpakkingen. Daarbij hebben we als extraatje een filmpje opgenomen terwijl we door dewinkel wandelen. Bij deze laatste hebben we vooral gekeken naar de producten waar weafzonderlijk een opname van hadden gemaakt.

Page 50: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

4.4 Intrainen van producten 35

4.4 Intrainen van producten

Elk product dat we willen herkennen in de opnames moet worden ingetraind. Dit wordtgedaan door met de eye-tracker te kijken naar elk product. Het heeft als voordeel datwe het product kunnen registreren zoals wanneer men er naar kijkt bij een opname diedan later geanalyseerd moet worden. Daarbij kan er ook enkel gekeken worden naar debelangrijke kenmerken van een product. Deze manier geeft ons ook de mogelijkheid omstukken te negeren die onbelangrijk zijn voor de herkenning of kan men zich langer fixerenop stukken die wel belangrijk kunnen zijn.

In de praktijk zullen we uit sectie 5.2.4.1 leren dat de tijd die we nodig hebben om naareen bepaald product te kijken geen belang heeft. Indien men langer naar een bepaaldpunt kijkt zullen deze dubbele regio’s toch verwijderd worden.

Page 51: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

36 De opnames

Page 52: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

Hoofdstuk 5

Verwerken van gegevens

Voor het verwerken van de gegevens moeten er verscheidene stappen voldaan zijn. Alseerst zal er een opname gemaakt moeten worden met de eye-tracker. Dit hebben we ookmoeten doen om dit onderzoek tot een goed einde te kunnen brengen. Hoe de opnameverloop en wat er gedaan moest worden werd uitgelegd in hoofdstuk 4.

De eye-tracker genereert twee bestandjes, een avi-bestand dat het filmpje voorstelt en eenwks-bestand dat informatie bevat. Nadat er een opname gemaakt werd kan men het wks-en avi-bestand gebruiken om resultaten te maken. Voordat een opnamen geanalyseerdkan worden, moeten we eerst producten toevoegen die men wilt onderzoeken. Dit hebbenwe ook gedaan bij de opnames uitgelegd in sectie 4.4.

Om het programma zo makkelijk mogelijk te houden zal het bestaan uit drie hoofdfuncties,namelijk:

• addProduct

• addRecording

• mkResultFromOpname

In sectie 5.1 en 5.2 zal men bespreken wat de functies addProduct() en addRecording()doen. Het verschil tussen deze twee is dat de functie addProduct() het samenvoegenen optimaliseren van de keypoints, zoals uitgelegd zal zijn in sectie 5.2.3, zal doen. Hetandere verschil is dat de functie addProduct() producten zal toevoegen in een dir metde producten. Logischerwijs zal de functie addRecording() opnames toevoegen die mendan later kan analyseren (uitgelegd in sectie 5.3.2) met behulp van de producten die menheeft toegevoegd.

In figuur 5.1 wordt een schematisch overzicht van de basisfuncties van het programmain een boomstructuur weergegeven. Steeds worden de belangrijkste functies getoond diehierbij nodig zijn. De functies gekoppeld aan main() zijn de basisfuncties, deze wordenuitgebreid besproken in dit hoofdstuk. De functies die meermaals gebruikt worden, staanlosgekoppeld van de main(), zodat deze niet herhaald worden. Er werd geen C broncodegetoond omdat dit te veel is.

Page 53: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

38 Verwerken van gegevens

1 main()2 + addProduct ()3 | + extractMovie ()4 | + getLookingPositions ()5 | + getFeatures ()6 | + summarizeWrittenFeatures ()7 | | + foreach(getDirFiles(product.frames.sift))8 | | | + getKeypointsFromFile () -> $global_product_keys9 | | + exportSIFTfeatures($global_product_keys)

10 | + makeUniqueWithinProductGlobalFile ()11 + addRecording ()12 | + extractMovie ()13 | + getLookingPositions ()14 | + getFeatures ()15 + mkResultFromOpname ()16 + analizeRecording ()17 | + makeKeysUniqueOverProducts ()18 | | + foreach(product)19 | | + makeUniqueOverProductGlobalFiles ()20 | + doAnalizeProject () -> $result as MovieSimResult21 | | + getProductsGlobalKeyfiles () -> $products22 | | + foreach(getDirFiles(movie.frames.sift))23 | | | + getKeypointsFromFile () -> $frame24 | | + foreach($frame)25 | | + foreach($products)26 | | + getKeypointMatches ()27 | + mkProductViewResult($result)28 + writeFinalResultAsCSV($result)29 + mkWordCloud($result)30 + mkResultMovie_Process($result)31 + foreach(getDirFiles(movie.frames.pgm))32 + getROIonFrame ()33 + foreach(getKeypointsFromFile ())34

35 getLookingPositions ()36 + foreach(getViewpoints ())37

38 getFeatures ()39 + foreach(getDirFiles(frames.pgm))40 + cropImage ()41 + getWrittenFeatures ()42 + getSIFTfeatures ()43 + sift_features ()44 + export_features ()

Figuur 5.1: Overzicht van het programma.

Page 54: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

5.1 Inlezen en verzamelen van data 39

5.1 Inlezen en verzamelen van data

In deze sectie zal er verteld worden wat er met het avi-bestand en het wks-bestand gedaanzal worden. Deze twee bestandjes zijn hetzelfde voor zowel een product te registreren alseen opname die men zal maken om deze dan te analyseren. Voor beide zullen hier dezelfdestappen ondernomen worden. Het enige verschil is dat de geregistreerde producten en deopnames die moeten geanalyseerd worden, in twee verschillende mappen komen te staan.

Bij het verwerken van het wks- en avi-bestand zal er een map met de naam van de opnameof product gemaakt worden. Hier zullen zich bestanden bevinden met een framenummeren een bijhorende extensie:

• pgm-extentie is een frame van een filmpje

• crop.pgm-extentie het onderdeel van het filmpje waar naar gekeken wordt

• pos-extentie de coördinaten naar waar gekeken wordt

• sift-extentie de keypoints die in de crop.pgm gevonden worden

5.1.1 Inlezen van het wks-bestand

Het wks-bestand bevat allerlei informatie over het bijhorende avi-bestand. Hierin vindenwe belangrijke informatie terug zoals de positie van het oog op elk tijdstip en op welketijdstippen elke frame van het avi-bestand genomen werd. Daarnaast is er nog andereinformatie zoals de versie van het programma dat gebruikt werd, de datum en tijd van deopname, de pupil grootte,. . .

Omdat we elke frame afzonderlijk moeten onderzoeken zal men in de dir van de opnamewaar al de afzonderlijke frames zich bevinden een pos-bestand zetten. Dit wordt gedaandoor de functie getLookingPositions(). Het pos-bestand bevat alle x- en y-posities naarwaar men naar kijkt op het beeld binnen het tijdsinterval dat de frame genomen werd. Hetavi-bestand loopt aan 30 frames per seconden, wat een tijdsinterval van 33 millisecondenper frame oplevert. De helft hiervan is 16ms, daarom zullen we al de registraties van eenpositie van het oog die 16ms voor en 16ms na een frame genomen werd wegschrijven naareen bestandje met dezelfde naam als de bijhorende frame maar dan met de extensie pos.

Deze posities hebben in het wks-bestand een waarde tussen de nul en één. Om efficiënterte werken zodat de waarde niet steeds naar pixelcoördinaten moet worden omgezet, zalde x- en y-waarde vermenigvuldigd worden met de breedte respectievelijk de hoogte vanhet beeld. Wanneer men bij een bijhorende frame de positie wilt verkrijgen naar waarmen naar toe kijkt kan men dit met de functie getROIonFrame() doen. Deze functie zalhet gemiddelde nemen van al de posities in het pos-bestand en zal deze dan terug gevenals een ROIpos structuur. Indien het verschil tussen de waarden boven een bepaaldedrempelwaarde zit zal de x_size en y_size van de structuur nul zijn en kan de framelater genegeerd worden.

Page 55: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

40 Verwerken van gegevens

5.1.2 Inlezen van het avi-bestand

Later moeten we al de frames afzonderlijk kunnen onderzoeken. We zullen daarom hetavi-bestandje openvouwen met behulp van de functie extractMovie(). Deze zal al deframes omzetten naar individuele bestandjes met de extensie pgm. De benaming van elkeframe is het framenummer, dat links wordt aangevuld met nullen om een vast aantaldecimale cijfers te bekomen. Nu hebben we al de frames apart en kunnen we deze gaanonderzoeken.

5.2 Bewerken van gegevens

Nu er per frame een afbeelding aanwezig is met een bijhorende pos-bestand waar depositie in staat waar naartoe men kijkt kan men nu de volgende stap uitvoeren, namelijkhet uitsnijden van de regio waarnaartoe men kijkt: de Region Of Interest uitgelegd in devolgende sectie (5.2.1).

5.2.1 Uitsnijden van de Region Of Interest (ROI)

Na het extracten van het avi-bestand en het wks-bestand in een dir van een bepaaldeopname kan men nu de volgende stap uitvoeren: het uitsnijden van de omgeving naar waarmen naar toe kijkt. Deze omgeving noemt men de Region Of Interest en zullen we zo kleinmogelijk maken. De beste grootte hiervoor is deze waarbij er nog voldoende keypointsdoor het objectherkenningsalgorithme gevonden zouden worden. Daarbij opteren we vooreen oneven getal, zodat men een centrale pixel heeft die zowel links als rechts evenveelpixels heeft. Hetzelfde gebeurt voor de hoogte. Zo werd experimenteel 41 pixels op41 als een zeer goed resultaat gevonden. Dit resultaat is niet te klein en zeker niet tegroot. Figuur 5.11 toont het resultaten filmpje, de ROI wordt linksonder getoond en inde opname erboven aangeduid met een rode kader.

Indien men meer pixels neemt vergroot de kans dat er verkeerde keypoints verkregenworden door bijvoorbeeld producten die op de achtergrond staan. Wanneer men dan teweinig pixels neemt zal het objectherkenningsalgorithme minder tot zelfs veel te weinigkeypoints vinden om een goede vergelijkingen te kunnen vinden tussen de producten enopname. Hoe men deze producten in een bepaalde opname zal zoeken zal besprokenworden in sectie 5.3.

Dit gedeelte gebeurt met behulp van de functie getROIonFrame(). Ze zal de positie ende grootte van het stukje verkrijgen voor de frame waar men de ROI wil uitsnijden. Debovenliggende functie zal dit doen voor elke frame die aanwezig is in de map. De x eny waarde die de ROIpos-structuur bevat is het centrale punt van de ROI, de x_size eny_size zijn de grootte van het beeldje. De ROI zullen we uitsnijden en opslagen onderdezelfde naam maar nu met de extensie crop.pgm.

Page 56: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

5.2 Bewerken van gegevens 41

5.2.2 Genereren van keypoints

Met behulp van de functie getFeatures() zullen we al de keypoints verkrijgen voor alde frames die aanwezig zijn. Bij elke frame zal eerst de ROI (sectie 5.2.1) uitgesnedenworden en vervolgens de functie getWrittenFeatures() uitgevoerd worden. De functiegetWrittenFeatures() zal al de keypoints zoeken in een frame en zal ze dan opslagenonder dezelfde naam maar dan onder de sift-extensie.

Nu hebben we voor elke frame een sift-bestand waar al de keypoints staan. Om eenopname te analyseren is dit voldoende, maar voor een product moeten we nog enkelestappen uitvoeren. Deze stappen zullen uitgelegd worden in de volgende sectie (5.2.3).

5.2.3 Samenvoegen van keypoints bij de producten

Omdat we producten moeten zoeken in een opname, is het nodig dat er bij elke framevan een opname die geanalyseerd moet worden keypoints aanwezig zijn. De productenmoeten gezocht worden, daarom is het makkelijker om een globaal bestand te maken metal de keypoints voor één specifiek product. Hier kunnen enkele complicaties voorkomen:

• Gelijkaardige punten bij eenzelfde product die op elkaar lijken. Dit zijn punten diebijvoorbeeld in opeenvolgende frames voorkomen.

• Gelijkaardige regio’s die gelijk zijn bij verschillende producten. Dit zijn punten bijtwee of meer verschillende producten die bijvoorbeeld een zelfde logo hebben ofandere gelijkaardige regio’s.

De functie summarizeWrittenFeatures() zal al de sift-bestanden van een product uit-lezen en zal al de aanwezige keypoints wegschrijven naar het bestand _sift.keys die inde map van een product zal te vinden zijn. Wanneer men de keypoints dan nodig heefthoeft men enkel maar één bestand te openen per product. Dit bestand zal het productin kwestie volledig kunnen beschrijven. Ook zal het nu veel makkelijker zijn om met dezekeypoints te werken.

5.2.4 Reduceren van keypoints

In de twee komende secties (5.2.4.1 en 5.2.4.2) gaan we dubbele keypoints verwijderen.Het is een belangrijk onderdeel van de verwerking, het zal er voor zorgen dat er meer enmeer correcte overeenkomsten gevonden zullen worden tussen een product en een opname.Hier zullen we eventjes het proces introduceren en zal er meteen uitgelegd worden wat erzal gebeuren indien we geen reductie van deze keypoints doen.

Indien men de volgende onderdelen met het verwijderen van de dubbele punten zou nege-ren zullen er zeer weinig tot zelfs geen punten gevonden worden. Het zou er voor zorgendat hoe belangrijker een regio is hoe kleiner de kans zal zijn dat deze dan terug gevondenzal worden. Het zou een omgekeerd effect kunnen veroorzaken dat men niet wilt. Daarbijzal het reduceren van deze dubbeke leypoints niet alleen de resultaten verbeteren, maar

Page 57: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

42 Verwerken van gegevens

origineel 30% drempelwaarde in elkproduct

25% drempelwaarde overalle producten

(a) Blik hondenvoer

(b) Lijmvallen

(c) Muizendoosjes

Figuur 5.2: Histogram van aantal keypoints in functie van hun euclidische afstand. Drie ver-schillende producten steeds vergeleken met Lijmvallen.

Page 58: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

5.2 Bewerken van gegevens 43

zal het de snelheid voor het analyseren van de opnames ook serieus opdrijven. Uit tabel5.1 en 5.2 kan men de waarde van de laatste kolom bekijken als het percentage tijd datbespaard zal worden bij het zoeken van de producten in een opname.

Figuur 5.2 toont alle stappen van links naar rechts die voldaan zullen worden bij de drieverschillende producten die onder elkaar staan. Steeds worden deze producten vergelekenmet het product Lijmvallen. Dit product werd gekozen omdat deze vergeleken met zichzelfveel punten op de grafiek vertonen die sterk op elkaar lijken. Hierdoor zijn er veel puntendie aan de linkerkant van het histogram liggen. Dit wordt zelfs zo duidelijk vertoontdoordat het histogram bimodiaal is. In de eerste kolom wordt er een histogram getoondvan de originele producten. In de middelste kolom bevinden zich histogrammen waar alde overeenkomstige keypoints binnen een zelfde product met een drempelwaarde van 30%verwijderd worden. Dit zal besproken worden in sectie 5.2.4.1. De laatste kolom bevathet eind resultaat, hier houden we enkel nog de keypoints over die gebruikt zullen wordenbij het analyseren. Hier zullen al de keypoints verwijderd worden over al de verschillendeproducten met een drempelwaarde van 25%. Dit laatste zal besproken worden in sectie5.2.4.2. Dit zal ook de laatste stap zijn die zal worden uitgevoerd. Nu hebben we eenverzameling van keypoints die genoeg van elkaar verschillen om een product volledig tekunnen identificeren.

In elk histogram van figuur 5.2 kan men ook steeds zien waar deze drempelwaarde van25% en 30% ongeveer ligt. De x-as wordt zowel in euclidische afstand uitgedrukt als opeen schaal van 100. Bij de originele histogram van de Lijmvallen zien we dat alles datlinks van de 30% ineens even hoog blijft. Ook zien we dit effect bij de Muizendoosjesmaar daar is het effect minder sterk te zien. Dit zou komen doordat men minder langgekeken heeft naar een zelfde regio, of dat de verpakking meer variatie heeft.

Na het elimineren van deze keypoints zien we aan de linkerkant een paar punten die watuitgestreken zijn. Dit komt doordat het gemiddelde van de dubbele keypoint bijgehoudenwordt. Dit zijn punten die nog steeds hard op elkaar zullen lijken. Als zo een puntgevonden wordt als beste, dan moet de tweede beste ongeveer dubbel zover in euclidischewaarde liggen anders is dit beste punt geen goed resultaat. Het punt dat gevonden wordtals kleinste zal makkelijk bij de nul liggen.

Het resultaat van het histogram van de drempelwaarde van 25% over al de productenziet er overal ongeveer hetzelfde uit. Dit kan men een ideale oplossing van verzamelingvan keypoints beschouwen. Veel punten hebben ongeveer dezelfde euclidische afstand,wat betekent dat ze gemiddeld gezien evenveel van elkaar zullen verschillen. Dit vormteen goede verzameling van keypoints die nu gebruikt kunnen worden om het specifiekeproduct terug te zoeken in een opname. Hoe sterker een punt op elkaar zal lijken, hoemeer dat dit punt zich aan de linker kant van de grafiek zal bevinden. Het tweede bestepunt moet dan meer dan dubbel zover liggen zodat dit beste punt als correct op het beeldkan gezien worden.

5.2.4.1 Elimineren van dubbele keypoints binnen eenzelfde product

Elk product bevat een globaal sift-bestand waar al de keypoints van alle frames zichin bevinden. De kans is zeer groot dat er veel dubbele frames aanwezig zijn wat dus

Page 59: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

44 Verwerken van gegevens

Figuur 5.3: Aantal keypoints gevonden in een opname in functie van de drempelwaarden bij hetverwijderen van dubbele keypoints bij producten.

dubbele (of beter: hard op elkaar lijkende) keypoints zal opleveren doordat er dezelfdepunten of regio’s gevonden worden op een ander beeld die eigenlijk volledig op elkaarlijken. Dit kunnen stukken beeld zijn die verschoven, vergroot of verkleind, gekanteld zijnof een onderdeel van een groter beeld zijn. Daarbij kan het ook zijn dat de persoon diehet product geregistreerd heeft meerdere keren of langer naar een bepaalde plaats op hetproduct gekeken heeft. Dit zijn plaatsen die belangrijker zouden kunnen zijn of regio’sdie tekst zouden kunnen bevatten. Bij het elimineren van deze gelijkaardige punten zalhet viseren van een bepaald punt op de verpakking geen invloed mogen hebben.

Figuur 5.3 toont het totaal aantal keypoints van producten die gevonden werden bijde specifieke opname. Het is zeer duidelijk dat de meeste punten, en de gemiddeldeeen drempelwaarde van 30% als ideaal hebben. Boven en onder de 30% zullen minderovereenkomsten gevonden worden doordat bij een kleinere drempelwaarde gelijkaardigeregio’s binnen eenzelfde product elkaar zullen uitsluiten. Bij een hogere drempelwaardeworden er zoveel keypoints verwijderd dat er weinig zijn om nog veel overeenkomsten tekunnen vinden.

Het algoritme wordt uitgevoerd door de functie makeUniqueWithinProductGlobalFile().Het zal voor elk keypoint de som van de absoluute waarde van de verschillen van elke di-mensie van de descriptor van een keypoint die in het globale bestand staat, vergelijkenmet al de andere descriptoren van de keypoints van het product in het globale bestand.Bij het zoeken van overeenkomsten zal later gebruik gemaakt worden van de euclidischeafstand en de kortste en de tweede kortste afstand bij houden zoals werd uitgelegd insectie 3.3.2 en in pseudocode in figuur 5.6. Indien men deze dubbele punten niet zouverwijderen, zal de verhouding van de kortste en de tweede kortste afstand één naderen.Dit betekent dat het geen goede match is, en daarom zou het punt genegeerd kunnenworden doordat er twee punten op het beeld gelijkaardig zijn. Maar eigenlijk zou het

Page 60: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

5.2 Bewerken van gegevens 45

Product #Keypoints 30% drempelwaarde % verwijderdBio Gazon 5776 1131 80.42Gazon Plus 4795 1330 72.26Eukanuba Small 7939 2586 67.43Eukanuba Medium 7056 1951 72.35Eukanuba Large 6403 1994 68.86Science plan Beef 2958 493 83.33Science plan Chicken 4994 1009 79.80Science plan Light 5672 1091 80.77Lijmvallen 3554 664 81.32Lokaas 4654 1107 76.21Muizendoosjes 4564 884 80.63

Tabel 5.1: Aantal keypoints voor en na het verwijderen met de 30% drempelwaarde bij eenzelfdeproduct.

twee keer hetzelfde punt kunnen zijn en zou het dan wel een goede overeenkomst kunnenzijn. Bij het verwijderen van een dubbele keypoint, zal de ene keypoint het gemiddeldeworden van deze twee punten die op elkaar lijken, de andere zal verwijderd worden.

Tabel 5.1 toont aan hoeveel keypoints de producten initieel hebben en hoeveel keypointser over blijven nadat de dubbelen met een 30% drempelwaarde verwijderd werden. 70%tot zelfs 80% van de keypoints worden als dubbel gezien en zullen verwijderd worden. Ditlijkt misschien groot te zijn maar als men naar een product kijkt worden er 30 beeldenper seconden genomen wat ook veel beelden oplevert en dus veel beelden waar vaakhetzelfde op staat. Ook betekent dit dat het analyse proces van de opnames veel snellerzal verlopen doordat er een hele hoop minder keypoints aanwezig zijn, waardoor er veelminder berekeningen gedaan moeten worden. Gemiddeld gezien kan men zeggen dat deanalyse van een opname vier maal sneller zou verlopen.

Indien we geen dubbele keypoints zouden verwijderen, zal het heel waarschijnlijk zijndat wanneer een product geregistreerd zal worden men langer naar de belangrijke plaat-sen zou kijken. Dit omdat het opvallende zones zijn of omdat er tekst gelezen moetworden. . . Hierdoor zouden er geen belangrijke punten in een opname gevonden wordendoordat deze gevonden punten zeer dicht bij elkaar liggen. Voor het vinden van een be-paald punt is het nodig dat de euclidische waarde van de punten in een beeld van eenopname toch redelijk ver van elkaar af liggen. In figuur 5.3 kan men dit bezien als delinkerkant van de x-as van de 30%.

5.2.4.2 Elimineren van dubbele keypoints over al de producten

Wanneer producten dezelfde logo’s bevatten, of zelfs dezelfde letters kunnen er keypointsals resultaat voor beide producten gevonden worden. Deze regio’s waar een bepaaldekeypoint meer dan één product als resultaat heeft opgeleverd willen we vermijden. Het zalniet kunnen vertellen met een al te grote zekerheid dat men een bepaald product gevondenheeft, maar zal verwarring toevoegen met de vraag welk van de gevonden producten hetmogelijk zou kunnen zijn. In deze stap zullen al de keypoints over al de producten zo

Page 61: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

46 Verwerken van gegevens

uniek mogelijk gemaakt worden. Zo zal het matchen van keypoints van een opname maaréén of geen product als correct resultaat opleveren. Het zal uitzonderlijk zijn dat vooreen bepaald punt meerdere producten gevonden zullen worden.

De werking van het algoritme dat hiervoor zal zorgen, zal al de producten afgaan enzal al de keyoints die sterk op elkaar lijken in beide producten verwijderen. Dit gebeurtmet de functie makeKeysUniqueOverProducts(). Voor elk punt dat bij beide productengevonden werd als een gelijkaardig punt zal het gemiddelde genomen worden en zal dezebijgehouden worden in een apart bestandje. Wanneer er later een nieuw product zalworden toegevoegd zullen al de vorig verwijderde keypoints bij deze ook verwijderd kunnenworden, en kan men dit punt dan verwijderen. Op deze manier zal een product nooit invoordeel vallen wanneer men na het analyseren van een opname nog meer productenworden toevoegen.

Bij het zoeken naar deze gelijkaardige keypoints hebben we een bepaalde drempelwaardenodig waar men kan zeggen hoeveel verschil er tussen beide keypoints aanwezig mag zijn.Want de kans dat twee keypoints volledig op elkaar lijken bestaat zo goed als niet. Dezekans is vergelijkbaar als het zoeken van één enkele atoom in een appel of zo. Deze drem-pelwaarden staat in percenten uitgedrukt en is de som van de absoluut waarde van hetverschil tussen elke dimensie van beide keypoints. Experimenteel is het erg moeilijk tezoeken waar deze drempelwaarde het beste ligt. Voor elke testopname om geanalyseerdte worden, werden er een set van drempelwaarden uitgeprobeerd. Deze set van drem-pelwaarden worden getoond in figuur 5.4. Links zien we hoeveel seconden een productbekeken werd in functie van de drempelwaarde, rechts zien we het aantal keer een pro-duct werd bekeken in functie van deze drempelwaarde. Deze grafieken zeggen niet ergveel, daarom zal de drempelwaarde vooral visueel worden gezocht. Het resultaten filmpjezal hier een makkelijke oplossing voor zijn. We zullen hier nagaan of de producten goedgeteld zullen worden bij een bepaalde drempelwaarde. Het visueel zoeken van een gepastedrempelwaarde was ook niet zo een makkelijke oplossing. Een goede drempelwaarde zoude waarde zijn waar er zo weinig mogelijk punten door meerdere producten gevondenworden. Een andere manier waarmee we toch nog grafisch een drempelwaarde kunnenuitkiezen is met figuur 5.5. Ze toont aan hoeveel keypoints de specifieke producten overzouden hebben na het elimineren van de dubbele keypoints bij een specifieke drempel-waarde. Er dient ook op gelet te worden dat de drempelwaarde niet te hoog genomenwordt zodat er nog voldoende keypoints overblijven die het product kunnen beschrijven.De drempelwaarde voor het vinden van het meest correcte product varieerde makkelijktussen de 20% en 35% voor de verschillende opnames. Op figuur 5.5 zien we deze sterkedaling na een drempelwaarde van 25%. Hierna gebeurt een sterke stijging van het aantalkeypoints die verwijderd worden bij al de producten.

Tabel 5.2 geeft het aantal keypoints aan die nog eens zijn verwijderd nadat de dubbelekeypoints in een zelfde product verwijderd werden (sectie 5.2.4.1). Het aantal keypointsdat hier verwijderd werden zijn de punten die bepaalde (of al de) producten met elkaargemeenschappelijk hebben. Het gedeelte dat verwijderd werd ligt hier veel lager omdat hetbijvoorbeeld gaat over een logo dat op twee of meerdere verpakkingen staan. Het aantalprocent verwijderd kan ook geïnterpreteerd worden als een niet uniek stuk tegenover alde producten die geregistreerd zijn. En we willen liefst dat al de producten uniek zijnvoor zichzelf en voor al de andere producten.

Page 62: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

5.2 Bewerken van gegevens 47

(a) Hondenver blik

(b) Rattenvallen

(c) Rattenvallen 2

(d) Winkelwandel

Figuur 5.4: Links wordt het aantal seconden in functie van de drempelwaarde getoond, rechts hetaantal keer bekeken in functie van de drempelwaarde.

Page 63: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

48 Verwerken van gegevens

Figuur 5.5: Aantal keypoints in functie van de drempelwaarden bij het verwijderen van dubbelekeypoints over al de producten.

Product #Keypoints 25% drempelwaarde % verwijderdBio Gazon 1131 959 15.21Gazon Plus 1330 1132 14.89Eukanuba Small 2586 2463 4.76Eukanuba Medium 1951 1847 5.33Eukanuba Large 1994 1871 6.17Science plan Beef 493 386 21.70Science plan Chicken 1009 888 11.99Science plan Light 1091 960 12.01Lijmvallen 664 584 12.05Lokaas 1107 981 11.38Muizendoosjes 884 761 13.91

Tabel 5.2: Aantal keypoints voor en na het verwijderen met de 25% drempelwaarde over al deproducten.

Page 64: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

5.3 Genereren van resultaten 49

De functie makeKeysUniqueOverProducts() zal steeds automatisch worden uitgevoerdvoor dat een opname geanalyseerd wordt. En dit zal enkel gebeuren wanneer er nieuweproducten werden toegevoegd nadat deze functie werd opgeroepen. Wanneer er verschil-lende opnamen tegelijkertijd worden geanalyseerd zal de functie makeKeysUniqueOverProducts()meermaals worden opgeroepen in de verschillende threads. Daarom zal er gebruik gemaaktworden van een lockfile die er voor zal zorgen dat maar één thread, namelijk de eerste,de procedure zal doen voor het uniek maken over al de producten. Wanneer deze klaaris, zullen de andere threads de procedure skippen omdat het overbodig zal zijn deze nogeens uit te voeren, en zal verder gegaan worden met het analyseren van de opname zelf.

5.3 Genereren van resultaten

Wanneer er producten en opnames voor analyses worden toegevoegd kunnen deze nugebruikt worden om resultaten te produceren. Deze resultaten kunnen in drie vormentevoorschijn komen en zullen besproken worden in sectie 5.3.3. De drie soorten resultaat-types zijn:

• Een comma seperated value bestand

• Een Word Cloud

• Een resultaten filmpje

Met behulp van de functie mkResultFromOpname() kunnen we deze resultaten laten gene-reren. Aan de functie kan er meegeven worden welke vormen van resultaten we willen vooreen bepaalde opname. Indien men niet al de producten wil gebruiken die aanwezig zijnkunnen deze ook gespecificeerd worden, het zal de analysetijd ook korter maken. Maarvoor dat we deze resultaten kunnen genereren, moeten we de opname analyseren. Ditgebeurt met de functie analizeRecording() en zullen we bespreken in sectie 5.3.2.

5.3.1 Vinden van overeenkomsten

Om vergelijkingen te kunnen vinden tussen twee beelden moeten we de gevonden keypointsvan beide beelden met elkaar vergelijken. Dit matching systeem werd uitgelegd in sectie3.3.2. Elk product bevat een grote verzameling van keypoints die het product zo volledigmogelijk zullen beschrijven. Een opname wordt frame per frame onderzocht, en per framezijn er een hele hoop minder keypoints aanwezig dan het aantal dat er bij een productaanwezig zijn.

Elk keypoint dat in een frame van een opname aanwezig is zal met behulp van de eu-clidische afstand berekend worden met elke keypoint van een product. Voor elk productzal zo de korste en tweede kortste waarde voor het keypoint bijgehouden worden. Alsde verhouding van deze kortste afstand en de tweede kortste afstand kleiner is dan eenbepaalde waarde betekent dit dat we een goed punt gevonden hebben. Hoe kleiner datde waarde is hoe verder de keypoints van elkaar verwijderd zullen zijn, dus hoe beter de

Page 65: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

50 Verwerken van gegevens

1 voor elk frame in opname2 voor elk fkeypoint in frame3 voor elk product in producten4 voor elk pkeypoint in product5 EUCLIDISCHE AFSTAND (fkeypoint , pkeypoint)6 -> kortste , tweede kortste7 end8 als verhouding kortste en tweede kortste < CONSTANTE9 onthoud punt

10 end11 end12 end

Figuur 5.6: Vinden van producten in een opname.

oplossing. Deze procedure wordt in pseudocode als verduidelijking getoond in figuur 5.6.Op deze manier wordt elk keypoint van een frame in een opname berekend met al dekeypoints van al de producten die men wil terugvinden in de opname.

5.3.2 Analyseren van opnames

Het analyseren van een opname betekent dat er hier producten gezocht zullen worden.Maar voor we dit doen, gaan we eerst zien of er nog nieuwe producten werden toege-voegd. In geval van nieuwe producten zullen dubbele keypoints, die voorkomen in tweeof meerdere verschillende producten, verwijderd worden zoals we in sectie 5.2.4.2 heb-ben uitgelegd. Pas daarna zal de functie doAnalizeProject() uitgevoerd worden die deproducten effectief zal zoeken. Deze functie wordt gedetailleerd uitgelegd in sectie 5.3.2.1.

Eens we al de overeenkomsten van de producten in een opname gevonden hebben, zullenwe hierna tellen hoeveel keer en voor hoe lang het product bekeken werd. Dit zullen wedoen met behulp van de mkProductViewResult() functie, deze zal uitgelegd worden insectie 5.3.2.2.

Als resultaat zal deze functie een gelinkte lijst van resultaten in een boomstructuurteruggeven. Een voorbeeld van een schematische schets wordt weergegeven in figuur5.7. De schematische weergave begint met een pointer naar een structuur van typeMovieSimResult en verwijst naar elke frame die er van een opname is. De *next pointerin de structuur verwijst naar de volgende frame, framenr is het nummer van de frame,de pointer *productinfo en *producten van het type ArrLink bevat een lijst van al degevonden producten in de huidige frame. De structuur bevat een *next pointer die zalverwijzen naar het volgende product en de name variabele is de naam van het gevondenproduct. Bij de *producten zal de *data-pointer verwijzen naar al de gevonden keypointsdie van het type KeyMatches zijn. Bij *productinfo zal de *data-pointer verwijzen naareen *ProductViews structuur die 2 velden bevat, namelijk times waar wordt bijgehoudenhoeveel keer men het product bekeken heeft en een veld seconds dat aantoont wat detotale tijd is. De KeyMatches structuur bevat een pointer *next die verwijst naar de vol-

Page 66: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

5.3 Genereren van resultaten 51

1 MovieSimResult2 *next -> ... (* MovieSimResult)3 framenr4 *productinfo -> (* ArrLink)5 *next -> ... (* ArrLink)6 name7 *data -> (* ProductViews)8 times9 seconds

10 *producten -> (* ArrLink)11 *next -> ... (* ArrLink)12 name13 *data -> (* KeyMatches)14 *next -> ... (* KeyMatches)15 *f1 = keypoint van frame16 *f2 = keypoint van product

Figuur 5.7: Schematische boom structuur van de resultaten van doAnalizeProject.

gende gevonden keypoints, de *f1 verwijst naar de keypoint die gevonden is in de frameen *f2 verwijst naar de de overeenkomstige keypoint afkomstig van het product.

5.3.2.1 Zoeken van overeenkomsten tussen opname en producten

Nu kunnen we overgaan naar de echte analyse van de opname. Dit gebeurt met behulpvan de functie doAnalizeProject(). Eerst en vooral zullen al de nodige keypoints vanal de producten geladen worden. Ook hebben we al de keypoints nodig van al de framesvan de opname die we willen analyseren. Dus zullen we al de keypoints vanuit de sift-bestanden uitlezen en deze in een gelinkte lijst zetten. Nu we de keypoints van de opnameen al de producten hebben, kunnen we overeenkomsten beginnen zoeken.

Tijdens de verwerking zullen de keypoints één voor één worden bestudeerd voor elke frame.De nummer van de huidige frame wordt eerst onthouden voor het framenr in de structuurMovieSimResult te zetten. Indien er geen producten in een bepaalde frame wordengevonden zal er nog steeds een structuur van MovieSimResult worden toegevoegd. Enkeldan zal deze verwijzen naar de volgende structuur en zal deze het juiste framenummerhebben. Voor de rest zal deze geen enkele extra informatie bevatten. Op deze manier zaler vermeden worden dat er frames zullen worden overgeslagen bij het resultatenfilmpje(dit zal besproken worden in sectie 5.3.3.3) wanneer er geen producten worden teruggevonden.

Al de producten zullen worden afgegaan om na te gaan of er overeenkomsten zullen zijn.Dit gebeurt met behulp van de euclidische afstand zoals werd uitgelegd in sectie 3.3.2en de pseudocode in figuur 5.6. De functie getKeypointMatches() die hier gebruiktwordt om de euclidische afstand te berekenen zal terug geven hoeveel overeenkomsten ergevonden werden. Daarbij is het ook mogelijk een lijst van KeyMatches terug te geven.

Page 67: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

52 Verwerken van gegevens

Ze zijn nodig voor de *data-pointer bij de *producten-pointer dewelke getoond wordtin figuur 5.7. Ze kunnen dan gebruikt worden om deze punten te visualiseren op hetresultaten filmpje (sectie 5.3.3.3). Op figuur 5.11 zijn dit de groene en blauwe cirkeltjesop het linksonder gedeelte van het beeld.

5.3.2.2 Tellen van de producten

Nu de overeenkomsten van alle benodigde producten in een opname aanwezig zijn, kan ermet behulp van de functie mkProductViewResult() tellen hoe lang en hoeveel keer meneen bepaald product bekeken heeft. Hiervoor zal er een round robin gebruikt worden waarer voor elke frame het gevonden product wordt toegevoegd dat de meeste overeenkomstenheeft in een frame. De round robin werd gekozen omdat we een vast aantal frames willenbijhouden, de laatste frame in de rij mag dan worden overschreven door een nieuwere diewordt toegevoegd. Het kan ook zijn dat er geen product gevonden werd, in dit geval zaler een lege plaats gemaakt worden. Wanneer er meer dan twee of meer producten met eenzelfde aantal maximale overeenkomsten aanwezig zijn, zal het product worden toegevoegddat reeds het meest aantal keer in de round robin zat.

Bij elke frame zal er geteld worden hoeveel overeenkomsten er van een bepaald productaanwezig zijn. Voor dat we zeker mogen zijn dat we een product gevonden hebben moetde round robin volledig gevuld zijn. Er mag dus geen frame zijn waar geen enkel productgevonden werd! Het product dat het meest aantal keer geteld werd en als dit aantalgroter is dan de helft van de lengte van de round robin, betekent het dat we ons productgevonden hebben. In geval dat het gevonden product verschilt van het vorige gevondenproduct werd er een ander product gevonden en zullen we het aantal keer dat we ditnieuwe product gezien hebben met één verhogen. Daarbij zal steeds de tijd van een frame(33ms) worden toegevoegd aan de totaaltijd van het gevonden product.

Bij elke frame zal het huidige resultaat worden toegevoegd zoals men ziet aan de structuurMovieSimResult. Op het resultatenfilmpje kan men de huidige status zien van hoe vaakhet product op een bepaald moment bekeken wordt. Het is een manier om te controlerenof al de herkenningen en overeenkomsten goed verlopen en dat deze resultaten wel correctzijn. Wanneer de functie mkProductViewResult() klaar is met het zoeken van al deovereenkomsten zal deze een pointer teruggeven naar de laatste *productinfo die eraanwezig is. Voor de CSV en Word Cloud te genereren is dit de enige informatie die ernodig zal zijn.

5.3.3 Resultaat types

Nu we de opnames geanalyseerd hebben kunnen we de resultaten hiervan gebruiken omze onder verschillende vormen weg te schrijven. In dit onderzoek werd er gekozen voordrie soorten van resultaten, deze zullen in hun bijhorende sectie besproken worden. Dezedrie types van resultaten zijn namelijk:

• Een Comma seperated Value bestand (sectie 5.3.3.1)

• Een Word Cloud (sectie 5.3.3.2)

Page 68: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

5.3 Genereren van resultaten 53

1 Lokaas ,5 ,5.302 Muizendoosjes ,3 ,8.703 Lijmvallen ,4 ,6.37

Figuur 5.8: Inhoud van het Rattenvallen2.csv bestand.

• Een resultaten filmpje (sectie 5.3.3.3)

5.3.3.1 Comma Seperated Value (CSV)

Een CSV bestand bevat allemaal regels met steeds evenveel waarden die allemaal geschei-den zijn door komma’s. Door zijn eenvoudige vorm om data te bewaren is het mogelijkdit type van bestand te gebruiken voor allerlei toepassingen. Een van die toepassingenis bijvoorbeeld excell R©. Hiermee kan men het bestand inladen en met een paar klikjesgrafiekjes tevoorschijn brengen. De waarden die in het bestand komen zijn onverderveeldin "productnaam,aantal keer bekeken,totale kijktijd". Een voorbeeld van bij de opnameRattenvallen2 wordt weergegeven in figuur 5.8. In het bestand kan men ook duidelijkzien dat Lokaas vijf maal bekeken werd met een totale tijd van 5.30 seconden.

5.3.3.2 Word Cloud

Een word cloud is zoals de naam het zegt een wolk die bestaat uit allemaal woorden. Zekunnen in verschillende artistieke vormen voorkomen om bijvoorbeeld hun belangrijkheidaan te duiden. Er kunnen kleuren gebruikt worden, woorden in verschillende groottes,verschillende soorten lettertypes,. . .

In dit type van Word Cloud zal gebruik worden gemaakt van woorden die een bepaaldegrootte krijgen en een bepaalde grijswaarde als kleur. De grootte van de woorden wordtbepaald door

√aantalkeerbekeken ∗ totalekijktijd en hoe langer de totaal tijd is hoe

donker het woord zal zijn.

Dit kan allemaal gerealiseerd worden door de functie mkWordCloud() die enkel het laatsteresultaat gebruikt van de geanalyseerde opname. Meer hebben we hier niet nodig. Defunctie zal beginnen met het ordenen van de woorden zodat de grote woorden eerst komenen de kleinere als laatste. Deze functie zal ook rekening houden met de lengte van hetwoord en niet alleen met de grootte er van. Op deze manier zullen grotere woorden meergecentreerd staan, de kleinere woorden ertussen en verspreid over heel de oppervlaktezoals getoond in figuur 5.9.

Nu we voor elk woord een grootte hebben kan men door middel van de functie mkWordCloud()overgaan tot het tekenen van deze woorden. Er zal begonnen worden met het grootstewoord, en hiervoor zal men een afbeelding maken die een beetje groter is dan het woordzelf zodat het nog op een willekeurige plaats zou kunnen staan. Telkens men naar eenvolgende woord gaat zal er een willekeurige plaats gezocht worden waar nog niets aanwe-zig is. Het algoritme zal er voor zorgen dat er nooit woorden overlapt zullen worden. Hetkan wel zijn dat de grootte van de woorden zoveel verschil hebben dat het kleinere woord

Page 69: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

54 Verwerken van gegevens

in een opening van een andere letter kan vallen zoals bij de letter o of c. In geval er geenplaats gevonden kan worden om een nieuw woord toe te voegen, zal de afbeelding juistgenoeg vergroot worden.

Eens al de woordjes werden toegevoegd gaan we controleren of de afbeelding niet tegroot is. In geval dat dit wel zo is zal de grootte hiervan worden terug gebracht naareen maximaal gedefinieerde waarde en zal het worden weggeschreven naar het opgegevenbestandsnaam. In dit onderzoek zullen al de word clouds worden opgeslagen onder hungeanalyseerde opname naam in een map word clouds.

Een voorbeeld van een testcloud met deze methode wordt weergegeven in figuur 5.9. Hierwerd gebruik gemaakt van 800 willekeurige woordjes met willekeurige waarden voor detotale kijktijd en aantal keer bekeken.

Word Clouds die werden gegenereerd uit de geanalyseerde opnames worden weergegevenin figuur 5.10. Bij de opname van de wandel door de winkel werden al de ingetraindeproducten terug gevonden. Vanuit de afbeelding is het zeer duidelijk dat er veel gekekenwerd naar het product Science plan Beef.

5.3.3.3 Resultaten filmpje

In dit onderzoek is een resultaten filmpje een geschikte oplossing om na te gaan of debekomen resultaten correct zijn. Dit filmpje beval al de belangrijke informatie die we nodigkunnen hebben om het probleem op een visuele manier te controleren. Een voorbeeldwordt getoond in figuur 5.11.

In sectie 2.2.1 zijn we teweten gekomen dat de snelheid van het oog tot boven de 500◦/skan liggen. Dit zijn zeer grote snelheden, daarom kan men het resultatenfilmpje betervertragen zodat we al de details naar waar gekeken wordt kunnen volgen. Daarom werdhet filmpje 10 keer vertraagd om al de details te kunnen volgen en ze na te kunnen gaanop correctheid. Wanneer we al de keypoints willen controleren of ze toch ongeveer zoudenkunnen kloppen, met al de informatie die erbij getoond wordt, is het met het aantal keerdat het vertraagd wordt nog steeds moeilijk om met deze snelheid alles te kunnen blijvenvolgen.

In het resultatenfilmpje zoals getoond in figuur 5.11 ziet men links vanboven het origineleopnamebeeld, met een rood vierkant dat aantoont naar waar men kijkt (de ROI, uitgesne-den in sectie 5.2.1). Onder het beeld zal de ROI een paar keer vergroot worden en zullenal de keypoints aangeduid worden met een cirkel. Deze methode voor aanduiding wordtsteeds gebruikt bij objectherkenning wanneer men zoekt naar overeenkomstige punten.De groene cirkels zijn de keypoints die niet werden teruggevonden in de verzameling vanproducten, terwijl de blauwe cirkels een keypoint van een product voorstelt. Vanuit hetcentrum van zo’n cirkel zal dan een rode lijn getrokken worden naar het product waarvande keypoint overeenstemt.

Rechtsboven wordt de tijd en de framenummer getoond en eronder worden de productengetoond die gevonden werden met het aantal keer dat ze bekeken werden met de totaletijd. Het laatste resultaat op de laatste frame is het resultaat dat gebruikt wordt voor deWord Cloud en de CSV.

Page 70: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

5.3 Genereren van resultaten 55

Figuur 5.9: Voorbeeld van een Word Cloud van 800 willekeurige woordjes met de functiemkWordCloud.

(a) Rattenvallen (b) Rattenvallen2 (c) Winkelwandel

Figuur 5.10: Word Cloud resultaten vanuit de geanaliseerde opnamen

Page 71: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

56 Verwerken van gegevens

Figuur 5.11: Voorbeeld van het resultatenfilmpje voor Rattenvallen2.

Page 72: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

Hoofdstuk 6

Grafische User Interface (GUI)

De laatste stap die nu moet gebeuren is om het programma makkelijk bruikbaar te makenvoor de gemiddelde gebruiker. Dit gaan we doen door een GUI te ontwerpen, zo kan menmet behulp van een paar klikjes producten en opnames toevoegen, resultaten maken endeze bekijken.

De keuze werd gemaakt voor GTK, een GUI die een grote aanbod van zogenaamde widgetsheeft. Widgets zijn alle soorten objecten die men kan weergeven, zoals een drukknop,lijsten met woorden, lijnen, een scrollbalk. . . Daarnaast bied het ook een hele set vanfuncties aan die gebruikt kunnen worden onder specifieke toestanden. Er zijn bijvoorbeeldfuncties die reageren wanneer er op een knop wordt geduwd. . . Voor programma’s onderlinux is GTK één van de meest gebruikte GUI. Daarbij is het cross-platform en is hetook mogelijk om ze te gebruiken op windows R©. Het andere voordeel is dat GTK ookbeschikbaar is in een grote set van talen zoals C/C++, python, php, perl. . .

Het programma in dit onderzoek zal zo simpel mogelijk gemaakt worden zodat dezemakkelijk bruikbaar zal zijn voor de gemiddelde gebruiker. De volgende zaken moetenaanwezig zijn in de GUI:

• Een producten vak met

– lijst van producten

– knop voor nieuwe producten toe te voegen

– knop voor het verwijderen van een product

• Een opnames vak met

– lijst van opnames

– een knop voor nieuwe opnames toe te voegen

– een knop voor een opname te verwijderen

• Een proces vak waar komt welk type van resultaten we willen met een proces knop,de type van resultaten die we willen zijn uitgelegd in sectie 5.3

• Een resultaten vak met

Page 73: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

58 Grafische User Interface (GUI)

Figuur 6.1: Voorbeeld van de GUI van het programma.

– lijst van gemaakte resultaten

– Verwijderen van een resultaat

– Bekijken van de resultaten in een specifieke vorm

Een voorbeeld van de interface wordt getoont in figuur 6.1. Wanneer het programmavanuit een console wordt opgestart, zal de vooruitgang en de extra informatie in dezeconsole getoond worden.

De GUI zal enkel oppervlakkig besproken worden omdat deze enkel zorgt voor een ge-bruiksvriendelijke manier om het programma te gebruiken. Er werden geen onderdelenaan deze GUI of beter gezegd aan GTK dat niet eerder bestond toegevoegd. Daaromzal er worden besproken wat de GUI allemaal nodig heeft en wat er zal gebeuren bij eenbepaalde actie. Ook zal er bijvoorbeeld besproken worden wat het gebruik van threadsinhoudt.

Figuur 6.2 geeft een overzicht van het programma. Voor het opbouwen van een GUIgebruikt GTK+ zeer veel functies, daarom beperken we ons enkel tot de functies gtk_init()en gtk_main() in het programma overzicht. Figuur 6.3 geeft al de mogelijkheden voorde knoppen die aanwezig zijn in de GUI. Omdat de functie niet altijd in een fractie vaneen seconde kan worden uitgevoerd, zal voor de meeste gevallen deze worden uitgevoerdin een thread. De overige functies die hierbij horen worden schematisch weergegeven infiguur 6.4.

6.1 Interne werking

Om alles simpel te houden en de GUI zo onafhankelijk mogelijk te houden van al deandere functionaliteiten die in het programma geschreven werden, zal men gebruik makenvan de functie run_main_gtk(). Ze heeft dezelfde argumenten als de main functie ineen C programma omdat de functie gtk_init() deze gebruikt. De functie gtk_init()

Page 74: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

6.1 Interne werking 59

1 main()2 + run_main_gtk ()3 + gtk_init ()4 + fillProductList ()5 + fillOpnamesList ()6 + fillResultList ()7 + gtk_main ()8 fillResultList ()9 + getResults ()

10 fillOpnamesList ()11 + getOpnames ()12 fillProductList ()13 + getProducts ()

Figuur 6.2: Overzicht van de GUI.

zal er voor zorgen dat alles voor GTK+ geïnitialiseerd zal worden. Verder zullen we hetprogramma een titel geven, het sluit signaal hangen aan het sluit knopje dat vaak inhet menubalkje te vinden is rechts bovenaan en zullen we een window maken waar allesin zal komen. De window is een widget, die opgevuld zal worden met andere widgets.Standaard zijn de widgets verstopt en kan men deze niet zien, dus zullen we deze tonenmet een unhide functie en zullen we ze toevoegen aan een hogere widget. Op het einde zalde functie gtk_main() worden toegevoegd, het is een oneindige lus die het programmazal tonen zoals het wordt afgebeeld in figuur 6.1.

In de functie run_main_gtk() zal bijvoorbeeld voor de lijst van producten, opnames enresultaten aparte functies gebruikt worden om deze op te vullen en te tonen. Dit is omdatwe deze functie steeds moeten oproepen wanneer er iets verwijderd of toegevoegd wordtaan de lijst. Zo kunnen deze lijsten vernieuwd worden en de correcte informatie blijventonen. Er is ook een callback functie nodig die zal worden uitgevoerd wanneer er op eenknop wordt geduwd. In deze callback zullen de korte stukjes zoals het verwijderen vanbestanden die in uitvoer tijd niet zo lang duren meteen worden uitgevoerd. Maar als hetlanger zou duren dan een fractie van een seconde zal er een aparte functie gebruikt wordenen deze zal in een aparte thread worden uitgevoerd.

Voor het verwerken van de gegevens zal er gebruik gemaakt worden van drie basisfunctiesdie volledig werden besproken in hoofdstuk 5: addProduct() om de producten toe tevoegen, addRecording() om een opname die geanalyseerd moet worden toe te voegen enmkResultFromOpname() om resultaten te maken uit een opname. Bij deze laatste functieworden de opnames dus werkelijk geanalyseerd. De computer die gebruikt werd voor hetontwerpen van het programma is een dualcore van 2.5GHz met 8Gig ram. Hierop duurdede verwerkingstijd van de functies addProduct() en addRecording() ruwweg 10 secon-den. De functie mkResultFromOpname() heeft wat meer tijd nodig en de verwerkingstijdhangt hier vooral af van het aantal producten die gebruikt zullen worden. In sectie 5.2.4.2gingen we ook al de dubbele keypoints verwijderen. Indien dit ook moet gebeuren kandit makkelijk een tiental seconden tot een paar minuten langer duren. Ruwweg duurdeeen filmpje van één minuut lang ongeveer vijf minuutjes om deze enkel te analyseren met

Page 75: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

60 Grafische User Interface (GUI)

1 callback_frombutton ()2 + switch case(button)3 = GUI_GTK_CHECKBOX_PRODUCTS_ADD4 > (thread) form_add_movie(movietype)5 = GUI_GTK_CHECKBOX_PRODUCTS_ADD_ADD6 > (thread) proces_addingmovie ()7 = GUI_GTK_CHECKBOX_PRODUCTS_DEL8 > gtk_question_remove_files(get_products_selection ()

)9 + fillProductList ()

10 = GUI_GTK_CHECKBOX_OPNAMES_ADD11 > (thread) form_add_movie(movietype)12 = GUI_GTK_CHECKBOX_OPNAMES_ADD_ADD13 > (thread) proces_addingmovie ()14 = GUI_GTK_CHECKBOX_OPNAMES_DEL15 > gtk_question_remove_files(get_opnames_selection ())16 + fillOpnamesList ()17 = GUI_GTK_CHECKBOX_PROCESSACTION18 > (thread) process_mkResultFromOpname ()19 = GUI_GTK_CHECKBOX_ADD_BROWSE_AVI20 > file_browse ()21 = GUI_GTK_CHECKBOX_ADD_BROWSE_WKS22 > file_browse ()23 = GUI_GTK_CHECKBOX_RESULTS_MOVIE24 > (thread) process_run_movie ()25 = GUI_GTK_CHECKBOX_RESULTS_CSV26 > (thread) process_open_textfile ()27 = GUI_GTK_CHECKBOX_RESULTS_CSV28 > (thread) process_open_image ()29 = GUI_GTK_CHECKBOX_RESULTS_REMOVE30 > gtk_question_remove_files(get_results_selection (),

COMPOSED_MOVIE)31 + fillResultList ()32 > gtk_question_remove_files(get_results_selection (),

CSV_RESULT)33 + fillResultList ()34 > gtk_question_remove_files(get_results_selection (),

WORD_CLOUD)35 + fillResultList ()

Figuur 6.3: Callback functie van de knoppen in de GUI.

Page 76: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

6.1 Interne werking 61

1 form_add_movie ()2 + switch case(movietype)3 = callback_frombutton(MOVIE_PRODUCT)4 > GUI_GTK_CHECKBOX_PRODUCTS_ADD_ADD5 = callback_frombutton(MOVIE_OPNAME)6 > GUI_GTK_CHECKBOX_OPNAMES_ADD_ADD7 proces_addingmovie ()8 + switch case(movietype)9 = MOVIE_PRODUCT

10 > addProduct ()11 > fillProductList ()12 = MOVIE_OPNAME13 > addRecording ()14 > fillOpnamesList ()15 process_mkResultFromOpname ()16 + mkResultFromOpname(get_opnames_selection (),

get_products_selection ())17 + fillResultList ()18 process_run_movie ()19 + system(gnome -mplayer "%s")20 process_open_textfile ()21 + system(gedit "%s")22 process_open_image ()23 + system(eog "%s")

Figuur 6.4: Overzicht van bijhorende functies voor callbacks.

Page 77: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

62 Grafische User Interface (GUI)

acht producten zonder het elimineren van de dubbele keypoints en zonder de resultatenonder een bepaalde vorm weg te schrijven. De CSV en de word cloud neemt een fractievan een seconde in beslag om op te maken, terwijl het resultaten filmpje een minuut oftwee.

Er zijn drie soorten van resultaten die men kan laten opmaken. Het type van resultaat datmen wenst kan men met behulp van een selectie vak kiezen. Wanneer men de resultatenwenst te verwijderen is het mogelijk om per resultaat het type te kiezen dat men wenstverwijderen of niet.

6.1.1 Threads

Threads maken een programma vaak gebruiksvriendelijker. Hierdoor wordt het mogelijkom verschillende acties tegelijkertijd te doen zonder dat men hoeft te wachten. Op com-puters met verschillende processors kan er dan ook volledig gebruik gemaakt worden vanal de kracht die een computer ter beschikking heeft. Dit versnelt het proces ook en erkunnen sneller resultaten worden gegenereerd.

Om deze threads te kunnen gebruiken moet dit eerst geïnitialiseerd worden. De achter-liggende programmatie van GTK heeft hierbij ook extraatjes nodig zoals dat er in hethoofdprogramma en al de threads waar er iets van GTK aangeroepen wordt een enter eneen leave gebruiken. Dit moet steeds gebeuren wanneer we via de threads iets in de GUIwillen aanspreken zoals wanneer we bijvoorbeeld een lijst willen vernieuwen. Indien wedit niet doen zal de GUI vast lopen en zelfs crashen, het zou de mist in lopen en out ofsync geraken.

Om het programma niet te laten crashen zal er gdk_threads_init() voor en g_thread_init(NULL)na de functie gtk_init() worden toegevoegd. Vanaf nu kunnen we threads aanmakenzonder dat het programma zal crashen of vast lopen en is het mogelijk om meerdereprocessen tegelijkertijd te laten lopen. Zo kan men bijvoorbeeld verschillende produc-ten of opnames toevoegen zonder dat men hoeft te wachten tot het vorige klaar is.Rond de gtk_main() zal er zoals elke keer we in een thread iets van de GUI aanroepeneen gdk_threads_enter() en gdk_threads_leave() gezet worden zoals bij de functiegtk_init(). Tussen deze twee oproepen moet er zo weinig mogelijk tijd zitten. Dit komtomdat wanneer we in een thread de enter aanroepen andere stukken niet hernieuwd wor-den tot we de leave zullen aanroepen. In andere woorden zal het dan zo lijken dat hetprogramma voor eventjes is vast gelopen.

Nu is het mogelijk om bijvoorbeeld twee of meer verschillende opnames te analyseren, ofkan men meerderen producten of opnames achtereenvolgens toevoegen zonder dat menhoeft te wachten dat het klaar is. Wel moet men erop letten dat men geen opnamesanalyseert wanneer men een product heeft toegevoegd, en wanneer deze nog steeds aanhet verwerken zou zijn. Indien men al de producten geselecteerd heeft, die nodig zoudenzijn voor een opname te analyseren, zal men niet moeten wachten. Vermoedelijk zal hettoevoegen van de opname of product ook klaar zijn alvorens men klaar is met de selectievan de producten.

Page 78: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

6.2 Handleiding 63

6.1.2 Resultaten

Voor elk type resultaat kan men deze nu bekijken met één enkel klikje. Op de achter-grond zal er een extern programma gestart worden dat het bestand zal openen. Voor deeenvoudigheid zal er dan gebruik gemaakt worden van een extern programma. Standaardzijn de volgende programma’s gebruikt die de resultaat types zullen openen:

• Voor de word cloud wordt er eog gebruikt, dit programma kan afbeeldingen tonen.

• Voor de CSV wordt er gedit gebruikt, dit is een simpele tekstverwerker.

• Voor resultaten filmpje wordt er gnome-mplayer gebruikt, een programma om film-pjes af te spelen.

De twee eerste programma’s zijn een onderdeel van gnome, een bekende desktop environ-ment gebruikt voor een linux distributie als ubuntu. Voor de gnome-mplayer zou het weleens mogelijk kunnen zijn dat dit geïnstalleerd moet worden. Als men bijvoorbeeld vlcof eender welk ander programma wenst te gebruiken om het resultaten filmpje weer tegeven, kan men dit aanpassen in het bestand main.h.

6.2 Handleiding

De GUI, zoals men kan zien op de afbeelding 6.1, maakt het nu uitzonderlijk makkelijk omvan twee bestandjes die het programma voor de eye-tracker aangeeft, om te zetten naarinformatie dat men op verschillende manieren kan gebruiken. Dit kan met behulp van eenpaar klikjes. Het is daarbij ook zeer makkelijk om enkel een onderdeel van de toegevoegdeproducten voor een specifieke opname te gebruiken. Wanneer men producten, opnamesof resultaten wenst te verwijderen is dit ook zeer makkelijk in gebruik.

In sectie 6.2.1 zal er eerst uitgelegd worden hoe men producten kan toevoegen. Ookzal hier uitgelegd worden hoe men deze kan verwijderen. De volgende sectie (6.2.2) zalgaan over de opnames, dit volgt hetzelfde principe als deze voor de producten. Daarnazullen we in sectie 6.2.3 bespreken hoe makkelijk het is om de producten en de opnameste gebruiken om een opname te kunnen analyseren en zo resultaten te genereren. In delaatste sectie (6.2.4) zal er besproken worden hoe deze resultaten bekeken kunnen wordenen hoe makkelijk het dan zal zijn om ze te verwijderen.

6.2.1 Producten toevoegen/verwijderen

Wanneer er een product wordt toegevoegd, moet er op de knop Add worden gedrukt. Ditzal een nieuw kader geven zoals getoond in figuur 6.5. Hier geeft men de naam van hetproduct mee en het padnaam van het avi-bestand en wks-bestand. Meestal zijn deze tweehetzelfde op de extensie na. Als er daarna op de knop Add gedrukt wordt zal het productworden toegevoegd. Deze actie kan een 10-tal seconden duren naargelang de grootte vanhet filmpje en de snelheid van de computer.

Page 79: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

64 Grafische User Interface (GUI)

Figuur 6.5: Toevoegen van een opname/product.

Voor het verwijderen van een product moet men een product selecteren en drukt men opde knop Del. Dit zal al de informatie van het product verwijderen en duurt maar eenfractie van een seconde.

6.2.2 Opname toevoegen/verwijderen

Voor het toevoegen van een opname zodat deze later geanalyseerd kunnen worden, geldthetzelfde principe als voor een product. Dit werd besproken in vorige sectie (6.2.1). Houer wel rekening mee dat de naam van de opname gebruikt zal worden als dezelfde naamvoor het resultaat van de geanalyseerde opname. Het verschil zit er in dat men nu eenopname zal toevoegen en intern zal dit worden opgeslagen in een andere map dan deproducten. Ook zal er geen globaal bestand worden gemaakt met al de keypoints diewel nodig was voor een product. Het verwijderen van deze opname gebeurt op dezelfdemanier als bij een product.

6.2.3 Opname analyseren

Wanneer al de producten aanwezig zijn die men voor een analyse wenst te gebruiken enwanneer we de opname in de lijst hebben staan, kan men nu deze opname selecteren.Indien men niet al de producten wil analyseren kunnen diegene die men wil zoeken se-lecteren. Dit gebeurt door het eerste product te selecteren en al de overige te selecterenmet behulp van de ctrl-toets op het toetsenbord in te houden. Op deze manier kan menmeerdere producten selecteren.

Eens we de opname (en indien nodig de producten) geselecteerd heeft moet men in dederde kolom van het programma selecteren welk type output men wilt. Nu is het danmogelijk om deze resultaten te genereren door op de knop Process te drukken. Dit kannu enkele minuten duren naar gelang hoeveel producten geselecteerd werden en de lengtevan de opname.

Page 80: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

6.2 Handleiding 65

6.2.4 Resultaten bekijken/verwijderen

In de lijst van resultaten kan men een resultaat selecteren, en met behulp van de drieeerste knoppen die onder de lijst van resultaten te vinden zijn kan er voor een specifiektype van resultaat gekozen worden om deze dan te bekijken.

Om een resultaat te verwijderen selecteert men een bepaald type van resultaat en druktmen op de Remove-knop. Voor elk type van resultaat zal er nu gevraagd worden of dezeverwijderd mag worden. Enkel en alleen als alle typen van resultaten verwijderd zijn, zaldit resultaat uit de lijst verwijderd worden.

Page 81: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

66 Grafische User Interface (GUI)

Page 82: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

Hoofdstuk 7

Besluit

Dit onderzoek toont aan dat objectherkenning van een beeldopname, meer bepaald hetzoeken van objecten (producten) in een opname met behulp van een eye-tracker mogelijkis. Wel is dit nog niet zo optimaal omdat er soms verkeerde producten gevonden worden.Tabel 7.1 toont aan hoe goed deze resultaten zijn bij elke opname die gebruikt werdenom deze masterproef voort te kunnen zetten. Hierbij werd een korte beschrijving gegevenvan wat deze opnames inhouden.

Doordat de producten van op een verre afstand minder goed herkend worden zou er eenwebcam op de eye-tracker gebruikt kunnen worden met een grotere resolutie. Dit zou derekentijd aan de ene kant serieus opdrijven maar het grote voordeel is dat er veel meerpunten gevonden worden die gebruikt kunnen worden om overeenkomsten te vinden. Ditzou er voor zorgen dat er veel meer correcte overeenkomsten gevonden zullen worden.

Als er een product vanuit de verte bekeken wordt, zoals naar een product op een plankvan een winkelrek, worden er redelijk weinig overeenkomsten gevonden. Als het productdan in de handen genomen wordt zodat deze van dichtbij bekeken wordt, worden er mak-kelijk tussen de 5 en de 10 overeenkomsten voor een bepaald product vaak teruggevonden.Terwijl er dan vaak geen en soms maar enkele punten worden gevonden worden die ver-keerd zijn. Dit is ideaal, want een paar punten zullen altijd wel gevonden worden die nietvan het huidige product zijn. Daarom zijn de overeenkomsten om uiteindelijk het juisteproduct te vinden wanneer we het product van dichtbij bekijken wel zeer goed. Dit komtomdat er veel meer juiste punten gevonden worden.

Omdat er producten zijn die soms een zelfde logo, een zelfde persoon of andere gelijk-aardige regio’s op een verpakking hebben, werden deze regio’s ook verwijderd zoals werduitgelegd in sectie 5.2.4.2. Hiervan zijn er nog maar een paar punten die af en toe alsverkeerd door komen. De drempel mocht hiervoor ook niet te hoog gelegd worden anderszouden er te veel keypoints verwijderd worden waardoor er nog maar weinig resultaten tezien zou zijn. Als een product van ver bekeken wordt zijn er maar weinig overeenkomstendie gevonden worden en heeft het verwijderen van deze dubbele keypoints maar weinigeffect. Want als er in verschillende frames één zelfde punt van een product gevondenwordt, zal dat product een resultaat zijn. Als het product van dichtbij bekeken wordtzal de kans al veel kleiner zijn dat dit verkeerd is omdat er veel meer overeenkomstengevonden worden voor het specifieke product.

Page 83: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

68 Besluit

Opname omschrijving score commentaarWinkelwandel Opname waarbij door de

winkel wordt gegaan. Erwordt naar geregistreerdeproducten op afstand geke-ken die op een plank van eenwinkelrek staan.

6/10 Veel producten worden gevondenals de kijkhoek niet te groot is.Producten die niet geregistreerdwerden, durven als een geregi-streerd product gevonden te wor-den die klaarblijkelijk dezelfdeovereenkomsten hebben.

Rattenvallen Er wordt naar een winkel-rek gekeken naar de drieverschillende verpakkingenvoor muizen te vangen.

5/10 Producten die van een afstandbekeken worden vinden een paarovereenkomsten, maar het zijn erte weinig om altijd de juiste pro-ducten te vinden. Dit kan verwar-ring zorgen bij het algoritme.

Rattenvallen2 Producten worden van opkorte afstand bekeken doorze uit het rek te halen envast te nemen in een hand.

9/10 Buiten enkele uitzonderingenworden de producten van dichtbijzeer goed herkend. Dit omdater veel meer correcte keypointsgevonden worden. Het logo vindtsoms het verkeerde product,maar dit komt er niet zo sterkdoor omdat het maar enkeleovergebleven keypoints zijn.

Tabel 7.1: Omschrijving en kort besluit bij analyse van opnames.

Page 84: Automatische analyse van eye-tracking shopping-experimenten · De eye-tracker die gebruikt zal worden in dit onderzoek is een draagbaar toestel dat veelop eengewonebril lijkt. Hetkleine

Bibliografie

Duchowski, A. (2007), Eye Tracking Methodology, Springer.

Goedeme, T. and Brone, G. (2011), Insight out tools voor het meten van real-life userexperience met mobiele eye-tracking technologie.

Johannes Bauer, N. S. and Protzel, P. (2007), ‘Comparing several implementations of tworecentely published feature detectors’, p. 6.

Juan, L. (2009), ‘A comparison of sift, pca-sift and surf’, pp. 143 – 152.URL: http://www.cscjournals.org/csc/manuscriptinfo.php?ManuscriptCode=72.73.72.79.44.52.48.99

Lei, R. (2002), ‘Distinctive image features from scale-invariant keypoints’.URL: http://ryanlei.wordpress.com/

Lowe, D. G. (2004), ‘Distinctive image features from scale-invariant keypoints’, p. 20.URL: http://www.springerlink.com/content/h4l02691327px768/

Morel, J. and Yu., G. (2009), ‘Asift: A new framework for fully affine invariant imagecomparison’, p. 31.

N., P. and II, F. (2007), Forensics image background matching using scale invariant fea-ture transform (sift) and speeded up robust features (surf), Master’s thesis, Air ForceInstitute of Technology Graduate School of Engineering and Management.

Richardson, D. C. and Spivey, M. J. (2004), ‘Eye tracking: Characteristics and methods’,p. 32.

Tuytelaars, T. and Mikolajczyk, K. (2008), ‘Local invariant feature detectors: a survey’,Found. Trends. Comput. Graph. Vis. 3, 177–280.URL: http://dl.acm.org/citation.cfm?id=1391081.1391082