Afstudeerproject Bachelor Informatica Camera Egomotion ... › thesis › centraal › files ›...

28
Afstudeerproject Bachelor Informatica Camera Egomotion Filter voor Coach Mark de Greef 010888 [email protected] Universiteit van Amsterdam Begeleiders: Rein van den Boomgaard (Bachelor Team) Leendert van Gastel (Amstel Instituut) 21 juni 2005

Transcript of Afstudeerproject Bachelor Informatica Camera Egomotion ... › thesis › centraal › files ›...

Page 1: Afstudeerproject Bachelor Informatica Camera Egomotion ... › thesis › centraal › files › f1663790160.pdfAfstudeerproject Bachelor Informatica Camera Egomotion Filter voor Coach

Afstudeerproject Bachelor Informatica

Camera Egomotion Filter voor Coach

Mark de Greef010888

[email protected] van Amsterdam

Begeleiders:Rein van den Boomgaard (Bachelor Team)

Leendert van Gastel (Amstel Instituut)

21 juni 2005

Page 2: Afstudeerproject Bachelor Informatica Camera Egomotion ... › thesis › centraal › files › f1663790160.pdfAfstudeerproject Bachelor Informatica Camera Egomotion Filter voor Coach
Page 3: Afstudeerproject Bachelor Informatica Camera Egomotion ... › thesis › centraal › files › f1663790160.pdfAfstudeerproject Bachelor Informatica Camera Egomotion Filter voor Coach

Afstudeerproject Bachelor Informatica

Camera Egomotion Filter voor Coach

Samenvatting

In deze scriptie wordt er een algoritme beschreven die de camerabewegingen uit een video kan vinden. Verder latenwe ook zien hoe we dit kunnen omzetten in een eenduidig assenstelsel voor alle frames. Hiermee bedoelen we dat wede coordinaten van punten uit alle frames kunnen omzetten naar die van een specifieke frame.

Het algoritme werkt op basis van SSD-plane tracking. Deze volgt een vlak in het beeld aan de hand van beweg-ingsafgeleides van het vlak. Als bewegingsmodel hebben we hierbij gebruik gemaakt van het perspectivische model.Deze gebruikt een 3× 3 matrix die de huidige punten kan omzetten naar de punten uit een ander frame.

Van dit algoritme is een implementatie gemaakt gebruikmakend van DirectShow en OpenCV. Dit alles is gedaanom in het programma Coach in video’s te kunnen meten ondanks dat er bewegingen in de video plaats vinden.

1

Page 4: Afstudeerproject Bachelor Informatica Camera Egomotion ... › thesis › centraal › files › f1663790160.pdfAfstudeerproject Bachelor Informatica Camera Egomotion Filter voor Coach

Afstudeerproject Bachelor Informatica

Camera Egomotion Filter voor Coach

2

Page 5: Afstudeerproject Bachelor Informatica Camera Egomotion ... › thesis › centraal › files › f1663790160.pdfAfstudeerproject Bachelor Informatica Camera Egomotion Filter voor Coach

Afstudeerproject Bachelor Informatica

Camera Egomotion Filter voor Coach

Inhoudsopgave

1 Inleiding 4

2 Onderzoeksvoorstel 52.1 Doelstellingen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.2 Plan van Aanpak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.3 Toepassing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.4 Risico’s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

3 Theorie 73.1 Camera egomotion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73.2 Point tracking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93.3 SSD Plane Tracking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

3.3.1 Bewegingsmodel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103.3.2 Efficienter Tracken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123.3.3 Het Algoritme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133.3.4 Projectieve model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133.3.5 Occlusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143.3.6 Uitkomst . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

3.4 Vlak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

4 Filter 164.1 Specificaties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

4.1.1 Aannames . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164.1.2 Randvoorwaarden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164.1.3 Specificaties Filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

4.2 Testvideo’s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174.3 Programma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

4.3.1 Werking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184.3.2 Functies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184.3.3 OpenCV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194.3.4 Problemen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194.3.5 Uitbreidingen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

5 Resultaten 215.1 Brug . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215.2 Schoonspringen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235.3 Gewichtheffen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235.4 Sprint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235.5 Vlinderslag . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235.6 Snelheid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235.7 Naukeurigheid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

6 Conclusie 25

3

Page 6: Afstudeerproject Bachelor Informatica Camera Egomotion ... › thesis › centraal › files › f1663790160.pdfAfstudeerproject Bachelor Informatica Camera Egomotion Filter voor Coach

Afstudeerproject Bachelor Informatica

Camera Egomotion Filter voor Coach

1 Inleiding

In deze scriptie zullen we opzoek gaan naar een manier om van een video waarin de camera beweegt de camerabe-wegingen te volgen. Hiervoor zullen we de perspectivische vervorming van het beeld proberen te volgen om hieruit decamerabeweging op te maken.

Dit alles is gedaan voor het programma Coach. Coach is een veelzijdige leeromgeving waarin scholieren en studentenkunnen meten regelen en sturen. Hierin zit ook een onderdeel video meten waarin aan video’s gemeten kan worden.In de huidige situatie is het zo dat de video’s waarop gemeten wordt genomen moeten zijn door een niet bewegendecamera.

De opdracht voor dit onderzoek was dan ook om de relative orientatie van de camera ten opzichte van het vlakvan de beweging te vinden. Dit moest gebeuren gebruikmakend van DirectShow en OpenCV.

De scriptie ziet er verder als volgt uit in hoofdstuk 2 zullen we het doel van dit onderzoek beschrijven, in hoofdstuk3 zullen we naar de theorie kijken hoe we het probleem kunnen oplossen, in hoofdstuk 4 zullen we het filter besprekenen in hoofdstuk 5 zullen we de resultaten bespreken.

De resultaat video’s en het filter staan op http://student.science.uva.nl/∼mgreef/afstuderen

4

Page 7: Afstudeerproject Bachelor Informatica Camera Egomotion ... › thesis › centraal › files › f1663790160.pdfAfstudeerproject Bachelor Informatica Camera Egomotion Filter voor Coach

Afstudeerproject Bachelor Informatica

Camera Egomotion Filter voor Coach

2 Onderzoeksvoorstel

2.1 Doelstellingen

Het doel van dit afstudeerproject is een filter te maken dat er voor zorgt dat een gebruiker geen last meer heeft vanbewegingen van de camera, bijvoorbeeld in een video van een schoonspringer die van een springplank het water inspringt. Alle beelden moeten daartoe aan het begin beeld gerelateerd worden. Dit wil zeggen dat voor alle beeldenwordt geprobeerd het assenstelsel in te stellen op dat van het eerste beeld. Het maken van het filter zal gebeurenin Visual C++ en zal gebruik maken van de Microsoft DirectDraw bibliotheek. Uiteindelijk is het de bedoeling dathet filter wordt geımplementeerd in het software pakket Coach(in het onderdeel ”video-meten”). Het filter is eenzogenaamde transformatie filter, deze kan geplaatst worden tussen een bron- en render-filter.

We nemen aan dat in de video’s alleen pan-, tilt- en zoombewegingen voorkomen. Een verklaring voor dezebewegingen zijn als volgt:

• Pan: Roteren om de verticale as

• Tilt: Roteren om de horizontale as

• Zoom: Vergroten of verkleinen van het beeld

Dat de camera alleen deze drie bewegingen maakt zorgt ervoor dat je, voor elk punt in het huidige frame de overeenkom-stige punten uit voorgaande frames kan berekenen. Je kunt dan dus ook de positie van de punten van het eerste framevinden en het assenstelsel hierop afstemmen. Er zijn een aantal manieren waarop we dit kunnen doen:

• De eerste manier is door de 4 door de gebruiker op te geven punten te volgen. Dit heeft als nadeel dat als eenvan deze 4 punten buiten het beeld valt het filter niet meer werkt. Verder moeten deze punten makkelijk tevolgen zijn, dus bijvoorbeeld niet een punt midden in een grasveld.

• Een andere oplossing is door in elk frame 4 of meer ”willekeurige” punten te matchen aan een voorafgaandframe. Op deze manier kunnen de punten die de perspectivische vervorming weergeven altijd gereconstrueerdworden. Maar dit is lastig, omdat niet alleen het beeld beweegt, maar er zijn ook nog een of meerdere objectendie bewegen.

