• No results found

Counting Darts The Smart Way

N/A
N/A
Protected

Academic year: 2021

Share "Counting Darts The Smart Way"

Copied!
31
0
0

Bezig met laden.... (Bekijk nu de volledige tekst)

Hele tekst

(1)

Bachelor Informatica

Counting Darts The Smart Way

Joris Shuko Janssen

21 juni 2019

Supervisor(s): Rowan de Graaf, dr. R.G. Belleman

Inf

orma

tica

Universiteit

v

an

Ams

terd

am

(2)
(3)

Samenvatting

Bij darten wordt er nu gebruik gemaakt van mensen die de score bijhouden. In deze thesis wordt een werkwijze gezocht die gebruikt kan worden in kroegen zodat mensen dit niet zelf hoeven te doen. Er wordt gekeken naar verschillende manieren om te bepalen waar de verschillende parten zich bevinden op het dartbord en hoe de pijl in het dartbord gevonden kan worden. Origineel is de werkwijze bedoeld voor de Raspberry Pi, maar alle experimenten zijn gedaan met een laptop door problemen met de Raspberry Pi.

(4)
(5)

Inhoudsopgave

1 Introductie 7

1.1 Darten . . . 7

1.2 Huidige gebruikte technieken . . . 7

1.3 Automatisch dartbord . . . 8

1.4 Einddoel . . . 8

2 Achtergrond 9 2.1 Scale-Infariant Feature Transform . . . 9

2.2 Homography . . . 10

2.3 Fast Library for Approximate Nearest Neighbors (FLANN) . . . 10

2.4 Contour bepaling . . . 11 2.5 Template Matching . . . 11 2.6 Kleurbepaling . . . 12 2.7 Canny . . . 13 3 Methode 15 3.1 Hardware beschrijving . . . 15 3.1.1 Secundaire hardware . . . 16 3.2 Software . . . 16 3.3 Opstelling . . . 16 3.4 Alternatieve opstelling . . . 16 4 Implementatie 17 4.1 Detectie stappen . . . 17 4.2 Dartbord-detectie . . . 18 4.2.1 Homography berekenen . . . 18 4.3 Worp-detectie . . . 19 4.3.1 Aparte Worpen . . . 20 4.3.2 Problemen . . . 21 4.4 Positie detectie . . . 22 4.5 Scorebepaling . . . 23 4.6 Alternatieve detectiemethoden . . . 24 5 Experimenten 27 5.1 Accuraatheid . . . 27 5.2 Inaccuraatheden . . . 27 6 Discussie 29 6.1 Conclusie . . . 29 6.2 Problemen . . . 29 6.3 Mogelijke verbeteringen . . . 29 6.4 Toekomstig werk . . . 29 7 Bronnen 31

(6)
(7)

HOOFDSTUK 1

Introductie

Darten is een sport die vooral in Nederland en het Verenigd Koninkrijk populair is, waar het gespeeld wordt door professionele darters zoals Michael van Gerwen12. Het is een eeuwenoude

sport waarvan de oorsprong onbekend is. Wel is bekend dat Hendrik VIII in 1530 een dartset cadeau heeft gekregen 3. Sinds 1978 wordt jaarlijks het World Professional Championship

ge-houden. Ook in cafes is darten zeer populair, daardoor is het heel toegankelijk voor mensen. In dit hoofdstuk wordt uitgelegd wat de regels van darten zijn en hoe de huidige situatie is voor het bijhouden van een wedstrijd darten. Hierna wordt het einddoel bepaald.

1.1

Darten

Darten is een spel waarbij twee spelers om beurten 3 pijlen op het dartbord[Figuur 1.1] werpen. Het doel is om van 501 naar nul te komen. De spelers moeten eindigen met een worp in de dubbel-ring. Het dartbord bestaat uit twintig parten die ieder een puntenwaarde hebben. De dunne buitenste ring geeft dubbele punten en de dunne midden ring geeft driedubbele punten. De bull’s eye geeft 50 punten en de ring eromheen 25. Het dartbord heeft een diameter van 451 mm, hangt op 172 cm hoogte en op een afstand van 235 cm.[3]

Figuur 1.1: Layout van een dartbord.

1.2

Huidige gebruikte technieken

Bij offici¨ele dart partijen wordt gebruik gemaakt van een menselijke observeerder om het pun-tenaantal bij te houden. Er staan camera’s op het dartbord gericht maar deze zijn alleen voor close-ups voor op TV.

1http://www.dartsdatabase.co.uk/PlayerStats.aspx 2https://www.michaelvangerwen.com/

(8)

1.3

Automatisch dartbord

Het is duur om bij ieder dartbord een observant te hebben. Een oplossing voor dit probleem zou een elektronisch dartbord kunnen zijn. Een elektronisch dartbord bestaat uit veel gaatjes waarin een pijltje met een plastic punt gegooid moet worden. Als een pijl niet precies in het gaatje beland kaatst de pijl af. Deze borden zijn voornamelijk bedoeld voor kinderen om het spel te leren. Om hier een betere oplossing voor te vinden wordt in deze thesis een methode beschreven om met camera’s een wedstrijd darten bij te houden. Hierbij wordt gebruikt gemaakt van beeldbewerkingstechnieken die in de afgelopen twintig jaar steeds vaker worden gebruikt in sporten om de scheidsrechter te ondersteunen [5] of om 3D reconstructies te maken voor op tv [10].

1.4

Einddoel

Het doel van deze thesis is om een werkwijze te ontwerpen die gebruikt kan worden om een wedstrijd darten volledig bij te houden. Deze werkwijze moet in real-time de gegooide score aan de speler kunnen weergeven. Het moet zo min mogelijk verandering vragen ten opzichte van een normale wedstrijd darten. Er zou bijvoorbeeld geen nieuw dartbord gekocht hoeven worden, en spelers moeten hun eigen pijlen kunnen blijven gebruiken. Verder is het belangrijk dat de methode ook in combinatie met bestaande systemen gebruikt moet kunnen worden. Ook moet het geen duur systeem zijn; er wordt slechts `e`en wedstrijd controleur vervangen tijdens wedstrijden. Door gebruik te maken van camera’s die op meerdere posities kunnen hangen is het mogelijk deze werkwijze gemakkelijk bij bestaande dartborden te gebruiken.

(9)

HOOFDSTUK 2

Achtergrond

In dit hoofdstuk worden de gebruikte beeldbewerkingalgoritmen beschreven.

2.1

Scale-Infariant Feature Transform

Scale-Infariant Feature Transform(SIFT )[9] is een techniek om features in een foto te vinden. Een feature is een specifiek kenmerk van een foto. Bij SIFT bestaan deze features uit histograms of oriented gradients[Figuur 2.1]. Als er features worden gezocht in twee foto’s waar hetzelfde object zich in bevindt, zou dit object dezelfde features moeten hebben in beide foto’s. De grootte en ori¨entatie van het object ten opzichte van de fotograaf maken hiervoor niet uit. Er zijn alternatieven op SIFT zoals Speeded Up Robust Features (SURF)[1] en Oriented FAST and Rotated BRIEF (ORB) [11], die hetzelfde soort resultaat geven en sneller zijn. Als blijkt dat SIFT vaak uitgevoerd zal moeten worden, is een verbeterpunt om ORB of SURF te gebruiken.

Figuur 2.1: Features in een image. Iedere cirkel is een feature.1

(10)

2.2

Homography

De homography tussen twee vlakken bepaalt de transformatie tussen deze vlakken. Deze trans-formatie heeft een matrix die een homography matrix H heet, hiermee kunnen onder andere co¨ordinaten van een vlak omgezet worden naar een ander vlak. In het geval van figuur 2.4, wordt deze gebruikt op de volgende manier:

x0= H · x   x0 y0 1  =   h11 h12 h13 h21 h22 h23 h31 h32 h33  ·   x y 1  

Figuur 2.2: Een punt op een 2D vlak geprojecteerd op een ander 2D vlak met andere ori¨entatie.2

De homography matrix is een 3x3 matrix: Om de matrix te berekenen voor twee vlakken zijn de co¨ordinaten van meerdere overeenkomende punten op beide vlakken nodig. Er zijn hiervoor minimaal vier overeenkomende punten nodig, maar meer punten geeft een betere precisie. De matrix H kan berekend worden op de manier beschreven in chapter 2.1 van [4]. Deze matrix kan hierna gebruikt worden om een volledige foto te transformeren om bijvoorbeeld het perspectief te verwijderen[Figuur 2.3].

Figuur 2.3: Door middel van H het perspectief verwijderen, hierbij zijn de zwarte blokjes de punten gebruikt voor berekening van matrix.3

2.3

Fast Library for Approximate Nearest Neighbors (FLANN)

Om overeenkomende punten te vinden tussen het twee foto’s, kunnen features gebruikt worden. Om de overeenkomende features te scheiden van de rest kan FLANN gebruikt worden. FLANN is een library die bestaat uit meerdere Nearest Neighbor algoritmen en kiest zelf welk algoritme het beste is voor iedere situatie. Na het Nearest Neightbor mathing worden de goede matches gefilterd door gebruik te maken van Lowe’s ratio test beschreven in [9]

2https://ags.cs.uni-kl.de/fileadmin/inf_ags/3dcv-ws11-12/3DCV_WS11-12_lec04.pdf 3Figuur 2.3 in [7]

(11)

Figuur 2.4: De gevonden matches getekend op de twee foto’s waarin features zijn gevonden.4

2.4

Contour bepaling

Contour bepaling[12] is een techniek die gebruikt wordt om doorlopende randen in een foto te vinden. Deze gevonden contouren kunnen hierna onder andere gebruikt worden om de opper-vlakte van een object te bepalen. Deze contouren kunnen ook gebruikt worden om mogelijke vormen te vinden.