• Een totaal andere oplossing is door een vlak te gaan volgen. Hier hebben we dan wel nog 4 hoekpunten voornodig.

2.2 Plan van Aanpak

Om het project hanteerbaarder te maken heb ik het project opgedeeld in 5 fases. De fases zijn als volgt:

5

Page 8: Afstudeerproject Bachelor Informatica Camera Egomotion ... › thesis › centraal › files › f1663790160.pdfAfstudeerproject Bachelor Informatica Camera Egomotion Filter voor Coach

Afstudeerproject Bachelor Informatica

Camera Egomotion Filter voor Coach

• Voorbereidingsfase: Dit bestaat uit drie onderdelen, namelijk het bestuderen van de literatuur, kennis makenmet de tools die er gebruikt zullen worden en het maken van een aantal voorbeeld video’s.

– Literatuur: Ik heb literatuur gelezen over camera egomotion, camera calibration, stereo correspondenceen plane tracking. Ik zal aan de hand van de literatuur het algoritme dat mijn filter zal gebruiken gaanbepalen.

– Tools: De volgende tools zal ik in mijn project gaan gebruiken:

∗ Visual C++ Hierin zal het filter geschreven worden∗ DirectShow Bij het schrijven van het filter zal ik gebruik maken van DirectShow∗ Graphedit Hierin kan het filter getest worden.

– Video’s: De video’s zullen komen uit beeldmateriaal van de Olympische spelen van 2000. In deze fragmentenmogen dus alleen pan-, tilt- en zoombewegingen voor komen.

• Ontwerpfase: In de ontwerpfase het filter moeten ontwerpen. Hiertoe zal ik andere filters bekijken en dan eenmethode moeten ontwerpen die aan de vereiste specificaties voldoet.

• Implementatiefase: In deze fase zal ik het in de vorige fase bedachte filter implementeren in Visual C++. Er isal een wizard om het framework van de filter te maken, dit is dus een goede basis om het filter te maken.

• Testfase: Hierin zal ik het filter dat is geımplementeerd moeten testen op een aantal video’s. Als alles dan goedgaat zal het filter in Coach worden toegevoegd.

• Afsluitfase: Hierin zal ik de laatste hand leggen aan mijn scriptie en mijn eindpresentatie maken.

2.3 Toepassing

Het filter zal worden gebruik in het educatieve software pakket Coach. Als er in de huidige versie van Coach gemetenwordt aan een video, dan mag er geen camerabeweging zijn. Als er wel camera beweging is zullen de meetresultatenniet kloppen, dit aangezien het programma zelf niet weet wat voor beweging de camera maakt. Het egomotion trackingfilter moet er voor zorgen dat de beweging van de camera berekend wordt en in de metingen eruit wordt gehaald.

2.4 Risico’s

Er zijn een aantal problemen die tijdens dit project zouden kunnen optreden. Enkele van deze kunnen zijn:

• Het filter blijkt niet real-time te werken. Als het filter niet real-time blijkt te werken zal er een simpeler algoritmemoeten worden gekozen.

• Het filter blijkt niet nauwkeurig genoeg twee punten te kunnen matchen. Als dit gebeurd zal de data die uit hetfilter komt nog steeds niet goed genoeg zijn om aan te rekenen. In dit geval zou er een beter algoritme moetenworden gekozen voor het matchen van punten.

• De implementatie van het algoritme kost te veel tijd. Het filter zal dan goed gedocumenteerd moeten worden,zodat deze eventueel door iemand anders verder gemaakt kan worden.

• Het algoritme werkt niet op de geselecteerde video’s. We moeten dan uitzoeken waarom dit het geval is.

Er moet dus misschien een afweging worden gemaakt tussen snelheid en kwaliteit.

6

Page 9: Afstudeerproject Bachelor Informatica Camera Egomotion ... › thesis › centraal › files › f1663790160.pdfAfstudeerproject Bachelor Informatica Camera Egomotion Filter voor Coach

Afstudeerproject Bachelor Informatica

Camera Egomotion Filter voor Coach

3 Theorie

We zullen hierin als eerst bespreken wat we nu eigenlijk uit het filter willen krijgen. Daarna zullen we bespreken hoewe dit kunnen bewerkstelligen.

3.1 Camera egomotion

We zullen nu eerst uitleggen hoe we de camerabeweging precies willen gaan uitdrukken. We maken hierbij gebruik vanhomogene punten. Deze zijn als volgt, als we de Cartesiaanse coordinaten x = (u, v)t hebben en hiervan de homogenecoordinaten xh = (r, s, t)t willen, dan zijn deze punten als volgt gerelateerd

xh =

rst

→ x =(

r/ts/t

)=

(uv

)(1)

We gaan nu de camerabeweginig uitdrukken in een 3× 3 matrix Zi0. Deze matrix gaat samen met een homogeenpunt xi uit frame i in de volgende functie.

g(Zi0,xi) = Zi0xi (2)

Uit deze functie komt opnieuw een homogeen punt, punt x0. Dit punt x0 geeft dan de positie van punt xi in het eersteframe. Op deze manier kunnen we voor alle punten in een frame uitrekenen wat zijn positie was in het eerste frame.

We willen dus een matrix die voor alle punten uit het huidige frame via de functie (2) de punten in het eerste framegeeft. Als we niet in een keer Zj0 kunnen vinden kan dit ook anders. Als we de transformatie matrix Zij hebben enwe hebben de matrix Zi0, dan kunnen we Zj0 op de volgende manier berekenen.

xj = Zji(Zi0)−1xi (3)

Dit zorgt ervoor dat we de matrix Zj0 niet in een keer hoeven te berekenen, maar dat we ook naar een ander voorgaandframe kunnen transformeren. Om vanuit daar dan naar het eerste frame te komen.

We kunnen verder de matrix Zi0 nog opdelen volgens de in [3] genoemde methode. Daarin wordt de perspectivischevervormingsmatrix opgedeeld in twee matrices, namelijk de parameters K van de camera en de rotatie van de cameraR.

x0 = K0R0R−1i K−1

i xi (4)

Zi0 = K0R0R−1i K−1

i (5)

Als we naar de elementen van K gaan kijken dan ziet dat er als volgt uit.

K =

ku s pu

0 kv pv

0 0 1

(6)

Waar bij

• ku en kv de zoomfactor in respectievelijk de u en de v richting zijn.

• s de helling van de coordinaat-assen is

• pu en pv zijn de coordinaten van het principale punt van de camera.

Als we de volgende aannames doen

• we hebben vierkante pixels, dus ku = kv en s = 0

• het principale punt ligt voor een camera vast.

7

Page 10: Afstudeerproject Bachelor Informatica Camera Egomotion ... › thesis › centraal › files › f1663790160.pdfAfstudeerproject Bachelor Informatica Camera Egomotion Filter voor Coach

Afstudeerproject Bachelor Informatica

Camera Egomotion Filter voor Coach

dan krijgen we

K =

k 0 pu

0 k pv

0 0 1

(7)

Hierin is dus alleen nog maar de zoomfactor een variabele.We hebben nu de matrix van de camera, nu willen we ook nog de rotatie matrix hebben. Zoals gezegd hebben we

pan- en tiltbewegingen. Dit zijn rotaties om de x-as en de y-as, als we de z-as van de camera af nemen. We kijkeneerst naar wat deze rotaties voor de 3D wereld betekenen, zoals beschreven in [8].

Rx(α) =

1 0 0 00 cos α − sinα 00 sinα cos α 00 0 0 1

(8)

Ry(β) =

cos β 0 sinβ 0

0 1 0 0− sinβ 0 cos β 0

0 0 0 1

(9)

We willen nu van 3D naar 2D gaan, we gebruiken hiervoor de in [8] gebruikte formule. We nemen Pper = (r, s, t)t alszijnde het geprojecteerde punt en P = (x, y, z, 1)t als zijnde het punt in de 3D ruimte. Als we nu P vermenigvuldigenmet Mper dan krijgen we.

XYZW

= Mper · P =

1 0 0 00 1 0 00 0 1 00 0 1/d 0

·

xyz1

(10)