Figuur 2.5: De image(links), de gevonden contouren(rechts). De punten zijn de extremen.5

2.5

Template Matching

Template Matching[8] is een algoritme wat gebruikt kan worden om een kleinere foto of vorm te zoeken in een grotere foto De kleinere foto wordt hierbij een template genoemd. Dit template wordt over de foto heen bewogen en op iedere pixel wordt een functie uitgevoerd. Hierbij is T de template, R het resultaat, I de foto waarin gezocht wordt:

R(x, y) = X

x0,y0

(T (x0, y0) − I(x + x0, y + y0))2

Hierna is het minimum in het resultaat het punt waar de template zich kan bevinden. Het is hierbij ook mogelijk om alle punten onder een threshold om een object te zoeken wat meerdere malen voor komt in een foto. Als figuur 2.6 als template wordt gebruikt, en er wordt gezocht in de rechterfoto in figuur 2.7. Dan is te zien dat er in de linkerfoto van figuur 2.7 een minimum is in de linker bovenhoek van het gezicht.

4https://docs.opencv.org/3.4/d5/d6f/tutorial_feature_flann_matcher.html

(12)

Figuur 2.6: De template dat gebruikt wordt..6

Figuur 2.7: Het resultaat van template matching(links) en de locatie van het gevonden tem-plate(rechts).7

2.6

Kleurbepaling

Voor beeldherkenning is het mogelijk om te zoeken in een foto naar bepaalde kleuren. RGB is minder geschikt omdat er gezocht moet worden binnen een driehoek en dit is slecht aan te geven. Een beter geschikte manier hiervoor is om de foto in HSV-format[Figuur 2.8] te hebben. Het HSV-format is een alternatieve representatie van het RGB format. Bij het HSV-format is de kleur op de rotatie-as en is het dus beter voor het onderscheiden van kleur, aangezien het mogelijk is om een kleur-waarde tussen twee rotaties te zoeken. Door de opzet van dit format is het beter geschikt om de kleuren te detecteren dan zwart-wit. Voor zwart-wit is het HSL-format geschikter, aangezien er tussen twee hoogtes gezocht kan worden.

6https://docs.opencv.org/trunk/d4/dc6/tutorial_py_template_matching.html 7

(13)

(a) HSV (b) HSL

Figuur 2.8: Kleur cilinders

2.7

Canny

Canny edge[2][6] is een algoritme om randen in een foto te vinden. Hiervoor wordt eerst ruis uit de foto gehaald door middel van een gaussian filter. De volgende stap is de afgeleiden nemen in zowel de X(Gx) als de Y(Gy) richting, hiervoor wordt een Sobel kernel gebruikt. Deze worden

gebruikt om de grootte en directe van de gradi¨ent te bepalen voor iedere pixel: Gradi¨ent(G) =qG2

x+ G2y

Angle(θ) = tan−1(Gy Gx

)

Hierna worden locale maxima verwijderd zodat er geen dikke lijnen ontstaan maar alleen dunne randen. Als laatste stap worden twee thresholds (minimum en maximum) gebruikt om de edges te bepalen. Als een pixel onder de minimum ligt is het geen rand, als het boven het maximum ligt is het wel een rand. Een pixel die zich tussen het minimum en maximum bevindt is alleen een rand als deze verbonden is met pixels die boven de maximum liggen:

Figuur 2.9: Canny edge, hierbij is B geen rand. C is verbonden met A die boven de maximum ligt waardoor C ook een rand is.8

Hierbij worden ook korte edges verwijderd, er wordt aangenomen dat edges lange doorlopende lijnen zijn. Als het canny edge algoritme wordt uitgevoerd op de bekende foto van Lenna is figuur 2.10 het resultaat.

(14)

(a) Lenna (b) Edges

(15)

HOOFDSTUK 3

Methode

In dit hoofdstuk wordt de gebruikte hardware beschreven en de gekozen opstelling. Er wordt ook gekeken naar een alternatieve opstelling en waarom deze niet is gekozen.

3.1

Hardware beschrijving

Voor de camera’s wordt gebruik gemaakt van logitech C920. Deze webcam kan met een resolutie van 1920x1080 op 30 fps filmen. Voor deze webcam is gekozen omdat hij in een hoge resolutie en framerate kan filmen en nog steeds betaalbaar is.

De camera’s zijn aangesloten op een Raspberry Pi 3B+[Figuur 3.1][Tabel 3.1] die in de buurt van het dartbord zal hangen.

SoC: Broadcom BCM2837B0 CPU: 4 ARM Cortex-A53, 1.2GHz GPU: Broadcom VideoCore IV

RAM: 1GB LPDDR2 SDRAM

Netwerk: Gigabit Ethernet

Tabel 3.1: Specs van de Rapsberry pi 3B+

Er is gekozen voor een Raspberry Pi aangezien dit een betaalbare (e40,-) computer is, die sterk genoeg is om een wedstrijd darten bij te houden. Als er een betere computer nodig blijkt te zijn is de eerste optie al direct een kleine pc van tussen dee100,- en e200,-.