Hierbij is d een schalingsfactor.Als we nu delen door W en het vierde coordinaat laten vallen krijgen we.X/W

Y/WZ/W

=

rst

=

xz/dy

z/d

d

(11)

We mogen omdat (r, s, t)t homogene coordinaten zijn alle coordinaten met hetzelfde vermenigvuldigen. We ver-menigvuldigen het nu met z/d, we krijgen dan r

st

=

xyz

(12)

De projectie matrix van (x, y, z, 1)t naar (r, s, t)t kunnen we nu schrijven als

Pper = M · P =

1 0 0 00 1 0 00 0 1 0

· P (13)

We krijgen nu voor de rotatie matrices

M ·Rx(α) =

1 0 0 00 cos α − sinα 00 sinα cos α 0

(14)

M ·Ry(β) =

cos β 0 sinβ 00 1 0 0

− sinβ 0 cos β 0

(15)

8

Page 11: Afstudeerproject Bachelor Informatica Camera Egomotion ... › thesis › centraal › files › f1663790160.pdfAfstudeerproject Bachelor Informatica Camera Egomotion Filter voor Coach

Afstudeerproject Bachelor Informatica

Camera Egomotion Filter voor Coach

Als we deze we willen nu rotatie matrix Rxp en Ryp waarvoor geld Rxp(α)·M = M ·Rx(α) en Ryp(β)·M = M ·Ry(β).Deze zijn als volgt

Rxp(α) =

1 0 00 cos α − sinα0 sinα cos α

(16)

Ryp(β) =

cos β 0 sinβ0 1 0

− sinβ 0 cos β

(17)

De matrix R ziet er dus als volgt uit.

R(α, β) =

1 0 00 cos α − sinα0 sinα cos α

· cos β 0 sinβ

0 1 0− sinβ 0 cos β

(18)

Als we nu voor tijdstip t = 0 nemen dat er geen rotatie en geen zoom factor is. Dit kan omdat we toch alleen maarnaar de beweging relatief aan tijdstip t = 0 willen hebben. We krijgen van (5)

Zi0 = K0R−1i K−1

i (19)

De matrix Zi0 ziet er dus als volgt uit

Zi0 = R−1i K−1

i =

1 0 pu

0 1 pv

0 0 1

·k 0 pu

0 k pv

0 0 1

·1 0 0

0 cos α − sinα0 sinα cos α

· cos β 0 sinβ

0 1 0− sinβ 0 cos β

−1

(20)Hierin zitten dus de zoom en de rotatie als variabelen. Dit is precies wat we wilden hebben, want dit beschrijft dusde beweging van de camera, matrix Z.

We kunnen nu gaan kijken hoe we deze matrix Zi0 kunnen vinden. De volgende paragrafen zullen hier verder opin gaan.

3.2 Point tracking

Als eerst gaan we kijken naar de mogelijkheid om punten te volgen en hier uit de camerabeweging te krijgen. Wemaken hiervoor gebruik van de methode beschreven in [3]. Er is dus een functie g die samen met matrix Zij diepunten van frame i (xi) naar punten uit een andere frame j (xj) veranderd.

Als we xi = (ui, vi, 1)t en xj = (uj , vj , 1)t schrijven. Dan kunnen we de transformatie schrijven als

wj(uj , vj , 1)t = Z(ui, vi, 1) (21)

Als we nu de rijen van Z schrijven als de vectoren Zt1, Zt

2 en Zt3, dan kunnen we vergelijking (21) schrijven als

wjuj = Zt1xi (22)

wjvj = Zt2xi (23)

wj = Zt3xi (24)

Als we vergelijking (22) en (23) combineren met (24) dan krijgen we het volgende.

Zt3xiuj = Zt

1xi (25)

Zt3xivj = Zt

2xi (26)

Dit zijn twee lineaire vergelijkingen en omdat we Z maar op schaal willen hebben kunnen we dit oplossen met vierpunten. Als we meer dan vier punten hebben kunnen we door middel van de kleinste kwadraten methode de oplossingvinden.

9

Page 12: Afstudeerproject Bachelor Informatica Camera Egomotion ... › thesis › centraal › files › f1663790160.pdfAfstudeerproject Bachelor Informatica Camera Egomotion Filter voor Coach

Afstudeerproject Bachelor Informatica

Camera Egomotion Filter voor Coach

Het nadeel van deze methode is dat als een punt verdwijnt door occlusie dit verkeerde resultaten levert. Ditaangezien de twee punten die dan in twee verschillende frames worden genomen in het echt niet overeen komen. Ditzelfde probleem ontstaat als punten buiten het beeld vallen.

Een eventuele oplossing voor dit probleem zou zijn om meerdere punten te nemen. We kunnen dan via de kleinstekwadraten methode kijken wat de oplossing moet zijn. We gaan dan voor alle punten kijken welk punt er uit functie(2) komt en of die te veel verschilt van het gevonden punt. Als dit zo is dan verwijderen we dit punt uit onze lijst metpunten en zoeken een nieuw punt waar het gevonden punt wel overeen komt met het punt gevonden door functie (2).

3.3 SSD Plane Tracking

Voor mijn Filter zal ik gebruik gaan maken van het SSD plane tracking algoritme beschreven in [1] en [2]. Dit algoritmeis gebaseerd op het minimaliseren van de som van de kwadratische afstanden(Sum-of-Squared Distances).

3.3.1 Bewegingsmodel

We nemen voor elk pixel de intensiteit I(x, t), waarbij x staat voor positie (x, y)t en t de tijd van dit beeld. Deruimtelijke gradient zullen we schrijven als 5xI(x, t). Verder nemen we R = (x1,x2, . . . ,xN ), dit zijn N punten uitde achtergrond.

Omdat er bewegingen in de video zijn willen we deze modelleren, dit doen we door de functie f(x, µ). Waarinµ = (µ1, µ2, . . . , µn) de bewegingsvariabelen zijn, met f(x, 0) = x. Verder moet N groter zijn dan n, omdat we meerpunten moeten hebben dan bewegingsvariabelen.

We nemen µ(t)∗ als echte waarde voor de bewegingsvariabelen op tijdstip t en µ(t) als de geschatte waarde. Inhet eerste frame t0 is µ(t0)∗ = µ(t)∗ = 0. Als we aannemen dat f de bewegingen in het beeld volledig beschrijft en erzijn geen veranderingen in de intensiteit. Dan krijgen we voor elk tijdstip t > t0 dat er bewegingsvariabelen µ(t)∗ tevinden zijn zodat

I(x, t0) = I(f(x;µ∗(t)), t)∀x ∈ R (27)

Om een zo goed mogelijke schatting van µ(t)∗ te krijgen zullen we het minimum van de kwadratische afstandmoeten zoeken. Dit doen we door de volgende functie te minimaliseren.

O(µ) =∑x∈R

(I(f(x;µ), t)))− I(x, t0))2 (28)

Voor het vervolg van dit algoritme is het handiger om dit probleem om te schrijven in vector notatie. Als eerstzullen we de intensiteit van alle locaties xi onder de verandering van de functie f in een vector zetten. We krijgen dan

I(µ, t) =

I(f(x1, µ), t)I(f(x2, µ), t)

...I(f(xN , µ), t)

(29)

We zullen verderop ook gebruik gaan maken van de afgeleiden van I in de onderdelen van µ en de tijd t. Dezeworden

Iµi(µ, t) =

∂I∂µi

=

Iµi

(f(x1, µ), t)Iµi(f(x2, µ), t)

...Iµi(f(xN , µ), t)

(30)

waar de 1 ≤ i ≤ n aangezien µ uit n variabelen bestaat. En

It(µ, t) =∂I∂t

=

It(f(x1, µ), t)It(f(x2, µ), t)

...It(f(xN , µ), t)

(31)

Gebruikmakend van deze vector notatie kunnen we (27) omschrijven als

10

Page 13: Afstudeerproject Bachelor Informatica Camera Egomotion ... › thesis › centraal › files › f1663790160.pdfAfstudeerproject Bachelor Informatica Camera Egomotion Filter voor Coach

Afstudeerproject Bachelor Informatica

Camera Egomotion Filter voor Coach

I(µ∗(t), t) = I(0, t0)