(16)

3.1.1

Secundaire hardware

Als blijkt dat de Raspberry Pi 3b+ niet sterk genoeg is of dat er problemen zijn die niet in korte tijd opgelost kunnen worden, wordt gebruik gemaakt van een laptop met een i7-6700HQ quad-core. De keuze van deze laptop is gemaakt aangezien deze al in bezit was.

3.2

Software

De werkwijze is ge¨ımplementeerd in python zodat het gemakkelijk op meerdere systemen kan werken en ook werkt op op ARM gebaseerde platformen. Om niet alle beeldbewerking algoritmen te moeten implementeren wordt gebruik gemaakt van de populaire library OpenCV. Een groot voordeel van OpenCV is dat het goed geoptimaliseerd is, en beschikbaar is voor ARM.

3.3

Opstelling

Om schaduwen van pijlen te voorkomen is er een ring van witte led lichten om het dartbord heen. De camera’s hangen schuin boven het dartbord onder een hoek zodat ze zo veel mogelijk tegen de zijkant van de pijl aan kijken terwijl ze nog steeds het hele dartbord zien[Figuur 3.2]. Als de camera te dicht op het dartbord hangt, zal de camera niet goed de parten op het dartbord kunnen zien. Als de camera te ver weg staat zullen alle pijlen van achteren worden gezien en zal de punt slecht te zien zijn.

Figuur 3.2: De gekozen opstelling

3.4

Alternatieve opstelling

Een andere optie om deze opstelling te doen is om twee camera’s boven en rechts van het dartbord te monteren, hiermee kun je het x en y co¨ordinaat bepalen. De camera’s zouden een grote kijkhoek moeten hebben om het gehele dartbord te zien en dicht op het dartbord moeten staan om genoeg precisie te hebben. Een nadeel is dat deze opstelling veel kalibratie vereist om het goede x en y co¨ordinaten te verkrijgen. Voor de kalibratie moeten de randen van het dartbord bepaald worden zodat de positie van de pijl bepaald kan worden, als er markers worden geplaatst kan de kalibratie makkelijker gemaakt worden. Bij bewegingen van de camera zal de kalibratie opnieuw gedaan moeten worden. Er is gekozen om niet deze opstelling te gebruiken aangezien deze meer werk vereist van de dartbordeigenaar.

(17)

HOOFDSTUK 4

Implementatie

In dit hoofdstuk worden de technieken uit chapter 2 gebruikt om een wedstrijd darten bij te houden. Eerst wordt er een korte samenvatting gegeven van de verschillende stappen. Daarna wordt de kalibratie uitgelegd. Uiteindelijk worden de stappen uitgebreid uitgelegd.

4.1

Detectie stappen

Het detecteren en bijhouden van het wedstrijd bestaat uit drie verschillende stappen, voor het gemak is er een flowchart van deze stappen[Figuur 4.1]:

1. Detecteer of er een worp is

De eerste stap is het bepalen of er een worp bezig is en wanneer deze ge¨eindigd is. Deze stap moet op ieder frame uitgevoerd worden en zal dus het meest geoptimaliseerd moeten worden om zo min mogelijk vertraging op te leveren. De camera’s nemen op met dertig frames per seconde, als de tijd voor deze stap langer duurt dan 301ste seconde dan kunnen er frames worden gemist en ervoor zorgen dat een worp niet wordt gedetecteerd. Vooraf is bekend dat na de derde pijl er niet gezocht moet worden naar nieuwe pijlen omdat er nooit een vierde pijl gegooid zal worden[3].

2. Vind de positie van de pijl

Zodra er gedetecteerd is dat er een worp is geweest, wordt er nu bepaald waar de pijl zich bevindt op het dartbord. Hierbij wordt gezocht naar positie van de punt zodat deze omgezet kan worden naar een puntenaantal. Deze stap hoeft niet binnen 301ste seconde uitgevoerd te worden maar moet wel binnen een seconde gebeuren om zo min mogelijk vertraging van de wedstrijd op te leveren. Een probleem is dat een worp ook pijlen van een vorige worp kan bewegen.

3. Vind de score van deze positie

Als laatste stap moet de positie van de pijlpunt omgezet worden naar een score. Deze stap kan heel snel gebeuren aangezien er een mask van te voren gemaakt kan worden en hergebruikt kan worden bij iedere nieuwe pijl. Door gebruik te maken van een referentie foto hoeft dit mask maar 1 keer gemaakt te worden per nieuw dartbord.

(18)

Figuur 4.1: Een flowchart van de detectie stappen. Bij een volledige pijl wordt het volgende frame gebruikt, bij een gestippelde lijn het huidige.

Naast deze stappen is er een initi¨ele kalibratie nodig die maar een keer per dartbord uitgevoerd hoeft te worden

4.2

Dartbord-detectie

Om ervoor te zorgen dat de dartbord-detectie volledig van tevoren uitgevoerd kan worden, wordt gebruik gemaakt van een referentie foto[Figuur 4.2]. Dit is het enige dat opnieuw gedaan moet worden bij ieder nieuw dartbord. De eerste stap is het vinden van dit referentie-dartbord in het camera beeld, deze stap leidt tot een transformatiematrix die co¨ordinaten van het echte dartbord om kan zetten naar co¨ordinaten op het referentie-dartbord. Als het dartbord bewogen wordt of dat de camera zelf bewogen wordt, hoeft alleen maar deze matrix opnieuw berekend te worden.

Figuur 4.2: Referentie-foto.

(19)

camera-beeld. Hierbij wordt gebruik gemaakt van SIFT [section 2.1] Als hetzelfde dartbord zich bevindt in beide foto’s zullen ook dezelfde features zich bevinden in beide foto’s [Figuur ??]. De matches die zijn gevonden zijn niet altijd correct. FLANN [section 2.3] is een optie om de correcte matches te vinden, deze matches kunnen gebruikt worden om een homography matrix [section 2.2] te cre¨eren. Een andere optie is Brute Force, hierbij worden alle mogelijkheden geprobeerd. Brute forcing geeft altijd de beste match maar is aanzienlijk langzamer.

(a) SIFT feature matching resultaat (b) Resultaat van toepassing matrix op linker camera-beeld

Nu kan deze matrix gebruikt worden om co¨ordinaten van het camerabeeld om te zetten naar co¨ordinaten op het referentie-beeld [Figuur ??]. Deze matrix wordt berekend voor beide camera’s en apart opgeslagen.

Bij een beweging van het dartbord of de camera hoeft alleen de transformatie matrix opnieuw berekend te worden, hierdoor kan een statisch mask gebruikt worden. Dit mask wordt handmatig gemaakt, dit heeft als grootste nadeel dat voor ieder nieuw dartbord een nieuw mask gemaakt moet worden als er geen goede homography matrix gevonden kan worden. Deze techniek is wel het meest accuraat aangezien het pixel perfect gemaakt kan worden. Een probleem met een

Figuur 4.3: Mask

handmatig mask is dat het een half uur tot een uur duurt om er een te maken. Het zou effici¨enter zijn als het automatisch gebeurt.

4.3

Worp-detectie

De worp-detectie stap wordt tussen ieder frame uitgevoerd en zal dan ook het vaakst uitgevoerd worden. Om te detecteren of er een worp is, wordt gebruik gemaakt van het absolute verschil

(20)

tussen twee frames [Figuur 4.4]. De eerst stap is het verminderen van ruis door een threshold te gebruiken:

(

1

|x| ≤ δ

0

|x| > δ

Deze threshold geeft een binaire foto terug [Figuur 4.4]. Als de totale som van deze foto boven de threshold ligt betekent het dat er een beweging is. In de praktijk is de som nul of rond de miljoen. Om te voorkomen dat ruis het resultaat be¨ınvloed is de threshold op 10.000 gezet. Deze threshold is afhankelijk van de resolutie van de camera, een hogere resolutie camera betekent ook een hogere threshold. Als de threshold te laag is zullen er false-positives ontstaan. Bij een te hoge threshold zullen enkele worpen niet worden gedetecteerd.

Zodra er geen verandering meer is betekent het dat de pijl of in het bord zit of naar beneden gevallen is. In de implementatie voert de linker camera deze stap uit, het maakt niet uit welke camera deze stap uitvoert. Om ervoor te zorgen dat dit proces binnen 301ste seconde klaar is, wordt de som genomen van iedere vierde pixel in de x en y richting, ook de threshold moet gedeeld worden door zestien hiervoor.

Hoeveelheid gebruikte pixels Gemiddelde tijd voor som van pixels

100% 0.0127

25% 0.0037

11% 0.0019

6,25% 0.0012

4% 0.0009

Voor deze tabel is een video van 12 seconden gebruikt bestaande uit 371 frames. De Rasp-berry Pi is gebruikt hiervoor. Na 11% is de snelheid verbetering te weinig om uit te maken.

(a) Het absolute verschil

(0 verschil is wit gemaakt voor duidelijkheid).

(b) Threshold van het verschil. Alle video ruis is hiermee weg gehaald.

Figuur 4.4: Verschil tussen twee frames, de pijl bevindt zich rechtsonder.

4.3.1

Aparte Worpen

Een pijl kan in het dartbord komen en daarna van het dartbord vallen. In dit geval ziet de vorige stap wel dat er een worp is geweest maar is de oppervlakte dat beide camera’s zien 0, hierdoor

(21)

4.3.2

Problemen

Een groot probleem zijn dartpijlen die maar 1 frame of totaal niet te zien zijn op beide camera’s, hierdoor zullen ze niet geregistreerd worden als worp door de werkwijze. Dit probleem is op te lossen door een derde camera te gebruiken die op een grotere afstand staat of een groothoek lens heeft. Deze camera hoeft niet het bord te zien, maar alleen aan te geven dat er een pijl is gezien. Als er in de frames erna geen worp is gezien door de andere camera’s betekent het dat deze pijl mis is gegooid.

(22)

4.4

Positie detectie

Zodra een worp is gedetecteerd, wordt voor beide camera’s een foto gemaakt die het verschil is tussen de achtergrond en het huidige frame. Het enige verschil zou de nieuwe pijl moeten zijn. Door middel van contour-bepaling wordt de oppervlakte van de pijl gevonden.

(a) De foto (b) Het verschil met achtergrond

Figuur 4.5: Contour-bepaling van kunstmatige foto ’s

In [Figuur 4.5] is te zien hoe het verschil eruit ziet. Bij de tweede stap is het totale verschil te zien Van beide camerabeelden wordt de som genomen van het verschil. De camera die de meeste pixels ziet, heeft het beste zicht op de pijl en zal gebruikt worden voor het bepalen van de positie. Hierbij is het verschil getekend bovenop het normale zicht, het witte is het verschil [Figuur 4.6]. Bij deze beelden is ieder 16de pixel genomen.

(a) links(oppervlakte: 53295 pixels) (b) rechts(oppervlakte: 75225 pixels)

Figuur 4.6: Zicht van beide camera’s

Het bepalen van de positie gaat op basis van het feit dat de pijlen er maar aan een kant in kan zitten. De punt van de pijl zal voor de linkercamera helemaal links zitten, en rechts voor de rechtercamera. De contouren worden bepaald van de foto [Figuur 4.5]. Alle contouren kleiner dan een threshold zal alle ruis eruit halen aangezien deze een oppervlakte van tien pixels of minder hebben. Door van de overgebleven contouren het meest linker of rechter punt te pakken kun je de punt van de pijl vinden.

(23)

(a) Contouren en extreme bepaling, het kruisje is het meest rechter punt

(b) Gevonden punt op referentie-dartbord (rode cirkel op rand van 17 en 3).

Door gebruik te maken van de transformatiematrix die bij de eerste stap is berekend is het gemakkelijk om de co¨ordinaten om te rekenen van camerabeeld naar referentiebeeld [Figuur ??]. Het huidige beeld wordt opgeslagen zodat het bij de volgende worp gebruikt kan worden om de nieuwe pijl te vinden.

4.5

Scorebepaling

De gevonden locatie moet nu omgezet worden naar een puntenaantal, dit wordt gedaan door gebruik te maken van de mask gemaakt in sectie 4.2. De mask [Figuur 4.7] die gemaakt is voor het referentiebeeld bestaat uit de kleuren die corresponderen met een bepaalde score. Hiermee is het gemakkelijk om te bepalen wat de score van de worp is. Hierbij is f een array met de waardes van de verschillende parten in volgorde met de klok mee.

                       0 x = 148 25 x = 80 50 x = 81 2 ∗ f [x] x ≥ 0 ∧ x ≤ 19 f [x − 20] x ≥ 20 ∧ x ≤ 39 3 ∗ f [x − 40] x ≥ 40 ∧ x ≤ 59 f [x − 60] x ≥ 60 ∧ x ≤ 79 0 f = [1, 2, ...20]

Er zijn enkele witte randen in de mask, in het geval dat de pijl precies hierop valt wordt de dichtstbijzijnde niet witte pixel gebruikt als punt.

(24)

Figuur 4.7: Mask met nummer in plaats van kleuren.

Het nadeel van deze stap is dat de precisie volledig afhankelijk is van de precisie van de mask. Als deze inaccuraat is zal de score ook fout zijn.

4.6

Alternatieve detectiemethoden

Naast het maken van een handmatig mask zijn er ook nog mogelijkheden om automatisch het dartbord in de referentie-foto te detecteren. De eerste mogelijkheid is template matching.

Template matching

Door de offici¨ele verhoudingen[3] van het dartbord te gebruiken is het mogelijk om een template te maken. Hierna wordt door middel van template matching[hoofdstuk 2.5] dit template gezocht in het referentie-beeld. De minimale waarde in het resultaat bepaalt waar de grootste kans is dat de template zich bevindt. De template bestaat uit alleen maar lijnen en om te zorgen dat het referentie-beeld in hetzelfde format is, is het canny edge algoritme [section 2.7] gebruikt om de randen te vinden in het referentie-dartbord.

Bij template matching is het belangrijk dat de template zeer exact moet zijn om het dartbord correct te vinden. Een optie is om verschillende schalen van de template proberen te matchen, hiermee wordt het algoritme schaal invariant gemaakt. Hetzelfde kan gedaan worden met rotatie, aangezien het dartbord rotatie symmetrie heeft is het niet nodig om 360 verschillende hoeken te proberen.

Dit algoritme is daarentegen niet te gebruiken in de huidige situatie aangezien het dartbord niet perfect is. Enkele ringen liggen niet perfect in het midden en sommige rechte lijnen zijn krom [Figuur 4.8].

(25)

(a) Resultaat (b) Uitvergrote fout

Figuur 4.8: Template matching. De rode lijnen geven de template aan.

Kleur detectie

Een tweede optie is om de parten te detecteren op basis van kleur. Hoewel deze techniek de imperfecties van het bord negeert, ontstaan er andere artefacten. Enkele van deze artefacten zijn: zwarte vlekjes in het witte gebied en vica versa, de schaduw van de metalen rand hebben een rode schaduw, en er zit een rode vlek in een van de witte vlakken. Door deze artefacten maakt het deze techniek ook onbruikbaar[Figuur 4.9].

Figuur 4.9: De in-accuraatheid van kleur detectie

Om de zwarte en witte kleurdetectie beter te laten werken is het mogelijk om HSL-kleur waardes te gebruiken, maar dit lost niet de imperfectie op van de rood en groen.

(26)
(27)

HOOFDSTUK 5

Experimenten

5.1

Accuraatheid

Om te testen of de werkwijze geschikt is voor een normale dartwedstrijd, wordt er een dart-wedstrijd bijgehouden met de hiervoor beschreven werkwijze. Hierbij worden op offici¨ele af-stand(2.37m)[3] dartpijlen gegooid en bijgehouden wat het programma als uitkomst geeft en waar de dartpijl is geland. Aangezien het programma geen pijlen kan zien die buiten het gezichtsveld vallen worden deze niet meegerekend. Het referentiebeeld moet verkleind worden omdat anders 1GB RAM[Tabel 3.1] niet genoeg is om het SIFT algoritme uit te voeren op de Raspberry Pi. Zodra er begonnen is met testen bleek dat de Raspberry Pi om een nog onbekende reden drie seconden per frame nam. Ook na het aanpassen van OpenCV instellingen is dit niet opgelost. Om deze reden is gebruik gemaakt van de laptop aangezien deze zonder problemen 30 frames per seconde haalt.

Correcte worp

Positive Negative Total

Werkwijze uitkomst Positive 134 0 134

Negative 0 22 22

Total 134 22 156

Er zijn in totaal 156 pijlen gegooid, hiervan zijn 134 pijlen correct gevonden. Dit geeft een accuraatheid van 85%. Hierbij zijn naarmate het einde van het experiment pijlen gegooid met als doel om niet goed gevonden te worden. Tussen het werpen door werden er geen pijlen gedetecteerd die er niet zijn. Bij het ophalen van de pijlen ziet de werkwijze wel missers maar dit is simpelweg de speler die voor de camera loopt. Pijlen die dicht op elkaar zaten werden wel goed gedetecteerd, er zijn tijdens het testen viermaal pijlen dicht op elkaar gegooid en deze werden goed gevonden en geclassificeerd. Hierbij is het niet gelukt om de punten echt dicht op elkaar te krijgen waarbij ze totaal niet te zien zijn voor de camera.

5.2

Inaccuraatheden

Tijdens het testen zijn twee situaties naar boven gekomen die fout worden gevonden. De punten van de pijlen verdwijnen vaak in de achtergrond waardoor deze niet op de correcte plaats worden gevonden. Het gaat hier om een afstand van enkele pixels die meestal niet uitmaken voor het resultaat maar als de pijl heel dicht op een rand valt kan deze pixel net het verschil maken tussen correct en incorrect [Figuur 5.1].

(28)

Figuur 5.1: Ingezoomd op de punt van een pijl, de zwarte punt is waar de punt gevonden is. De echte punt zit linksboven de gevonden punt

Het tweede gevonden probleem is dat hoe kleiner de afstand is tussen en pijl en de camera, hoe groter het oppervlakte is. In de situatie waarbij een pijl dicht bij de linker camera staat zal deze een groter oppervlakte hebben terwijl de rechter camera mogelijk een beter zicht heeft. Een oplossing hiervoor is het oppervlakte vergroten of verkleinen afhankelijk van de afstand tot het midden van het camera beeld.

(29)

HOOFDSTUK 6

Discussie

6.1

Conclusie

Uit experimenten is gebleken dat de werkwijze die beschreven wordt in deze thesis met een nauwkeurigheid van 85% een wedstrijd darts kan detecteren. Deze aanpak is niet goed genoeg voor een echte dartwedtrijd en zal te vaak pijlen verkeerd herkennen. Als er een mogelijkheid is als speler om de score aan te passen zou dit tijdens een normale partij van 14 pijlen per ronde per speler en 9 rondes, 37 keer aangepast moeten worden.

6.2

Problemen

In de huidige situatie worden volledig gemiste pijlen niet gezien. Dit probleem zou mogelijk op te lossen zijn door gebruik te maken van een derde camera. Als deze camera verder van het bord af staat zal het de pijlen kunnen zien die nu gemist worden. De derde camera hoeft niet gebruikt te worden voor detectie op het bord zelf. Het volgende probleem is de Raspberry Pi niet sneller opnam dan 0.3 frames per seconde, dit kan een probleem zijn met de code waarbij een simpele instelling de oplossing kan biedt. Als dit niet het geval is zal er sterkere hardware gebruikt moeten worden.

6.3

Mogelijke verbeteringen

De meest duidelijke verbetering die er is, is het gebruik van een hogere resolutie en hogere frame-rate camera, dit kan ervoor zorgen dat de pijlen die in de lucht zijn ook goed zichtbaar zijn. Met een hogere resolutie kan de camera verder weg staan en meer pijlen zien, inclusief pijlen die in de huidige situatie niet te zien zijn. Het nadeel is dat de prijs van zulke camera’s en hardware die deze hoeveelheden data aankan, hoog is.

Een tweede verbetering is het gebruiken van pijlen die een opvallende kleur hebben, voornamelijk de punt, en hierdoor beter te zien zijn op de camera beelden, dit heeft als nadeel dat mensen niet hun eigen pijlen kunnen gebruiken.

6.4

Toekomstig werk

De werkwijze die beschreven is in deze thesis kan alleen de score weergeven van een speler en houdt niet bij wat de totale score is. Hiervoor moet een UI gemaakt worden waarin de speler kan aangeven welke regels ze volgen en wanneer ze beginnen. Deze UI moet ook de mogelijkheid geven voor de speler om eventuele fouten te verbeteren. Het lag buiten de scope van dit project om beide opstellingen te implementeren en te vergelijken. De rapsberry pi kon niet meer dan 0.3 frames per seconde opnemen. Dit problemen met de Raspberry Pi moet opgelost worden, hiervoor moet gekeken worden naar welke stap of instelling de vertraging veroorzaakt.

(30)
(31)

HOOFDSTUK 7

Bronnen

[1] Herbert Bay, Tinne Tuytelaars en Luc Van Gool. “Surf: Speeded up robust features”. In: European conference on computer vision. Springer. 2006, p. 404–417.

[2] John Canny. “A computational approach to edge detection”. In: Readings in computer vision. Elsevier, 1987, p. 184–203.

[3] “Dart regulation authority rule book”. In: (2019). url: http://www.thedra.co.uk/wp-content/uploads/2019/01/DRA2019Rules_110119-final-1.pdf.

[4] Elan Dubrofsky. “Homography estimation”. In: Diplomov´a pr´ace. Vancouver: Univerzita Britsk´e Kolumbie (2009).

[5] Harold Gonzalez. System of electronic devices that is designed to assist a football referee. US Patent App. 10/505,712. Jul 2005.

[6] Bill Green. “Canny edge detection tutorial”. In: Retrieved: March 6 (2002), p. 2005. [7] Richard Hartley en Andrew Zisserman. Multiple view geometry in computer vision.

Cam-bridge university press, 2003.

[8] John P Lewis. “Fast template matching”. In: Vision interface. Deel 95. 120123. 1995, p. 15– 19.

[9] David G Lowe. “Distinctive image features from scale-invariant keypoints”. In: Internati-onal journal of computer vision 60.2 (2004), p. 91–110.

[10] NEIL Owens, C Harris en C Stennett. “Hawk-eye tennis system”. In: 2003 International Conference on Visual Information Engineering VIE 2003. IET. 2003, p. 182–185.

[11] Ethan Rublee e.a. “ORB: An efficient alternative to SIFT or SURF.” In: ICCV. Deel 11. 1. Citeseer. 2011, p. 2.

[12] Satoshi Suzuki e.a. “Topological structural analysis of digitized binary images by border following”. In: Computer vision, graphics, and image processing 30.1 (1985), p. 32–46.

Referenties

GERELATEERDE DOCUMENTEN

- Heathfield Hall bij Birmingham Engeland,25 augustus 1819) was een Schots ingenieur en wordt beschouwd als de.. uitvinder van de

Non que pour cela j’osasse en- treprendre d’abord d’examiner toutes celles qui se pr´ esenteroient, car cela mˆ eme eˆ ut ´ et´ e contraire ` a l’ordre qu’elle prescrit :

(a) TiO2 M808 was subjected to Soxhlet extraction for various periods before the heat- ing pretreatment. Journal of Colloid and Interface Science, Vol.. [3], ~o is

A Robust Motion Artifact Detection Algorithm for Accurate Detection of Heart Rates from Photoplethysmographic Signals using Time-Frequency Spectral Features. LS- SVMlab Toolbox

Streaming media is de oplossing voor dit probleem: u kunt dan, als het resultaat video tegenvalt, de download meteen afbreken. Daarnaast ook erg praktisch voor live-uitzendingen,

Deze positieve ionen worden versneld in een elektrisch veld door een spanning van 1,28 kV.. De versnelde ionen worden uitgestoten en zorgen zo voor

Beide kranten beperkten zich tot deze twee categorieën: geen enkele keer kozen ze voor een frame uit de strategische of de human interest categorie..

De voorzitter van de Haïtiaanse bisschoppenconferentie kwam steun zoeken voor de wederop- bouw van het in januari door een aardbeving zwaar getroffen Cari- bische land..