En (28) kunnen we schrijven alsO(µ) = ||I(µ, t)− I(0, t0)||2 (32)

Omdat de bewegingen gelijkmatig zijn kunnen we dit gaan omschrijven. Als we een tijdstip t > t0 nemen en hier eenkleine tijdstap τ bij te nemen. Dan krijgen we µ(t + τ) = µ(t) + δµ, waarbij δµ de toename van µ is in tijdstip τ . Wewillen nu O schrijven als functie van de toename δµ, dit doen we door met behulp van (32) de functie te schrijven als

O(δµ) = ||I(µ(t) + δµ, t + τ)− I(0, t0)||2 (33)

Deze vergelijking kunnen we met behulp van de Taylor reek naar µ en τ uitbreiden naar

I(µ + δµ, t + τ) = I(µ, t) + M(µ, t)δµ + τIt(µ, t) + . . . (34)

Waarbij de hogere orde termen zijn weggelaten. Verder zien we een matrix M, deze bevat de afgeleiden van I(µ, t)naar µi voor 1 ≤ i ≤ n. We kunnen deze matrix schrijven als

M(µ, t) = [Iµ1(µ, t)|Iµ2(µ, t)| . . . |Iµn(µ, t)] (35)

Als we nu (34) in (33) vervangen en de hogere orde termen niet meenemen, dan krijgen we

O(δµ) = ||I(µ, t) + Mδµ + τIt − I(0, t0)||2 (36)

Met de schatting dat

τIt ≈ I(µ, t + τ)− I(µ, t)

kunnen we (36) schrijven alsO(δµ) = ||Mδµ + I(µ, t + τ)− I(0, t0)||2 (37)

We willen het minimum van O(δµ). Dit minimum kunnen we, omdat het een kwadratische functie is, vinden op hetpunt waar de gradient 0 is, oftewel 5O = 0.

O(δµ) = (Mδµ + I(µ, t + τ)− I(0, t0))(Mδµ + I(µ, t + τ)− I(0, t0))t

O(δµ) =MδµδµtMt + MδµI(µ, t + τ)t + MδµI(0, t0)t

+ I(µ, t + τ)δµtMt + I(µ, t + τ)I(µ, t + τ)t + I(µ, t + τ)I(0, t0)t

− I(0, t0)δµtMt − I(0, t0)I(µ, t + τ)t + I(0, t0)I(0, t0)t

5O = MtMδµ + MtI(µ, t + τ)−MtI(0, t0)

Als 5O = 0 dan

MtMδµ = −Mt(I(µ, t + τ)− I(0, t0))

We krijgen dan voor δµδµ = −(MtM)−1Mt[I(µ, t + τ)− I(0, t0)] (38)

Hier bij moet de matrix MtM wel onafhankelijke rijen en kolommen hebben. Dit wil zeggen dat rijen niet een productvan een andere rij mogen zijn en zo ook voor de kolommen. Dit mag niet omdat dan de referentie punten dan teweinig structuur hebben om de bewegingsvariabelen te bepalen. Voor het verdere verloop is het handig om de errorvector te definieren.

e(t + τ) = I(µ(t), t + τ)− I(0, t0)

We kunnen dan (38) schrijven alsδµ(t + τ) = −(MtM)−1Mte(t + τ) (39)

In deze functie zien we dat we elke keer M helemaal moeten berekenen. Dit moet efficienter, hoe dit gaat zullen wein het volgende stuk zien.

11

Page 14: Afstudeerproject Bachelor Informatica Camera Egomotion ... › thesis › centraal › files › f1663790160.pdfAfstudeerproject Bachelor Informatica Camera Egomotion Filter voor Coach

Afstudeerproject Bachelor Informatica

Camera Egomotion Filter voor Coach

3.3.2 Efficienter Tracken

We willen matrix M dus om gaan schrijven, hier voor zullen we eerst naar alle elementen van deze matrix en dezegaan schrijven als

mij = Iµj(f(xi;µ), t) = 5f I(f(xi;µ), t)tfµj

(xi;µ) (40)

Hier is 5fI de gradient van I naar de onderdelen van f . Met behulp van de matrix

fµ(x;µ) =[

∂f(x;µ)∂µ1

|∂f(x;µ)∂µ2

| · · · |∂f(x;µ)∂µn

](41)

en (40)kunnen we nu M schrijven als

fµ(x;µ) =

5f I(f(x1;µ), t)tfµ(x1;µ)5f I(f(x2;µ), t)tfµ(x2;µ)

...5f I(f(xN ;µ), t)tfµ(xN ;µ)

(42)

Omdat M tijdsafhankelijk is, zullen we deze matrix elke keer opnieuw moeten berekenen. Bij elke tijdstap zullen wede gradient vector van het beeld moeten berekenen, een 2× n matrix voor fµ(x;µ) en n2× 1 vector inproducten vooralle N referentie pixels. We zullen nu laten zien dat dit efficienter kan.

Laten we aannemen dat onze schatting voor µ exact is, dus µ(t) = µ∗(t). Als we nu µ∗ vervangen in (27) door µen deze vergelijking aan beide kanten differentieren, dan krijgen we

5x I(x, t0) = fx(x;µ)t 5f I((x;µ), t) (43)

Waarbij fx(x;µ) de volgende matrix is

fx(x;µ) =[∂f(x;µ)

∂x|∂f(x;µ)

∂y

](44)

Door (43) en (42) te combineren krijgen we het volgende

M(µ) =

5xI(x1; t0)tfx(x1;µ)−1fµ(x1;µ)5xI(x2; t0)tfx(x2;µ)−1fµ(x2;µ)

...5xI(xN ; t0)tfx(xN ;µ)−1fµ(xN ;µ)

(45)

Hierin zien we dat het tijd argument t verdwenen is. We hoeven nu eenmalig de ruimtelijke gradient van I te berekenenin het eerste frame. Dit is logisch aangezien elk opvolgende frame alleen maar een vervorming van het eerste frame is.M hangt nu alleen nog maar af van µ.

Het enige waar M nu nog van af hang is dus µ. Dit komt omdat fx en fµ meestal afhankelijk zijn van µ.Als we onsbewegingsmodel f zo kiezen dat we f−1

x fµ te factoriseren is in de matrices Γ en Σ, waarbij Γ een 2 × k matrix is diealleen afhangt van x en Σ een k × n matrix die alleen afhangt van µ, zodat

fx(x1;µ)−1fµ(x1;µ) = Γ(x)Σ(µ) (46)

Dit kunnen we doen in ons geval van het projectieve model. Dit zullen we verder bespreken in hoofdstuk 3.3.4.Als we nu 45 en 46 combineren, dan krijgen we

M(µ) =

5xI(x1; t0)tΓ(x1)5xI(x2; t0)tΓ(x2)

...5xI(xN ; t0)tΓ(xN )

Σ(µ) = M0Σ(µ) (47)

We zien nu dat we een constante N × k matrix M0 hebben en een tijdsafhankelijke k × n matrix Σ. We kunnen 39schrijven als

ΣtΛΣδµ = ΣtMt0e(t + τ) (48)

Waarbij Λ = Mt0M0

12

Page 15: Afstudeerproject Bachelor Informatica Camera Egomotion ... › thesis › centraal › files › f1663790160.pdfAfstudeerproject Bachelor Informatica Camera Egomotion Filter voor Coach

Afstudeerproject Bachelor Informatica

Camera Egomotion Filter voor Coach

3.3.3 Het Algoritme

Nu we de berekeningen hebben opgedeeld in een constant deel en een variabel deel kunnen we ons algoritme specificeren.Voor het eerste frame

• Als eerste moeten er referentie punten x gedefinieerd worden, dit zijn de punten die gebruikt worden voor deberekeningen. Wij zullen hiervoor gebruik gaan maken van een vlak in het beeld.

• Deze punten moeten dan opgeslagen worden, hiermee bedoelen we de intensiteit en de positie.

• Nu kunnen we M0 en Λ = Mt0M0 berekenen.

Voor elk frame

• We nemen voor elk frame de vorige µ(t) om de referentie punten uit het frame te verbeteren

• We berekenen e(t + τ), door het verschil van de verbeterde punten en de referentie punten te nemen

• We berekenen Σ(µ(t))

• We lossen ΣtΛΣδµ = ΣtMt0e(t + τ) op

• We berekenen µ(t + τ) = µ(t) + δµ en slaan deze op

3.3.4 Projectieve model

Voor ons algoritme hebben we zoals eerder gezegd ook een bewegingsmodel nodig. Omdat we de beweging van eencamera die alleen pan-, tilt- en zoombewegingen maakt willen tracken, nemen we een projectief model. Hiervoor makenwe gebruik van homogene punten, zoals beschreven in 3.1. Voor het projectieve model is er voor elke beeld een 3× 3matrix, die voor alle punten de coordinaten van hetzelfde punt in het eerst frame geeft. We hebben hierbij ervoorgekozen om niet het uitgebreide model voor 3 variabelen te nemen zoals beschreven in 3.1, maar een eenvoudigermodel met 8 variabelen

f(x, µ) = Hxh =

a d gb e hc f 1

rst

(49)

Onze bewegingsparameter vector is hier µ = (a, b, c, d, e, f, g, h)t.Voor ons algoritme hebben we drie functies nodig, namelijk 5xh

I(xh; t0)t en Γ voor de berekening van M0 en Σvoor de verandering in µ. De gradient is eenvoudig te berekenen

5xhI(xh; t0)t =

(∂I

∂u,∂I

∂v,−

(u

∂I

∂u+ v

∂I

∂v

))(50)

Nu moeten we nog een Σ en Γ vinden, zodat Γ(xh)Σ(µ) = fx(x, µ)−1fµ(x, µ)

fx(x, µ)−1 = H−1 (51)

fµ(xh, µ) =

r 0 0 s 0 0 t 00 r 0 0 s 0 0 t0 0 r 0 0 s 0 0

(52)

Als we (51) en (52) combineren krijgen we

f(xh, µ)−1fµ(xh, µ) = H−1(rI3×3|sI3×3| tI2×2

01×2

)= (rH−1|sH−1|tH−1

12 ) = Γ(xh)Σ(µ) (53)

Waarbij H12 de eerste twee kolommen van H−1 zijn.We kunnen dit nu als volgt op delen in Γ(x)Σ(µ)

Γ(xh) = (rI3×3|sI3×3|tI3×3)

Σ(µ) =

H−1 0 00 H−1 00 0 H−1

12

We kunnen nu M0 berekenen en voor elk beeld kunnen we Σ(µ) berekenen.

13

Page 16: Afstudeerproject Bachelor Informatica Camera Egomotion ... › thesis › centraal › files › f1663790160.pdfAfstudeerproject Bachelor Informatica Camera Egomotion Filter voor Coach

Afstudeerproject Bachelor Informatica

Camera Egomotion Filter voor Coach

3.3.5 Occlusion

Om te zorgen dat het filter niet in de war zal raken als er een object door het te tracken vlak heen gaat, moet er eenocclusie detector ingebouwd worden. Ik ga hiervoor gebruik maken van de in [1] gebruikte methode. Dit is iterativelyreweighted least squares(IRLS) methode van Dutter en Huber.

Wat we gaan veranderen is dat we niet een het kwadraat van de verschillen in intensiteit nemen, maar een robuusteschatter.

OR(µ) =∑x∈R

ρ(I(f(x;µ), t)))− I(x, t0)) (54)

Voor deze schatter nemen we dus de IRLS methode van Dutter en Huber. Deze maakt gebruik van iteratie binneneen frame, dat wil zeggen dat voor elke tijdstap deze meerdere malen wordt uitgevoerd. We gebruiken hierbij hetsuperscript om aan te geven dat het om deze iteratie gaat.

We nemen δµi als de waarde van δµ na de ide iteratie. Verder nemen we δµ0 = 0. De punten die overblijven nade ide iteratie definieren we als zijnde

ri = e(t, τ)−M(µ)δµi (55)

We nemen ook een diagonale wegingsmatrix Wi = W(ri). Deze matrix heeft de volgende invulling

Wik,k = η(ri

k) = ρ′(rik)/rik, 1 ≤ k ≤ N (56)

Gebruik makend van de residuals en de wegingsmatrix kunnen we de volgende formule opstellen

ΣtΛΣδµi+1 = ΣtMt0W

iri (57)

Hierbij worden ri en Wi gegeven door vergelijking (55) en (56). Verder zien we dat alleen deze twee bij elke iteratieopnieuw uitgerekend dienen te worden. We doen deze berekening k keer.

We moeten nu nog een goede keuze maken voor de ρ functie. We nemen de zogenaamde ”winsoring” functie. Dezeziet er als volgt uit

ρ(r) =

{r2/2 if |r| ≤ τ

c|r| − c2/2 if |r| > τ(58)

Waarbij we τ instellen dat de punten die meer verschillen als buitenliggers beschouwd worden. Deze functie heeft alsvoordeel dat de IRLS methode zal convergeren naar een globaal minimum. Verder is het voordeel dat deze functiemakkelijk te berekenen is, omdat we Σ niet steeds opnieuw hoeven te berekenen.

We moeten verder nog η hebben. Deze hebben we al eerder gedefinieerd en zullen we nu uitschrijven.

η(r) = ρ′(rik)/rik =

{1 if |r| ≤ τ

c/|r| if |r| > τ(59)

Dit alles moet ervoor zorgen dat ons algoritme minder afhankelijk is van buitenliggers.

3.3.6 Uitkomst

In ons projectieve model zit een matrix H. We willen van deze matrix H naar onze matrix Zi0 komen. Matrix Hgeeft voor ieder punt in het eerste frame de positie van dit punt in het huidige frame. We doen dit als volgt

xi = Hix0 (60)

H−1i xi = x0 = Zi0xi (61)

H−1i = Zi0 (62)

Om van matrix H naar Z te komen hoeven we dus alleen de inverse te nemen.

14

Page 17: Afstudeerproject Bachelor Informatica Camera Egomotion ... › thesis › centraal › files › f1663790160.pdfAfstudeerproject Bachelor Informatica Camera Egomotion Filter voor Coach

Afstudeerproject Bachelor Informatica

Camera Egomotion Filter voor Coach

3.4 Vlak

We willen nu nog het vlak specificeren dat we moeten volgen. We willen eigenlijk de vervorming van het vlak volgenwaarin de actie plaats vindt.

In hoofdstuk 3.1 hebben we al besproken hoe de projectie matrix eruit ziet. Deze is

M =

1 0 0 00 1 0 00 0 1 0

(63)

De laatste waarde van het homogene 3D-punt wordt dus weggegooid. Dit zorgt ervoor dat de cartesische 3D-puntenhetzelfde zijn als de 2D-homogene punten uit de projectie.

M ·

xyz1

=

xyz

=

rst

(64)

Als we nu de camera op het punt (0, 0, 0)t zetten, dan kunnen we de 3D lijnen vanuit dit punt zien als homogene2D punten voor de camera. Dit betekent dat de 3D lijnen vanuit de camera worden geprojecteerd als 1 punt in onsbeeld.

Als we de camera nu gaan draaien, de hele wereld draait ten opzichte van de camera, dan blijven de verhoudingentussen de lijnen hetzelfde. Als we gaan inzoomen, dan nemen we eigenlijk alleen maar een kleiner viewwindow.

Dit zorgt er dus voor dat we in ons beeld een willekeurig vlak kunnen nemen. Er zijn wel andere dingen waar werekening mee moeten houden. Dit zijn dingen als

• Waar draait de camera heen en valt het vlak dan niet buiten beeld.

• Beweegt er niks in het vlak.

• Gaat het object dat we willen gaan volgen niet te veel door het vlak heen, waardoor we te veel last van occlusiekunnen krijgen.

15

Page 18: Afstudeerproject Bachelor Informatica Camera Egomotion ... › thesis › centraal › files › f1663790160.pdfAfstudeerproject Bachelor Informatica Camera Egomotion Filter voor Coach

Afstudeerproject Bachelor Informatica

Camera Egomotion Filter voor Coach

4 Filter

4.1 Specificaties

4.1.1 Aannames

• Ik neem aan dat de camera stil staat en we alleen pan-, tilt- en zoombewegingen hebben

4.1.2 Randvoorwaarden

• De computer waarop het filter draait moet minimaal 1 Ghz zijn

4.1.3 Specificaties Filter

Input

• Als input moet een patch worden gegeven door middel van 4 punten in een frame

• In de patch moeten duidelijke edges zitten

• De patch mag niet buiten beeld vallen

• De patch moet parallel aan het vlak van de beweging zijn

• De patch mag gedeeltelijk niet zichtbaar zijn door occlusie

Output

• Als output moet het filter voor ieder frame i een 3x3 projectiviteitsmatrix Z geven.

• Als een homogeen punt xi uit hetzelfde vlak als de patch in frame i wordt vermenigvuldigd met deze matrix,dan moet hier hetzelfde homogene punt x0 uit komen in frame 0, dus xiZ = x0

Gebruik

• Het filter moet real-time werken

• Het filter dient in te bouwen te zijn in Coach 6

Testvideo’s

• De test video’s hebben een resolutie van 360x288 en een kleurdiepte van 24 bits

• De frame-rate van de test video’s is 25 fps

• De test video’s zijn sport opnames die van VHS zijn gedigitaliseerd

• In de test video’s zijn de camera bewegingen pan, tilt en zoom aanwezig

• In de test video’s is minstens 1 bewegend object

• In de testvideo’s is een stilstaande achter- of ondergrond aanwezig

16

Page 19: Afstudeerproject Bachelor Informatica Camera Egomotion ... › thesis › centraal › files › f1663790160.pdfAfstudeerproject Bachelor Informatica Camera Egomotion Filter voor Coach

Afstudeerproject Bachelor Informatica

Camera Egomotion Filter voor Coach

4.2 Testvideo’s

Ik heb 5 video’s geselecteerd. Deze video’s zijn alle sportfragmenten. Hieronder staat een screenshot uit elk van de 5video’s. Er staat nog bij wat er lastig is aan de video.

• Brug

Bij de afsprong is de camera beweging zeer snel

• Schoonspringen

De loop van de springers is redelijk rustig, maar bij de sprong zit een grote versnelling in de beweging van decamera

• Gewichtheffen

Er is weinig structuur aanwezig op de achtergrond, wel in de ondergrond.

• Sprint

17

Page 20: Afstudeerproject Bachelor Informatica Camera Egomotion ... › thesis › centraal › files › f1663790160.pdfAfstudeerproject Bachelor Informatica Camera Egomotion Filter voor Coach

Afstudeerproject Bachelor Informatica

Camera Egomotion Filter voor Coach

De baan is zeer eentonig tot bij de finish, daar is meer structuur.

• Zwemmen

Het water beweegt en is vrij eentonig.

In elk van de video’s is er in enige mate sprake van een beweging van de camera.

4.3 Programma

Ik heb er voor gekozen om voor mijn programma gebruik te maken van het algoritme beschreven in Hoofdstuk 3.3.Verder moest het programma ook nog enige output geven met betrekking tot Coach. Deze output is zoals beschrevenin Hoofdstuk 3.1.

Het programma moest een DirectShow Transform Filter zijn. Het skelet van het programma heb ik gekregen dooreen wizzard [10] te gebruiken. Verder heb ik om mezelf bekend te maken met DirectShow gebruik gemaakt van [6].

We zullen nu nog kijken naar de werking van het filter, de functies gemaakt voor het filter, de functies gebruiktvan OpenCV, problemen die we zijn tegengekomen bij het filter en de uitbreidingen die op het filter kunnen wordengemaakt.

4.3.1 Werking

We zullen kort naar de werking van het programma kijken. Eerst wordt er van het huidige frame omgezet naargrijswaarden. Dit is nodig omdat het algoritme werkt met de intensiteit.

Als het de eerste keer is dat we de huidige parameters hebben slaan we de hoekpunten van het gespecificeerde vlakop. Na dit gedaan te hebben kijken we naar de grote van het vlak in de x en y richting, deze hebben we nodig voorde template. We slaan dan het template op zodat we deze in de toekomst nog kunnen gebruiken. We gaan nu M0

berekenen en met deze berekenen we λ.Verder initialiseren we de parameters. Dit wil zeggen we alloceren geheugen voor de globale variabelen. We zetten

de bewegingsparameters, hierbij zetten we alles op de diagonaal op 1 en punten (1, 3) zetten we op Ax en (2, 3) op Ay.Dit bleek het filter stabieler te maken we moeten hier wel rekening mee houden bij het berekenen van de uiteindelijkeZ-waarde. De translatie moet er dan weer uitgehaald worden. Ook moeten we hier rekening mee houden dat we deoude positie van de punten nemen net als in het template, de translatie naar de goede positie in het beeld zit er immersal in.

Voor elk frame gaan we nu het algoritme langslopen, we proberen de vergelijking (48) op te lossen. We doen dit20 keer, omdat het na de eerste keer nog niet optimaal is. We kunnen ook eerder stoppen, dit doen we als de normaalvan de nieuwe error vector min de normaal van de oude vector minder is dan 0.001. Dit omdat er dan toch niet veelmeer verbeterd zal worden.

We hebben nu de nieuwe bewegingsparameters. Deze gaan we nu omzetten naar Z. Hier voor moeten we eerst detranslatie er weer uit halen. Daarna inverteren we de matrix en hebben we het resultaat. Als er een callback functieis aangeroepen, dan wordt het resultaat daaraan gegeven. Dit is zodat men vanuit Coach de resultaten kan binnenkrijgen.

4.3.2 Functies

Transform Dit is waar het programma om draait. Alle functies worden hier aangeroepen. De voorgaande beschrijvingvan de werking vindt hier dus grotendeels plaats.

18

Page 21: Afstudeerproject Bachelor Informatica Camera Egomotion ... › thesis › centraal › files › f1663790160.pdfAfstudeerproject Bachelor Informatica Camera Egomotion Filter voor Coach

Afstudeerproject Bachelor Informatica

Camera Egomotion Filter voor Coach

createM0 We nemen als input het template en maken M0 aan en slaan deze op in een globale variabele.

createLambda We maken van M0 Λ en slaan deze op in een globale variabele.

updateSigma We vernieuwen Σ.

updateH We maken de nieuwe H aan de hand van de nieuwe bewegingsparameters.

initParam We vragen geheugen aan en zetten de bewegingsparameters.

updateParam We lossen de vergelijking ΣtΛΣδµ = ΣtMt0e(t + τ) op.

updatePlane We vernieuwen de hoekpunten van ons geselecteerde vlak.

drawPlane We tekenen het nieuwe vlak over het originele beeld heen.

drawAxes We tekenen een denkbeeldig assenstelsel op het beeld.

4.3.3 OpenCV

In het programma is ook gebruik gemaakt van OpenCV, hierdoor moet bij het filter ook altijd het bestand cv.dllaanwezig zijn. We zullen nu de gebruikte onderdelen van OpenCV even kort door nemen.

cvInitImageHeader en cvSetImageData Deze gebruiken we om van het huidige frame een door OpenCV ge-bruikte IplImage te maken.

cvCvtColor Wordt gebruikt om het huidige frame om te zetten naar grijs waarden, dit aangezien we de intensiteitwillen hebben.

cvNorm Gebruikten we voor het berekenen van de normaal van de error vector. Deze werkt als volgt norm =√(∑

i∈I iA(i)2) waar I de verzameling van alle punten in het beeld zijn.

cvInvert Gebruiken we voor het inverteren van de matrices. Deze krijgt de inverse door Gausische eliminatie metoptimale pivot element.

cvScale Gebruiken we om de uitkomst van het filter mooi te maken, hiermee zorgen we ervoor dat het element oppositie (3, 3) altijd 1 is.

cvSobel Gebruiken we om de gradient te maken, hier bij maken we gebruik van een convolutie matrix van 3× 1 en1× 3, deze bleek beter te werken dan andere.

cvTranspose Voor de transpositie van matrices.

cvMatMul Voor het vermenigvuldigen van matrices.

cvSolve gebruiken we om de vergelijking ΣtΛΣδµ = ΣtMt0e(t + τ) op te lossen.

4.3.4 Problemen

Bij het maken van het filter zijn er wat problemen geweest. Ik zal drie van deze problemen toelichten. Deze zijn alsvolgt

• Bij de video met de vlinderslag wordt er niet goed gevolgd

• Het algoritme bleek niet na een ronde te werken

• De occlusie detectie bleek niet goed te werken.

Ik zal deze problemen in de volgende secties uitleggen.

19

Page 22: Afstudeerproject Bachelor Informatica Camera Egomotion ... › thesis › centraal › files › f1663790160.pdfAfstudeerproject Bachelor Informatica Camera Egomotion Filter voor Coach

Afstudeerproject Bachelor Informatica

Camera Egomotion Filter voor Coach

Vlinderslagvideo Als mijn filter wordt toegepast op de video met de vlinderslag, dan volgt de camera te traag.Hierna heb ik de video nog eens nader bekeken. Toen ik dit gedaan had bleek dat in de video de spiegeling van hetlicht in het water goed gevolgd werd, maar de banen zelf niet. Dit duidt er op dat de camera niet stil stond, aangezienals de camera stil staat de weerspiegeling van het licht niet opeens op een andere plek in het water kan zijn. De camerabeweegt dus boven het bad mee met de zwemmers. Deze video is dus niet geschikt voor ons filter.

Iteraties Als we alle stappen van het algoritme beschreven in 3.3 volgen, dan zouden we in een keer het goede vlakmoeten hebben. Dit is echter niet het geval. Het gevonden vlak wijkt nog af van het echte vlak. De reden hiervoor isdat we de positie van het nieuwe vlak benaderen door de eerste afgeleiden uit de Taylor reeks. Dit is een benaderingen dus niet precies. We moesten dus een manier vinden om deze afwijking te verkleinen.

Als we terug kijken naar ons algoritme zien we dat we opzoek gaan naar waar 5O = 0. Dit is een functie naar δµ.We berekenen dan wat de afgeleide van δµ is op dit punt. We gaan dus wel richting het minimum maar niet preciesnaar het minimum. Maar als we nu het algoritme meerdere malen uitvoeren, dan komen we dus ook steeds dichter bijhet minimum. Het convergeert namelijk naar het nul punt.

Daarom heb ik in mijn programma ingebouwd dat hij 20 keer het algoritme doet. Alleen als hij een veranderingvan de normaal van de error vector vindt die lager is dan 0, 001 vinden zoeken we niet verder. Als dit het geval is iser zo weinig verandering dat verder zoeken niet veel verbetering oplevert.

Occlusion Het in hoofdstuk 3.3.5 beschreven algoritme voor occlusie blijkt niet te werken. De reden hiervoor is toete leggen op hetzelfde probleem als hiervoor beschreven is. Het algoritme gaat er vanuit dat meteen de eerste keer dathet algoritme werkt hij het goede vlak te pakken heeft. Of in dit geval er dichtbij zit aangezien er occlussie kan zijn.

Omdat hij niet in een keer het goede vlak pakt, laat hij randen van vlakken minder zwaar mee tellen, terwijl ze juistnormaal meegeteld hadden moeten worden. Hierdoor krijgt het algoritme te weinig houvast en gaat onvoorspelbaargedrag vertonen.

Als alternatief hebben we gewoon vast gehouden aan het originele algoritme, maar als een waarde uit de errorvector boven een bepaalde drempel komt nemen we deze drempel waarde. Dit zorgt ervoor dat we dan in plaats vande kwadratische vergelijking een vergelijking krijgen die rond de 0 kwadratisch is en boven de drempel of onder denegatieve drempel lineair is. Als drempel hebben we hier gekozen voor 0.1, dit bleek iets beter te werken dan de echtewaardes te nemen.

4.3.5 Uitbreidingen

Om mijn filter beter te maken kunnen de volgende uitbreidingen op het filter gedaan worden.

• Een betere schatter inbouwen, dit zorgt ervoor dat hij beter tegen occlusie bestand is.

• Niet alle punten pakken uit een gebied, maar een bepaald aantal punten (bijvoorbeeld door middel van interpo-latie), dit zorgt ervoor dat bij een groter gebied het filter nog real-time kan werken.

• Automatisch nieuwe punten pakken en punten buiten beeld verwijderen. Dit kan er voor zorgen dat een bepaaldvlak niet altijd helemaal of gedeeltelijk in beeld hoeft te zijn.

• Specifiek model nemen voor een camera met pan-, tilt- en zoombewegingen. Dit kan er voor zorgen dat het filtersneller kan werken. Dit aangezien we nu 8 vrijheidsgraden nemen terwijl er eigenlijk maar 3 zijn. We moetendan het model beschreven in 3.1 implementeren.

20

Page 23: Afstudeerproject Bachelor Informatica Camera Egomotion ... › thesis › centraal › files › f1663790160.pdfAfstudeerproject Bachelor Informatica Camera Egomotion Filter voor Coach

Afstudeerproject Bachelor Informatica

Camera Egomotion Filter voor Coach

5 Resultaten

Het algoritme werkt voor alle video’s in ieder geval voor een gedeelte, behalve voor de zwemvideo. Dit hebben we alin het voorgaande hoofdstuk besproken waarom dit het geval is. Het filter geeft als resultaat altijd een 3 × 3 matrixwelke de in hoofdstuk 3.1 genoemde matrix Z voorstelt. Verder wordt het vlak dat gevolgd wordt aangegeven door eenrode omlijning en is er een voorbeeld assenstelsel in het groen. Deze laatste twee dingen zijn alleen ter verduidelijkingaangebracht en hebben verder geen nut. We zullen nu bespreken hoe we het filter op de testvideo’s hebben toegepasten in hoeverre dit goed werkt. We zullen bij een video, die van de turnster op de brug, dieper op de resultaten ingaan. Verder zullen we bespreken wat de snelheid van het filter is en de nauwkeurigheid.

5.1 Brug

We kijken dus naar de werking van het filter op de video van de turnster op de brug. We nemen het hele beeldbehalve de randen als template. Dit zorgt ervoor dat het filter zeer nauwkeurig, maar traag werkt. Er volgen nu eenaantal frames, met daarnaast het intensiteitsverschil tussen het template en het gevonden vlak. Hierin is duidelijkde beweging van de turnster te herkennen. Verder zal ik de perspectivische transformatie matrix Z onder elk framezetten.

Z0 =

0.999696 0.000068 0.0562880.000587 1.000373 −0.5681660.000002 0.000000 1.000000

Z30 =

0.999844 −0.002520 0.3114130.000132 1.000194 −0.9144950.000002 −0.000007 1.000000

21

Page 24: Afstudeerproject Bachelor Informatica Camera Egomotion ... › thesis › centraal › files › f1663790160.pdfAfstudeerproject Bachelor Informatica Camera Egomotion Filter voor Coach

Afstudeerproject Bachelor Informatica

Camera Egomotion Filter voor Coach

Z60 =

1.000538 −0.000041 0.303873−0.000654 1.004785 −2.3517410.000002 0.000009 1.000000

Z88 =

0.897153 −0.021567 51.113323−0.000301 0.896118 1.953129−0.000042 −0.000041 1.000000

Z90 =

0.935980 −0.007157 53.830406−0.003744 0.908634 1.0708250.000004 0.000095 1.000000

Als we naar deze resultaten kijken zien we als eerst dat we bij frame 0 niet een diagonaal matrix met alleen maar

1-en zien en ook het verschilplaatje niet grijs is. Dit is te verklaren omdat we met floats werken, dit zorgt ervoor datalle getallen niet helemaal precies zijn en daardoor krijgen we een afwijking. Deze afwijking wordt dan nog versterktdoordat we het algoritme meerdere malen uitvoeren.

Ten tweede zien we in alle plaatjes een zwartte en een witte turnster. De zwarte is de turnster in de template ende witte is de turnster in het huidige frame.

Als laatste kunnen we ook nog zien dat we bij frame 90 het vlak kwijt zijn. Dit is te zien er lichte en donkerevlekken in het plaatje zitten. We hebben dit probleem bij elke vlak keuze in deze video, dit komt omdat er op heteind zeer heftig wordt ingezoomd, hierdoor zijn de afgeleiden die we gebruiken niet meer toereikend om de bewegingvan het vlak te volgen.

22

Page 25: Afstudeerproject Bachelor Informatica Camera Egomotion ... › thesis › centraal › files › f1663790160.pdfAfstudeerproject Bachelor Informatica Camera Egomotion Filter voor Coach

Afstudeerproject Bachelor Informatica

Camera Egomotion Filter voor Coach

5.2 Schoonspringen

In de video van de schoonspringers werkt het filter zeer goed als er een deel van de achtergrond geselecteerd wordt.Alleen is er in deze video snel sprake van occlusie, aangezien de twee mannen door het beeld heen lopen. Verderbeweegt de camera ook heel erg van rechts naar links, hierdoor kan het geselecteerde vlak buiten het scherm komente liggen.

De oplossing voor deze problemen is steeds als het vlak niet meer gevolgd kan worden een nieuw vlak aan te wijzen.We kunnen dan toch de perspectivische vervormingsmatrix berekenen die ons de coordinaten van het eerste punt geeft.Dit komt door het gegeven dat Zj0 = ZjiZi0 Dit staat verder uitgelegt in hoofdstuk 3.1.

5.3 Gewichtheffen

In de video van de gewichthefster is het lastige, zoals al genoemd dat er weinig structuur is in de achtergrond.Hierdoor kunnen we niet een gedeelte van de achtergrond selecteren. Verder is er ook veel last van occlusie aangeziende gewichthefster zo groot mogelijk in beeld genomen is.

Als we hier nu bijna het gehele beeld als template nemen krijgen we een goed resultaat. Dit werkt alleen niet ergsnel aangezien dit veel punten zijn. Het filter geeft nu zeer redelijke waardes, het gaat alleen een klein beetje fout alsze het gewicht omhoog tilt. Dit komt omdat er dan erg veel beweging in het gevolgde vlak is.

5.4 Sprint

In de video van de sprinters werkt het filter op het eerste deel niet goed, dit komt doordat de baan en het gras ernaasteentonig zijn. Hierdoor kan het filter niks goed volgen, verder lopen de sprinters ook over de baan en hebben wedaardoor al snel last van occlusie.

Als we naar de finish gaan kijken hebben we meer hou vast. Hier is de baan niet meer eentonig, want er staancijfers op de baan, verder staan hier ook borden langs de baan. De filter doet nu wel goed zijn werk en volgt de finishlijn goed.

5.5 Vlinderslag

Hierop werkt het filter niet, dit hebben we al besproken in hoofdstuk 4.3.4.

5.6 Snelheid

We hebben dit filter getest op een 500 Mhz pc. Dit is lager dan de in de specificaties genoemde gewenste minimalesnelheid. Het filter liep hierop bij een template van 100 bij 100 pixels ongeveer 2 keer langzamer dan real-time. Dusals we een computer met een processor van 1000 Mhz nemen zal het filter ongeveer real-time werken bij een templatemet maximaal 10.000 punten.

Er moet dus eigenlijk nog iets in het filter gebouwd worden dat er voor zorgt dat er maar 10.000 punten gepaktworden en niet het aantal geselecteerde punten. Dit zorgt er dan voor dat hij op een computer die aan de eisen voldoetreal-time zal werken.

5.7 Naukeurigheid

Het filter werkt dus bij een template van 100 bij 100 real-time, maar werkt hij dan ook nog nauwkeurig genoeg. Wezullen dit bekijken aan de hand van een voorbeeld. We nemen de schoonspringersvideo. We selecteren hierin bij deafsprong een vierkant van 100 bij 100 in de links in het midden. We nemen dit vierkant, omdat dit de richting iswaarin de schoonspringers zich zullen bewegen.

23

Page 26: Afstudeerproject Bachelor Informatica Camera Egomotion ... › thesis › centraal › files › f1663790160.pdfAfstudeerproject Bachelor Informatica Camera Egomotion Filter voor Coach

Afstudeerproject Bachelor Informatica

Camera Egomotion Filter voor Coach

Als we 30 frames verder kijken zien we dat het vlak nog een redelijke schatting is. Hier onder zien we eerst hetresultaat van de intensiteit van de template min die van het huidige vlak. Er naast staat het echte beeld

Pas als de schoonspringers te ver door het vlak heen komen gaat het fout.

Het filter werkt dus goed bij een template van 100 bij 100 pixels. Wel moet er rekening mee gehouden dat hetfilter niet zal werken bij te snelle camerabewegingen. Het filter kan dan niet meer vinden welke kant de camera op isbewogen, dit komt doordat de afgeleiden die in M zijn opgeslagen dan niet meer toereikend zijn. Ook moet er gekekenworden of er niet te veel beweging door het gekozen vlak heen gaat. Hier door gaat het algoritme fouten maken.

24

Page 27: Afstudeerproject Bachelor Informatica Camera Egomotion ... › thesis › centraal › files › f1663790160.pdfAfstudeerproject Bachelor Informatica Camera Egomotion Filter voor Coach

Afstudeerproject Bachelor Informatica

Camera Egomotion Filter voor Coach

6 Conclusie

In deze scriptie hebben we laten zien hoe we de camerabewegingen van een stilstaande camera kunnen gaan volgen.Verder is dit geımplementeerd in DirectShow. De resultaten zijn zodanig dat het gebruikt zou kunnen worden in Coach.Wel moet er dan rekening meegehouden worden dat de gebruiker tussendoor aanpassingen moet kunnen maken. Ditis nodig omdat het filter niet perfect werkt en soms bijgestuurd zal moeten worden.

Aan de eisen die aan het filter gesteld zijn zijn tot op zekere hoogte voldaan. Het filter werkt voor een bepaaldaantal geselecteerde punten real-time en werkt dan ook nog in die mate nauwkeurig dat deze gebruikt zou kunnenworden. Alleen kan het filter niet zeer goed tegen occlusie, hiervoor zou dan ook nog een betere oplossing gezochtkunnen worden.

25

Page 28: Afstudeerproject Bachelor Informatica Camera Egomotion ... › thesis › centraal › files › f1663790160.pdfAfstudeerproject Bachelor Informatica Camera Egomotion Filter voor Coach

Afstudeerproject Bachelor Informatica

Camera Egomotion Filter voor Coach

Referenties

[1] G.D. Hager, P.N. Belhumeur, Efficient region tracking with parametric models of geometry and illumination IEEETransactions on Pattern Analisys and Machine Intelligence, Volume 10, No. 20, pp. 10251039, 1998

[2] J.M. Buenaposada, L. Baumela, Real-Time Tracking and Estimation of Plane Pose, 16 th International Conferenceon Pattern Recognition (ICPR’02) Volume 2 , pp. 20697 August 2002

[3] R.I. Hartley, Self-Calibration of Stationary Cameras, International Journal of Computer Vision, Volume 22, Issue1, Page 5 Februari 1997

[4] D. Liebowitz, A. Zisseerman, Metrix Rectification for perspective Images of Planes, Proceedings of the IEEEConference on Computer Vision and Pattern Recognition, 1998, pages 482-488 1998

[5] L. de Agapito, E. Hayman, I. Reid, Linear calibration of a rotating and zooming camera, Proceedings of the IEEEConference on Computer-Vision and Pattern Recognition Volume 1, pages 1015-1021 Juni 1999

[6] M.D. Pesce, Programming Microsoft DirectShow for Digital Video and Television, ISBN 0735618216, MicrosoftPress, April 2003

[7] M. Sonka, V. Hlavac, R. Boyle, Image Processing, Analysis and Machine Vision, ISBN 053495393, Thomson-Engineering, Second edition, 1999

[8] J.D. Foley, A. van Dam, S.K. Feiner, J.F. Huges, Computer Graphics: principles and practice, ISBN 0321210565,Addison-Wesley, Second edition, 1997

[9] J.M. Buenaposada, L.B. Molina, SSD-based plane tracking matlab toolbox,http://www.dia.fi.upm.es/∼lbaumela/FaceExpressionRecognition/download.html,

[10] Y. Chen, DirectShow Transform Filter AppWizard,http://www.ifp.uiuc.edu/∼chenyq/research/Utils/DShowFilterWiz/DShowFilterWiz.html, Sept. 6, 2001

26