StereoWiisie
Proefschrift voorgelegd op 24 Juni 2009 tot het behalen van de graad van Bachelor in de Wetenschappen, richting Informatica, bij de faculteit wetenschappen, aan de Universiteit Antwerpen.
Promotor: Prof. Dr. Frans Arickx (Universiteit Antwerpen) Co-Promotor: Prof. Dr. Philippe Bekaert (Universiteit Hasselt / Expertisecentrum voor Digitale Media) Begeleider: Tom Cuypers (Universiteit Hasselt / Expertisecentrum voor Digitale Media) Stijn Ligot en Tanja Van den Eede
Onderzoeksgroep Computationeel Modelleren en Programmeren
Dankwoord
Dit eindwerk zou niet tot stand gekomen zijn indien bepaalde mensen ons niet zo geholpen hadden. Daarom zouden we hier graag nog even de nadruk op leggen. Eerst en vooral willen we graag Prof. Dr. Frans Arickx bedanken voor het promoten van dit eindwerk. Vanaf het eerste moment waarop we ons idee voorlegde, was hij zeer gemotiveerd om ons te promoten voor dit eindwerk. Tom Cuypers, als begeleider van dit eindwerk, heeft ons vol enthousiasme door het voor ons nog onbekende pad begeleid. Met veel geduld stond hij steeds klaar om onze vragen te beantwoorden. Prof. Dr. Philippe Bekaert willen we bedanken, aangezien hij de toestemming heeft gegeven om ons eindwerk grotendeels op Universiteit Hasselt uit te werken. Hij heeft steeds de toestemming gegeven om de nodige hardware voor ons ter beschikking te stellen. Prof. Dr. Luc Claesen heeft de nodige hardware in elkaar geknutseld, waarvoor dank. Dit hield in dat Luc handig te gebruiken infra-rode LED pennetjes heeft gemaakt. Chris Hermans heeft ons geholpen om bepaalde theoretische aspecten in verband met camera kalibratie volledig te begrijpen. We zouden ook graag Dr. Peter Hellinckx bedanken, voor de interesse dat hij heeft voor dit eindwerk. Ook voor de praktische regelingen in verband met het eindwerk zouden we hem graag bedanken. Yannick, de vriend van Tanja, heeft het eindwerk meerdere malen nagelezen en wist Tanja steeds te motiveren op de moeilijke momenten. Johan Huysmans willen we bedanken, omdat hij veel nuttige opmerkingen heeft gegeven over de tekst van dit eindwerk. Verder willen we nog alle andere mensen die we niet specifiek vernoemd hebben zoals ouders, familie, vrienden,. . . bedanken. Mensen die het mogelijk maakten om telkens naar Diepenbeek te kunnen gaan en wie ons op welke manier dan ook geholpen hebben om dit eindwerk tot een goed einde te brengen willen we ook graag bedanken. 24 Juni 2009
Samenvatting In dit eindwerk wordt beschreven hoe de 3D positie van een infra-rode (IR) LED met behulp van twee Wii remotes bepaald kan worden. De aanwezigheid van meerdere knopjes, een luidspreker, een inertiële sensor, een infra-rood camera en de mogelijkheid om via Bluetooth met de Wii remote te communiceren, maken deze compacte controller multifunctioneel. De ingebouwde IR camera wordt in zijn originele context gebruikt om te bepalen naar waar de speler wijst op het televisie scherm. Een Wii remote heeft een horizontale viewangle van 33◦ en een verticale viewangle van 23◦ . Deze beperkte hoeken geven een beperkte oppervlakte welke zichtbaar is voor beide Wii remotes. De optimale horizontale positionering van twee Wii remotes zal bepaald worden, om zo optimaal gebruik te kunnen maken van dit beperkt zichtbaar oppervlak. In een opstelling waarbij meerdere camera’s gebruikt worden, moeten deze camera’s ten opzichte van elkaar gekalibreerd worden. Dit kalibreren zal uitvoerig bestudeerd worden voor het gebruik van twee Wii remotes. Een theoretische en praktische precisie analyse zal gemaakt worden, om na te gaan hoe precies deze Wii remotes daadwerkelijk zijn. Dit kunnen we mede in rekening brengen om een optimale positie van twee Wii remotes ten opzichte van elkaar te bepalen. De bepaling van de 3D positie van een infra-rode LED heeft tot drie applicaties geleid, zijnde 3D head tracking, de simulatie van een white board en een 3D scanner. Het idee van 3D head tracking is dat de positie van het hoofd ten opzichte van het scherm bepaald wordt. Hierbij worden de twee Wii remotes naast het computer scherm geplaatst en de infra-rode LED wordt op een pet op het hoofd bevestigd. Door de positie van deze infra-rode LED te bepalen kan de positie van het oogpunt in een 3D wereld aangepast worden, waardoor een realistisch 3D beeld verkregen wordt bij het bewegen van het hoofd. Een simulatie van een white board wordt gerealiseerd door de twee Wii remotes zodanig te plaatsen dat ze het schrijfbord volledig kunnen zien. Er wordt een infrarode LED geplaatst op een stift, welke steeds zichtbaar moet blijven voor beide Wii remotes. De 3D positie van de infra-rode LED wordt bepaald, waardoor hetgeen geschreven wordt, op een groot scherm kan afgebeeld worden en we dus een simulatie hebben van een white board. Bij originele Wii remotes is een infra-rood filter voor de camera geplaatst, zodat de controllers niet te veel last hebben van zichtbaar licht dat relatief veel infrarood licht bevat, zoals buitenlicht of licht van een kaars. Indien we deze infra-rood filter verwijderen, kunnen deze Wii remotes zichtbaar licht, van bijvoorbeeld een laserpointer, detecteren. Dit idee hebben we gebruikt om via een projector een bolletje te projecteren op een object. De 3D coördinaten van dit bolletje kunnen bepaald worden en zorgen voor een primitieve 3D scanner. Hoewel één enkele Wii remote reeds beschikbaar is vanaf e40, blijkt deze toch geschikt te zijn voor onze voorgestelde applicaties. Naar onze ervaring is de snelheid
2
en precisie voldoende en is het aansturen eenvoudig via Bluetooth en de aanwezige libraries.
Inhoudsopgave
1 Inleiding
7
2 Wii 2.1 Algemeen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 Toepassingen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9 9 10
3 Kalibratie en Triangulatie 3.1 Wiskundig camera model . . . . . . 3.2 Camera kalibratie . . . . . . . . . . . 3.2.1 Epipolaire geometrie . . . . . 3.2.2 8 point . . . . . . . . . . . . . 3.2.3 7 point . . . . . . . . . . . . . 3.2.4 RANSAC . . . . . . . . . . . 3.2.5 Bepalen van projectiematrices 3.3 Triangulatie . . . . . . . . . . . . . .
. . . . . . . .
13 13 16 16 17 18 19 20 22
4 Implementatie 4.1 Kalibratie . . . . . . . . 4.2 Triangulatie . . . . . . . 4.3 Applicaties . . . . . . . 4.3.1 3D head tracking 4.3.2 White board . . 4.3.3 3D scanning . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
25 25 26 26 26 26 28
5 Resultaten 5.1 Maximaal bereik voor twee Wii remotes 5.1.1 Geval 1 . . . . . . . . . . . . . . 5.1.2 Geval 2 . . . . . . . . . . . . . . 5.1.3 Concrete voorbeelden . . . . . . 5.2 Precisie . . . . . . . . . . . . . . . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
31 31 33 34 38 38
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
4
INHOUDSOPGAVE
5.3 5.4
5.2.1 Praktisch . . . . . . . . . . . . 5.2.2 Theoretisch . . . . . . . . . . . 5.2.3 Vergelijking praktijk en theorie Kalibratie . . . . . . . . . . . . . . . . Applicaties . . . . . . . . . . . . . . . 5.4.1 3D head tracking . . . . . . . . 5.4.2 White board . . . . . . . . . . 5.4.3 3D scanning . . . . . . . . . . .
6 Conclusie
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
40 40 42 42 43 43 43 44 45
Lijst van figuren
2.1 2.2 2.3
Wii console. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Applicaties van Johnny Chung Lee. . . . . . . . . . . . . . . . . . . . Opvouwbare displays. . . . . . . . . . . . . . . . . . . . . . . . . . .
9 11 11
3.1 3.2 3.3 3.4 3.5
Pinhole model. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Schematische voorstelling van de werking van het oog. . . . . . . . . Epipolaire geometrie. . . . . . . . . . . . . . . . . . . . . . . . . . . . Mapping punt en epipolaire lijn. . . . . . . . . . . . . . . . . . . . . Vier mogelijke oplossingen voor een gekalibreerde reconstructie voor een 3D punt X. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Triangulatie. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Error bij triangulatie welke gereduceerd wordt door het midpoint algoritme. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Optimaal algoritme om de error te reduceren bij triangulatie. . . . .
14 14 17 18
3.6 3.7 3.8 4.1 4.2 4.3 4.4 4.5
5.1 5.2 5.3 5.4
2D vs 3D head tracking. . . . . . . . . . . . . . . . . . . . . . . . . . De nodige hardware om 3D head tracking te realiseren. . . . . . . . . Een setup en het resultaat van een white board simulatie. . . . . . . Een Wii remote waarbij de infra-rood filter verwijderd is. . . . . . . Een setup van de 3D scanner waarbij een tas en een isomo bol worden ingescand. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Kijkhoek en gezichtsveld van twee Wii remotes, waarbij a en b de hoeken zijn ten opzichte van een televisiescherm. . . . . . . . . . . . Geval welke we niet beschouwen waarbij a, b < 0◦ . . . . . . . . . . . . Basis geval waarbij alle snijpunten S1 , S2 , S3 , S4 zichtbaar zijn voor ◦ beide Wii remotes en waarvoor geldt dat 0◦ < a, b < 90◦ − 332 . . . . Geval waarbij eventueel niet alle snijpunten S1 , S2 , S3 , S4 zichtbaar ◦ zijn voor beide Wii remotes en 0◦ < a, b < 90◦ − 332 . . . . . . . . . .
21 22 23 23 27 27 28 29 29
32 32 33 35
6
LIJST VAN FIGUREN
5.5 5.6 5.7 5.8 5.9 5.10 5.11 5.12 5.13 5.14 5.15 5.16
Geval waarbij niet alle snijpunten S1 , S2 , S3 , S4 zichtbaar zijn voor ◦ ◦ beide Wii remotes en 90◦ − 332 ≤ a of b < 180◦ − 332 . . . . . . . . . Geval waarbij niet alle snijpunten S1 , S2 , S3 , S4 zichtbaar zijn voor ◦ beide Wii remotes en 0◦ < a, b < 90◦ − 332 . . . . . . . . . . . . . . . Geval waarbij niet alle snijpunten S1 , S2 , S3 , S4 zichtbaar zijn voor ◦ beide Wii remotes en 0◦ < a, b < 90◦ − 332 . . . . . . . . . . . . . . . Geval waarbij niet alle snijpunten S1 , S2 , S3 , S4 zichtbaar zijn voor ◦ beide Wii remotes en 0◦ < a, b < 90◦ − 332 . . . . . . . . . . . . . . . Zichtbare oppervlakte voor twee Wii remotes. . . . . . . . . . . . . . Algemeen spectrum van golflengtes voor licht. . . . . . . . . . . . . . Histogram voor de afstand tussen twee infra-rode LEDs. . . . . . . . Opgedeelde gezichtsveld van twee Wii remotes. . . . . . . . . . . . . Het bewegen van twee IR LEDs op een vaste afstand van elkaar. . . Resultaat 3D head tracking. . . . . . . . . . . . . . . . . . . . . . . . Resultaat white board. . . . . . . . . . . . . . . . . . . . . . . . . . . Resultaat 3D scanning. . . . . . . . . . . . . . . . . . . . . . . . . . .
35 36 37 37 39 40 41 41 42 43 44 44
HOOFDSTUK
1
Inleiding
In de loop der tijd zijn game consoles meer en meer een must in de woonkamer geworden. Een evolutie kwam er toch met de Nintendo Wii, aangezien dit nieuwe perspectieven opende voor de manier van spelbeleving. Het grootste verschil met vorige spelcomputers is dat de Wii een speciale controller bevat. Deze Wii controller (remote) bevat een accelerometer, een IR camera, een luidspreker, verschillende knopjes, . . . Deze accelerometer wordt gebruikt om de relatieve positie van de Wii remote te bepalen, zoals bijvoorbeeld bij het gebruik van een Wii remote als tennisraket. De IR camera wordt gebruikt om de positie van de IR sensorbar te bepalen en zo dus de absolute positie van de Wii remote te bepalen. Indien deze absolute positie gekend is, kan de Wii remote als pointer gebruikt worden, waardoor bijvoorbeeld first person shooter games realistischer worden. De eigenschappen van deze Wii remote zorgen voor een meer realistische spelbeleving. Het idee achter de Wii hebben wij in de omgekeerde richting gebruikt. Dit houdt in dat we bewegende infra-rode LEDs en stilstaande Wii remotes hebben. Het idee van dit eindwerk is dat we de 3D positie van een infra-rode LED met behulp van twee Wii remotes gaan bepalen. Er werden drie applicaties uitgewerkt: 3D head tracking, een white board simulatie en een 3D scanner. Bij 3D head tracking wordt de positie van het hoofd ten opzichte van een scherm bepaald. Hierdoor wordt het beeld, verkregen door uit het raam te kijken, gesimuleerd. Johnny Chung Lee [8] heeft 2D head tracking gerealiseerd door middel van één Wii remote en twee infra-rode LEDs. Het nadeel van het werken met slechts één Wii remote is dat het hoofd parallel moet blijven met het scherm, wat niet praktisch is. In dit werk wordt dit probleem opgelost doordat we de werkelijke 3D positie kennen van de infra-rode LED. Voor het simuleren van een white board werden twee Wii remotes zodanig geplaatst dat zij de pen, waar een IR LED aan bevestigd is, constant kunnen zien. Er wordt een virtuele kopie van de geschreven tekst op het scherm getoond. Een white board simulatie is mogelijk met één enkele Wii remote. Hierbij moet deze Wii
8
remote zodanig geplaatst worden dat deze het volledige scherm kan waarnemen. Dit kan voor vele occlusies zorgen doordat het hand, of andere delen van het lichaam, eventueel het zicht van deze Wii remote kan blokkeren. Onze methode is minder gevoelig voor dit type van problemen. Een laatste toepassing van dit eindwerk is een eenvoudige 3D scanner. Hierbij wordt een object ingescand en kan een 3D reconstructie gegenereerd worden. Dit wordt gerealiseerd door de IR filters te verwijderen van twee Wii remotes. Hierdoor kunnen deze Wii remotes een deel van het zichtbaar licht detecteren, waardoor een gewone projector gebruikt kan worden om een fel wit bolletje over het hele object te laten lopen. Dit bolletje kan waargenomen worden door beide Wii remotes en zo kan een 3D reconstructie bepaald worden. 3D scanners hebben meestal een prijzige opstelling, door de verschillende dure camera’s. Onze primitieve 3D scanner heeft een zeer goedkope opstelling en geeft plausibele resultaten. Onze opstelling, bestaande uit twee Wii remotes en één IR LED, heeft verschillende positieve aspecten. Een eerste positief aspect is dat deze opstelling grotendeels aanwezig is in de meeste gezinnen. In juni 2008 werd er al gezegd dat er al ruim dertig miljoen exemplaren van de Wii verkocht zouden zijn [8]. Dit is één van de redenen waarom wij voor deze opstelling gekozen hebben en bijvoorbeeld niet voor een opstelling met dure videocamera’s. Een tweede belangrijk voordeel is dat de communicatie met de Wii remote volledig draadloos gebeurt. Voor ons doel zijn de beperkingen, zoals bijvoorbeeld de beperkte afstand tussen de Wii remote en de computer of het aantal Hertz (100Hz) waarmee de Wii remote informatie doorstuurt, niet doorslaggevend en is dit voldoende voor onze voorgestelde toepassingen. In het eerstvolgende hoofdstuk gaan we meer uitleg geven over de werking van de Nintendo Wii. Vervolgens leggen we een theoretische basis voor dit eindwerk, waarbij het door ons gebruikte wiskundig camera model, kalibratie en triangulatie wordt uitgelegd. Nadien zal de implementatie van de kalibratie, triangulatie en de applicaties toegelicht worden. Tot slot zullen de bekomen resultaten besproken worden. In dit laatste hoofdstuk wordt het maximaal bereik voor twee Wii remotes en de praktische en theoretische precisie berekend. Nadien zullen de resultaten van de kalibratie en de applicaties kort toegelicht worden.
HOOFDSTUK
2
Wii
In dit hoofdstuk wordt eerst een algemene bespreking over de Wii console gegeven. Nadien zullen enkele toepassingen met deze veelzijdige spelcomputer besproken worden.
2.1 Algemeen De Wii is één van de spelcomputers van Nintendo, zoals in figuur 2.1 gezien kan worden. De spellen op de Wii, worden bestuurd aan de hand van Wii remotes. Deze Wii remotes zien eruit als een eenvoudige afstandsbediening, maar bevatten veel meer functionaliteit. Deze controller is een draadloos toestel, welke een luidspreker, toetsen, een accelerometer en een IR camera bevat. Deze accelerometer zorgt ervoor dat de relatieve positie van de controller bepaald kan worden. De IR camera heeft
Figuur 2.1: Wii console. (Bron:[13])
10
2.2. TOEPASSINGEN
een resolutie van 128 × 96, welke door 8× subpixel analyse geupsampled wordt tot een resolutie van 1024 × 768. Deze IR camera heeft een sampling rate van 100 − 120 Hz.
2.2 Toepassingen Dankzij de veelzijdigheid van deze compacte controllers, hebben veel mensen al geëxperimenteerd met deze Wii remotes. Johnny Chung Lee [8] is een pionier die zich bezig houdt met het experimenteren met deze multifunctionele hardware. Zo heeft hij vier toepassingen ontwikkeld met deze controller, namelijk 2D head tracking, het tracken van vingers, een interactief white board en het projecteren van beelden op opvouwbare oppervlakten. 2D head tracking wordt gerealiseerd doordat één enkele Wii remote de coördinaten van twee infra-rode LEDs opneemt. Hierbij wordt het middelpunt tussen deze twee IR LEDs bepaald, waardoor een goede benadering van de positie van het hoofd verkregen wordt. De afstand van het hoofd ten opzichte van het scherm wordt bepaald door de afstand tussen beide IR LEDs te beschouwen. De waargenomen afstand verkleint indien men het hoofd verder verwijdert van het scherm. Een nadeel van deze toepassing is echter dat bij het draaien van het hoofd, bijvoorbeeld van links naar rechts, de waargenomen afstand tussen de twee LEDs kleiner wordt, en dit hetzelfde gesimuleerd wordt als het snel verwijderen van het scherm. Een volgende toepassing is het tracken van vingers. Hierbij wordt een raster van infra-rode LEDs en één enkele Wii remote op een televisiescherm geplaatst. Dit raster van LEDs schijnt infra-rood licht op de vingers, welke dit infra-rood licht reflecteert, welke de Wii remote kan detecteren. Een verbetering is het plaatsen van reflecterende tape op de vingers, waardoor de vingers verder van de Wii remote verwijderd kunnen worden en nog steeds getrackt kunnen worden. Het simuleren van een interactief whiteboard is een derde toepassing. Hierbij worden één of twee infra-rode LEDs gebruikt voor het besturen van applicaties via een white board. Een voorstelling van bovenstaande toepassingen kan gevonden worden in figuur 2.2. Johnny Chung Lee heeft vele papers geschreven [8], maar slechts één in verband met de Wii remote [5]. Deze paper gaat over een projector prototype, welke in staat is om beelden van infra-rood of zichtbaar licht te tonen [5]. Een toepassing van deze paper is het weergeven van informatie op opvouwbare objecten. Aan deze objecten worden infra-rode LEDs bevestigd, zodat de Wii remote de positie van dit display kan bepalen. Voorbeelden van opvouwbare displays kunnen gevonden worden in figuur 2.3. Veel voorkomende toepassingen met de Wii remote zijn interactieve white boards, tracking van vingers of hoofd en het simuleren van verschillende muziekinstrumenten. Bij deze laatste categorie zijn enkele bijzondere toepassingen zoals bijvoorbeeld de simulatie van een harp, een gitaar, een triangel en drums. Veel van deze toepassingen
2.2. TOEPASSINGEN
11
Figuur 2.2: Applicaties van Johnny Chung Lee [8]. Linksboven de opstelling voor een whiteboard, linksonder een opstelling voor finger tracking, rechtsboven een opstelling voor het plaatsen van de sensorbar bij het televisiescherm, en rechtsonder een opstelling voor 2D head tracking. (Bron : [12])
Figuur 2.3: Enkele voorbeelden van opvouwbare displays, waar dankzij vier IR LEDs en één Wii remote beelden op geprojecteerd kunnen worden. (Bron : [8])
12
2.2. TOEPASSINGEN
kunnen gevonden worden op de website van Wiimote Project [10].
HOOFDSTUK
3
Kalibratie en Triangulatie
In dit hoofdstuk wordt eerst het door ons gebruikte wiskundige camera model toegelicht. Nadien wordt de theoretische kant van camera kalibratie en nadien triangulatie uitgelegd.
3.1 Wiskundig camera model Indien er door een camera een beeld van de wereld wordt gemaakt, gebeurt er een perspectieve projectie van de 3D wereld naar een 2D foto. Een wiskundig model om dit voor te stellen is het frontale Pinhole model. Op figuur 3.1 kan een voorstelling gevonden worden van dit perspectief model. Op figuur 3.1 wordt een camera C voorgesteld in de ruimte, welke ook wel het optisch centrum wordt genoemd. Mede wordt ook het retinaal vlak R, welke C niet bevat, getoond. Dit is het vlak waarop de 3D wereldpunten door de camera worden geprojecteerd. De loodrechte afstand tussen C en R wordt de focusafstand f genoemd. De loodlijn vanuit C op R wordt optische as genoemd, waarbij het punt c het cameracentrum wordt genoemd. Het beeldpunt x van het 3D wereldpunt X, dat door de camera wordt opgenomen, wordt door een puntprojectie vanuit C op R bekomen. We veronderstellen dat het retinaal vlak tussen de camera en de gefotografeerde wereld ligt, zodat we van het frontale pinhole model kunnen spreken. Indien het retinaal vlak achter de camera ligt (zoals bij de werking van het oog), krijgen we een wereld die gepuntspiegeld is, wat voor ons geen voordelen biedt. Een voorstelling van de werking van het oog kan gevonden worden in figuur 3.2. De wereldpunten worden in een orthonormaal assenstelsel (X, Y, Z) voorgesteld en de beeldpunten in pixelcoördinaten (u, v). Laten we nu de beeldpunten in standaardbeeldcoördinaten (us , vs ) uitdrukken zodat we in R ten opzichte van een or-
14
3.1. WISKUNDIG CAMERA MODEL
Figuur 3.1: Pinhole model, waarbij een camera C, een wereldpunt X, het beeldpunt x, het cameracentrum c en het retinaal vlak R in de ruimte worden voorgesteld.
Figuur 3.2: Schematische voorstelling van de werking van het oog. (Bron : [1])
3.1. WISKUNDIG CAMERA MODEL
15
thonormaal assenstelsel werken. Hierbij gaan we er vanuit dat de us -as evenwijdig ligt met de u-as en vs evenwijdig met v, waarbij de oorsprong in c gelegen is. Verder kunnen we dan de standaardcameracoördinaten (Xs , Ys , Zs ) in de 3D wereld invoeren, waarbij C als oorsprong gekozen wordt. Hierbij wordt de xs -as evenwijdig met de us -as en de ys -as evenwijdig met de vs -as gekozen. Waardoor de zs -as met de optische as samen valt. Indien we dit alles in rekening brengen, is het mogelijk om de puntprojectie voor deze eerste Wii remote voor te stellen als een eenvoudige matrixvermenigvuldiging:
x u u ρ× v =P × z 1 1
(3.1)
waarbij P een 3 × 4 projectiematrix is. ρ is afhankelijk van de diepte van X. Hierdoor is het intuïtiever om x en X door middel van homogene coördinaten voor te stellen. We verkrijgen dus volgende notatie: e = (U, V, S)T x
(3.2)
e = (X, Y, Z, T )T X
(3.3)
en
waardoor we volgende vergelijking krijgen: e e=P ×X x
(3.4)
Indien we nu x in homogene standaardcoördinaten xs en het wereldpunt X in homogene cameracoördinaten beschrijven, zal de projectiematrix er zeer eenvoudig uitzien:
1 0 0 0 P = 0 1 0 0 0 0 1 0
(3.5)
indien we de focusafstand gelijk aan één stellen. Indien we P daadwerkelijk willen gebruiken, moeten we deze voorvermenigvuldigen met K. Hierbij wordt K ook wel de interne kalibratiematrix genoemd, welke er als volgt uit ziet: fu s u0 K = 0 fv v0 (3.6) 0 0 1 fu is hierbij de focusafstand in horizontale pixels, fv de focusafstand in verticale pixels, (u0 , v0 ) de pixelcoördinaten van het hoofdpunt c en s = cotg(α) × fv de scheefheid welke gelijk is aan nul bij rechthoekige pixels.
16
3.2. CAMERA KALIBRATIE
3.2 Camera kalibratie Bij het simultaan gebruik van meerdere Wii remotes is het belangrijk dat de positie en de richting van de verschillende Wii remotes gekend is zodat de afzonderlijke beelden op elkaar gemapt kunnen worden. Deze onderling positiebepaling en de richtingbepaling van de camera’s wordt camera kalibratie genoemd. Stel nu dat de wereldpunten in een algemeen assenstelsel gegeven zijn en de beeldpunten in pixelcoördinaten, dan neemt de projectiematrix P zijn meest algemene vorm aan. Het bepalen van deze P wordt het kalibreren van de camera genoemd. We kunnen nu onze projectiematrix ontbinden als volgt: P = [R|t], waarbij R een rotatiematrix en t een kolomvector van lengte drie is. Om de juiste camerapositie te hebben ten opzichte van het referentiestelsel moeten we P berekenen. In onze opstelling gaan we twee Wii remotes gebruiken, welke ten opzichte van elkaar gekalibreerd moeten worden. Een goede benadering voor de kalibratiematrix KW ii voor een Wii remote [7] ziet er als volgt uit:
KW ii
1280 0 512 1280 384 = 0 0 0 1
(3.7)
In het algemene geval zouden we KW ii1 en KW ii2 hebben, maar in ons geval zijn deze gelijk, en noteren we deze als KW ii . We kiezen de eerste Wii remote als oorsprong waardoor de projectiematrix voor deze camera er als volgt uit ziet:
1 0 0 0 P = 0 1 0 0 0 0 1 0
(3.8)
Nu rest ons nog het bepalen van de tweede projectiematrix P 0 . Dit is minder vanzelfsprekend als de eerste projectiematrix, en we hebben de methode gebaseerd op een methode uit het boek van Zisserman en Hartley [4]. Voordat er verder gegaan kan worden, moeten we eerst wat vertellen over epipolaire geometrie.
3.2.1 Epipolaire geometrie Op figuur 3.3 worden twee camera’s in de wereld voorgesteld door C en C 0 , het wereldpunt X en de projecties van dit punt x en x0 in de overeenkomstige retinale vlakken R en R0 . Indien we C en C 0 verbinden met een lijn, snijdt deze lijn in de retinale vlakken van beide camera’s. Deze snijpunten noemen we epipolen e en e0 . Het epipolaire vlak is het vlak door het wereldpunt X en de epipolen e en e0 . De epipolaire lijnen l en l0 zijn de snijlijnen van het epipolaire vlak, met de retinale vlakken van beide camera’s. Indien we twee overeenkomstige beelden hebben, afkomstig van twee verschillende camera’s, zal één punt x in het ene beeld, overeenkomen met een epipolaire lijn l0 in het andere beeld, zoals gezien kan worden in figuur 3.4. Hierdoor verkrijgen we dus een mapping tussen een punt en een epipolaire lijn: x → l0 . Deze mapping is een
3.2. CAMERA KALIBRATIE
17
Figuur 3.3: Basisidee van epipolaire geometrie, waarbij twee camera’s C en C 0 het wereldpunt X waarnemen. x en x0 zijn de twee beeldpunten van X in de retinale vlakken R en R0 van beide camera’s C en C 0 . De overeenkomstige epipolen e en e0 , het epipolaire vlak en de epipolaire lijnen l en l0 worden ook weergegeven. projectieve mapping van punten op lijnen, welke voorgesteld kan worden door een matrix F , welke de fundamentele matrix genoemd wordt. De meest elementaire eigenschap waar de fundamentele matrix aan voldoet, is dat de vergelijking x0T F x = 0 waarbij x en x0 corresponderende punten zijn uit de twee verschillende beelden, geldt. Dit kan eenvoudig ingezien worden. Stel dat x en x0 met elkaar overeenkomen, dan ligt x0 op de epipolaire lijn l0 , welke overeenkomt met xF . In het boek van Hartley en Zisserman [4] wordt volgende notatie gebruikt: een punt x = (x, y)T ligt op een lijn l = (a, b, c)T ⇔ ax + by + c = 0. Dit wordt genoteerd als het inwendig product tussen twee vectoren (x, y, 1)T (a, b, c)T = (x, y, 1)l = 0. Kort kunnen we dit noteren als xT l = 0. Om de notatie van het snijpunt tussen twee rechten uit te leggen, gaan we als volgt te werk. Stel we hebben twee lijnen l en l0 . Zij de vector x = l × l0 . Indien we nu kijken naar l(l × l0 ) = l0 (l × l0 ) = 0, kunnen we hieruit afleiden dat: lT x = l0T x = 0. Hieruit kunnen we concluderen dat het punt x op beide lijnen l en l0 ligt. Dus kunnen we het snijpunt van l en l0 noteren als x = l × l0 . Indien we bovenstaande notatie gebruiken, krijgen we volgende vergelijking: 0 = x0T l0 = x0T F x
(3.9)
Stel nu omgekeerd dat beeldpunten x en x0 voldoen aan de vergelijking 0 = x0T F x
(3.10)
dan wil dit zeggen dat de lijnen, gedefiniëerd door deze punten, coplanair zijn. Dit is juist de eis om corresponderende punten te zijn. Deze fundamentele matrix F kan bepaald worden op verschillende manieren, namelijk 8 point, 7 point en RANSAC waar we hieronder dieper zullen op ingaan.
3.2.2 8 point De fundamentele matrix is een 3×3 matrix en is op een veelvoud na bepaald. Hieruit volgt dat er acht vergelijkingen nodig zijn om een unieke oplossing voor F te vinden. We kunnen namelijk de vergelijking x0T F x = 0
(3.11)
18
3.2. CAMERA KALIBRATIE
Figuur 3.4: Mapping van een punt x in het ene retinaal vlak R met een epipolaire lijn l0 in het andere retinaal vlak R0 . als volgt schrijven: h
x1 x2 y1 x2 x2 x1 y2 y1 y2 y2 x1 y1 1
i
f =0
(3.12)
waarbij x=
h
x1 y1 1
x0 =
h
x 2 y2 1
iT
(3.13)
iT
(3.14)
en f=
h
F11 F12 F13 F21 F22 F23 F31 F32 F33
iT
(3.15)
Indien we dit nu doen voor acht punten en deze acht overeenkomstige vectoren h
x1 x2 y1 x2 x2 x1 y2 y1 y2 y2 x1 y1 1
i
(3.16)
in een matrix A steken krijgen we volgende vergelijking: Af = 0
(3.17)
Dit wil zeggen dat A een oplossing is van een homogene lineaire vergelijking. Dit kan op zijn beurt opgelost worden door Singular Value Decomposition (SVD) toe te passen op A. Het resultaat van SVD geeft dat A = U SV T , waarbij U en V orthonormale matrices en S een diagonaalmatrix zijn. De diagonaal van S bevat singuliere waarden σi van A. Deze singuliere waarden zijn positief en zitten in dalende volgorde op de diagonaal van S. In ons geval is σ9 = 0 wegens de aanwezigheid van acht vergelijkingen en negen onbekenden, waardoor we weten dat de oplossing voor deze vergelijking gelijk is aan de laatste kolom van V . Dan rest ons alleen nog het invullen van de elementen van de matrix F .
3.2.3 7 point De fundamentele matrix F heeft maar zeven vrijheidsgraden, dus is het voldoende om over zeven punten te beschikken. Deze matrix F is een 3 × 3 homogene matrix, wat wil zeggen dat schaling niet belangrijk is en dus slechts acht vrijheidsgraden
3.2. CAMERA KALIBRATIE
19
heeft. F voldoet ook aan det F = 0, wegens het feit dat F rang twee heeft en blijven er dus slechts zeven vrijheidsgraden over. In dit geval zouden we dan een niet-lineaire vergelijkingen moeten oplossen. Om dit te vermijden kunnen we de eigenschap van F gebruiken dat deze rang twee heeft. Hier kunnen we dezelfde redenering maken als bij het 8 point algoritme, met het verschil dat hier de rechter nul ruimte van de lineare vergelijkingen van de corresponderende punten, gekarakteriseerd kan worden door v1 + λv2 of F1 + λF2
(3.18)
waarbij v1 en v2 de twee laatste kolommen zijn van V , verkregen uit SVD. Indien we de beperking in rekening brengen dat F rang twee heeft, krijgen we: det(F1 + λF2 ) = a3 λ3 + a2 λ2 + a1 λ + a0 = 0
(3.19)
Indien we deze vergelijking oplossen, zullen we steeds één, twee of drie oplossingen hebben. Wanneer er meer dan één oplossing gevonden wordt, zijn er meer punten nodig om de juiste fundamentele matrix te vinden.
3.2.4 RANSAC Een laatste en robuustere methode is RANSAC (RAndom SAmple Consensus) [3], wat een iteratieve methode is om een benadering te vinden voor gezochte paramaters, uit geobserveerde data. Dit gaat als volgt te werk: 1. selecteer random n mogelijke inliers. 2. neem een datapunt, welke niet in de random geselecteerde mogelijke inliers zit 3. meet hoe goed het datapunt past in het model a.d.h.v. de error 4. indien de error voldoende klein is, voeg dit datapunt dan toe aan een verzameling met goede datapunten 5. herhaal dit voor elk ander datapunt dat geen mogelijke inlier was Indien het aantal goede datapunten voldoende groot is, dan heb je een goed model gevonden. Bovenstaande stappen kunnen herhaald worden, om zo eventueel een beter model te verkrijgen. Inputparameters die bij deze methode gebruikt worden zijn: de geobserveerde data, een model dat gefit kan worden op data, een minimum aantal data dat het model moet passen, het maximum iteraties toegestaan in het algoritme, een error drempelwaarde en een aantal datapunten, zodat het model als goed beschouwd wordt. De geobserveerde data stelt dan in ons geval de 2D coördinaten in de twee verschillende views voor. Waarbij we het model x0 F x = 0 nemen. Dus indien voldoende 2D coördinaten voldoen aan deze vergelijking, dan hebben we F gevonden.
20
3.2. CAMERA KALIBRATIE
3.2.5 Bepalen van projectiematrices Indien we deze fundamentele matrix bepaald hebben, kunnen we de tweede projectiematrix bepalen. Dit doen we door eerst en vooral SVD toe te passen op de essentiële matrix E. Deze matrix E, wordt berekend als volgt: E = K T F K. SVD is een methode om van een matrix een decompositie te maken in de vorm van U V W ∗ , waarbij U een unitaire matrix, V een diagonaal matrix en W ∗ de geconjugeerde getransponeerde matrix van W is. We kunnen nu veronderstellen dat de decompositie van E er als volgt uit ziet: U diag(1, 1, 0)V T . Indien de eerste projectiematrix P = [I|0], kunnen we aantonen dat er vier mogelijkheden zijn voor de tweede projectiematrix P 0 [4]. Namelijk: P 0 = [U W V T |u3 ] P 0 = [U W V T | − u3 ]
(3.20)
P 0 = [U W T V T |u3 ] P 0 = [U W T V T | − u3 ]
(3.21)
waarbij
0 −1 0 W = 1 0 0 0 0 1
(3.22)
u3 = U (0, 0, 1)T
(3.23)
en
De gevonden projectiematrices uit vergelijking 3.20 hebben een translatievector in de tegengestelde richting. Het verschil tussen de eerst gevonden projectiematrix uit vergelijking 3.20 en de eerst gevonden projectiematrix uit vergelijking 3.21 is minder duidelijk. Aangezien " T
[U W V
T
| u3 ] = [U W V
T
| u3 ]
#
UWT WT V T 1
(3.24)
en U W T W T V T = V diag(−1, −1, 1)V T
(3.25)
welke een rotatie is over 180◦ over de lijn welke door beide camera centra gaat. Indien we dit nu grafisch voorstellen zoals in figuur 3.5, kan je zien dat er maar in één geval het gereconstrueerde punt X zichtbaar is voor beide camera’s A en B. Nu is het de bedoeling die ene projectiematrix te nemen waarbij het punt zichtbaar was voor beide camera’s. Dit kunnen we doen door de diepte te bepalen van het punt, afhankelijk van de projectiematrix. Indien deze diepte positief is voor beide camera’s, dan is dit punt zichtbaar voor beide camera’s en is dit de goede projectiematrix. Indien uiteindelijk beide projectiematrices gevonden zijn, kunnen we aan de triangulatie beginnen.
3.2. CAMERA KALIBRATIE
21
Figuur 3.5: De vier mogelijke oplossingen voor een gekalibreerde reconstructie voor een 3D punt X. Hierbij ligt het verschil tussen (a), (b) en (c), (d) een tegengestelde translatie van de camera B. Het verschil tussen (a), (c) en (b), (d) is een rotatie van 180◦ van de camera B over de basislijn tussen A en B.
22
3.3. TRIANGULATIE
Figuur 3.6: Basisprincipe van triangulatie waarbij twee camera’s een 3D wereld waarnemen, welke geprojecteerd wordt op hun retinaal vlak. Uit deze 2D informatie wordt de oorspronkelijke 3D informatie terug berekend.
3.3 Triangulatie Het doel van triangulatie is, gegeven 2D coördinaten van twee verschillende views, de oorspronkelijke 3D coördinaten te bepalen, zoals gezien kan worden in figuur 3.6. Het idee hier achter is dat we de inverse projectie respectievelijk P −1 en P 0−1 van beide Wii remotes, gaan toepassen op de 2D coördinaten x en x0 . Deze inverse projecties zorgen dan samen voor twee lijnen in 3D. Deze lijnen zouden in theorie moeten snijden, en zouden zo de 3D coördinaten van het snijpunt kunnen bepaald worden, welke dan het originele 3D punt zou moeten zijn. Maar wegens verschillende soorten afwijkingen ten opzichte van het theoretische model, zoals bijvoorbeeld door lens distortie of een punt detectie error, zullen deze twee lijnen niet altijd snijden, zoals geschetst in figuur 3.7. Hierbij liggen X en X 0 ergens op de lijnen die verkregen werden door de inverse projectie. Een mogelijke oplossing om deze error te reduceren is de middelpunt methode [4]. Deze methode neemt de minimale afstand tussen de twee lijnen, en bepaal daar het middelpunt tussen de twee lijnen, zoals in figuur 3.7. Dit zal een relatief goede benadering geven voor het gezochte 3D punt. De optimale oplossing is weergegeven in figuur 3.8. Stel dat we het epipolair vlak gegeven hebben. Nu zoeken we het optimale 3D punt X voor de 2D punten x1 en x01 . Deze oplossing wordt bepaald door de minimale afstand te kiezen tussen deze geprojecteerde punten x1 en x01 tot de epipolaire lijnen l en l0 . Deze methode garandeert de minimale reprojectie error [4]. Het nadeel van deze optimale methode is dat zij veel rekenintensiever dan de eerder voorgestelde middelpunt methode is.
3.3. TRIANGULATIE
23
Figuur 3.7: Error bij triangulatie welke gereduceerd wordt door het midpoint algoritme.
Figuur 3.8: Optimaal algoritme voor triangulatie waarbij een minimale reprojectie error gegarandeerd wordt.
24
3.3. TRIANGULATIE
HOOFDSTUK
4
Implementatie
In dit onderdeel bespreken we eerst de implementatie van de kalibratie van twee Wii remotes, nadien de implementatie van triangulatie en tot slot de geïmplementeerde toepassingen, namelijk 3D head tracking, white board simulatie en 3D scanner.
4.1 Kalibratie Voordat 3D head tracking, een white board simulatie of 3D scanning kan plaatsvinden, moeten de Wii remotes eerst ten opzichte van elkaar gekalibreerd worden. Dit proces bevat twee belangrijke stappen: het bepalen van de fundamentele matrix en het bepalen van de twee projectie matrices. De kalibratie werd volledig in Matlab geïmplementeerd. Er wordt gebruik gemaakt van de library VGG MultiView Compute Library van Peter Kovesi [6]. De volledige code werd door ons via Matlab gecompileerd naar onze C++ library wiist. Hierdoor hoeft Matlab niet te draaien om onze library te gebruiken en kunnen we deze code in C++ gebruiken. Beide Wii remotes moeten minimum acht punten opnemen, welke voor beide Wii remotes zichtbaar zijn, om te kalibreren. Hoe meer punten er worden opgenomen, hoe beter de kalibratie. Bij onze software worden standaard vijfhonderd punten opgenomen om te kalibreren. Hierna kunnen dan de projectie matrices worden berekend. Indien de Wii remotes niet verplaatst worden, hoeven we uiteraard niet steeds opnieuw te kalibreren. Om de fundamentele matrix te berekenen is gebruik gemaakt van het genormaliseerde 8 point algoritme zoals in boek van Hartley en Zisserman [4] beschreven wordt. Bij dit algoritme kunnen we willekeurig veel punten meegeven en wordt de fundamentele matrix met al deze informatie berekend. We hebben voor deze methode gekozen omdat er betrouwbare code ter beschikking was en deze bevredigende
26
4.2. TRIANGULATIE
resultaten geeft. Om de projectie matrices te berekenen is er code geschreven welke de methode beschreven in hoofdstuk 3.2.5 volgt. Deze methode volgt hoofdstuk 9 van het boek van Hartley en Zisserman [4].
4.2 Triangulatie Indien de Wii remotes gekalibreerd zijn, kunnen we de 3D positie van de infra-rode LED bepalen. Dit proces wordt triangulatie genoemd. De triangulatie werd ook in Matlab geïmplementeerd en maakt deels gebruik van de library van het boek van Hartley en Zisserman [4]. Dit gebeurt door de algebraïsche afstand te minimaliseren, zoals in hoofdstuk 3.3 beschreven werd.
4.3 Applicaties 4.3.1 3D head tracking Om 3D head tracking te realiseren maken we gebruik van twee Wii remotes en één infra-rode LED. Door het gebruik van twee Wii remotes is het mogelijk om met één LED te werken, aangezien de werkelijke 3D positie berekend kan worden. Indien maar één Wii remote gebruikt zou worden, zouden twee infra-rode LEDs nodig zijn om head tracking te realiseren. Een nadeel aan deze methode is dat indien men de twee LEDs (hoofd) draait naar links of rechts, zal dit hetzelfde effect geven als een grote afstand naar achteren gaan, zoals in figuur 4.1. De geprojecteerde afstand tussen de twee infra-rode LEDs zal verkleinen en dit komt overeen met het ver weg staan van de Wii remote. Dit probleem is dus opgelost indien twee Wii remotes gehanteerd worden, waarbij slechts één IR LED nodig is, waarbij de werkelijke positie van deze LED bepaald kan worden. Een klein voordeel aan onze opstelling is dat we meer van de zichtbare range in beslag kunnen nemen, door maar één LED te gebruiken. In figuur 4.2 kan de opstelling voor 3D head tracking gevonden worden. Indien we een infra-rode LED hebben en deze op een pet monteren, zoals in figuur 4.2, kunnen we indien we de pet opzetten en ons hoofd bewegen, een realistisch beeld verkrijgen alsof we uit een raam kijken. De 3D wereld die we geconstrueerd hebben, werd gemaakt in Ogre [9].
4.3.2 White board Wanneer we een white board willen simuleren, hebben we een opstelling nodig waarbij de twee Wii remotes het volledige bord kunnen zien. Dan bevestigen we een LED aan een stift, zodat de positie van de echte stift overeen komt met de positie van de infra-rode LED. De opstelling en het resultaat, waarbij een virtuele kopie van de
4.3. APPLICATIES
27
Figuur 4.1: Rechts 3D head tracking, zoals onze methode, links 2D head tracking, zoals bij Johnny Chung Lee.
(a) De opstelling voor 3D head tracking.
(b) De pet met een infra rode LED op gemonteerd.
Figuur 4.2: De nodige hardware om 3D head tracking te realiseren.
28
4.3. APPLICATIES
(a) Setup van een white board, waarbij de Wii remotes het bord volledig moeten kunnen zien.
(b) Het resultaat van onze white board simulatie
Figuur 4.3: Een setup en het resultaat van een white board simulatie. geschreven tekst op het scherm vertoond wordt, kunnen gevonden worden in figuur 4.3.
4.3.3 3D scanning Wii remotes bevatten een infra-rode camera. Voor deze camera wordt een infrarood filter geplaatst, om minder last van zichtbaar licht te hebben. Indien deze infra-rood filter wordt verwijderd, zoals in figuur 4.4 kan deze dus zichtbaar licht opnemen. Dit idee hebben we gebruikt om een 3D scanner te maken. Hierbij worden twee Wii remotes zonder infra-rood filter gebruikt en een standaard projector. De projector projecteert een klein bolletje op een object, welke de Wii remotes dan kunnen detecteren. Een opstelling kan gevonden worden in figuur 4.5, waarbij een tas en een isomo bol worden ingescand. Een nadeel bij deze scan-methode is dat we geen speculaire objecten kunnen inscannen. We hebben ook ondervonden dat de projector vrij dicht bij het ingescande object moet geplaatst worden, anders is het licht van onze projector niet sterk genoeg.
4.3. APPLICATIES
29
Figuur 4.4: Een Wii remote waarbij de infra-rood filter verwijderd is.
Figuur 4.5: Een setup van de 3D scanner waarbij een tas en een isomo bol worden ingescand.
30
4.3. APPLICATIES
HOOFDSTUK
5
Resultaten
In dit hoofdstuk zal eerst de maximale zichtbare oppervlakte voor twee Wii remotes besproken worden. Nadien zal over de precisie van Wii remotes gesproken worden. Vervolgens een korte bespreking van de snelheid van de kalibratie en nadien resultaten voor de uitgewerkte applicaties: 3D head tracking, simulatie van een white board en 3D scanning. Meer foto’s en filmmateriaal van onze resultaten zijn beschikbaar op onze website [2].
5.1 Maximaal bereik voor twee Wii remotes Een beperking die boven genoemde applicaties met zich mee brachten, is de beperkte kijkhoek van een Wii remote. Dit is waarom dit onderdeel toegewijd is aan het berekenen van de maximaal zichtbare horizontale oppervlakte bij het gebruik van twee Wii remotes. Een Wii remote heeft bij benadering een horizontale viewangle van 33◦ en een verticale viewangle van 23◦ . Met deze laatste viewangle houden we geen rekening, aangezien we enkel de horizontale oppervlakte gaan berekenen. We veronderstellen dat de Wii remotes in hetzelfde vlak liggen, waarbij beide Wii remotes hetzelfde grondvlak delen. Een voorstelling kan gevonden worden in figuur 5.1. Om geen gevallen te bekijken welke wij niet willen beschouwen, gaan we er vanuit dat: 33◦ 0◦ < a, b < 180◦ − 2 waarbij a en b de hoeken zijn van beide Wii remotes ten opzichte van het televisiescherm. Dit wil zeggen dat we gevallen zoals in figuur 5.2 niet beschouwen. Dit versnelt het Monte Carlo area estimation algoritme wat we later zullen uitleggen. We kunnen het berekenen van de oppervlakte opsplitsen in twee gevallen. In het eerste geval gaan we er vanuit dat de snijpunten S1 , S2 , S3 , S4 zichtbaar zijn voor
32
5.1. MAXIMAAL BEREIK VOOR TWEE WII REMOTES
Figuur 5.1: Kijkhoek en gezichtsveld van twee Wii remotes, waarbij a en b de hoeken zijn ten opzichte van een televisiescherm.
Figuur 5.2: Geval welke we niet beschouwen waarbij a, b < 0◦ .
5.1. MAXIMAAL BEREIK VOOR TWEE WII REMOTES
33
Figuur 5.3: Basis geval waarbij alle snijpunten S1 , S2 , S3 , S4 zichtbaar zijn voor beide ◦ Wii remotes en waarvoor geldt dat 0◦ < a, b < 90◦ − 332 .
beide Wii remotes en dat er geldt dat:
0◦ < a, b < 90◦ −
33◦ 2
In het tweede geval beschouwen we alle overige gevallen.
5.1.1 Geval 1 In dit geval, waarvan een voorstelling gevonden kan worden in figuur 5.3, gaan we als volgt te werk: Indien we er vanuit gaan dat de afstand tussen de twee Wii remotes d , bijvoorbeeld gelijk aan de breedte van het scherm, gegeven is, kunnen we de optimale hoek berekenen hoe de Wii remotes ten opzichte van elkaar moeten staan, om een zo groot mogelijk gezichtsveld te krijgen. Indien we de eerste Wii remote W1 in de oorsprong plaatsen en de tweede Wii remote W2 op een gekende afstand d van W1 zetten, krijgen we volgende voorstellingen voor de lijnen l1 , l2 , l3 en l4 :
l1 l2 l3 l4
↔ ↔ ↔ ↔
y y y y
= tan(a)x = tan(a + 33◦ )x = − tan(b)(x − d) = − tan(b + 33◦ )(x − d)
(5.1)
34
5.1. MAXIMAAL BEREIK VOOR TWEE WII REMOTES
Nu kunnen de snijpunten S1 = (S1x , S1y ), S2 = (S2x , S2y ), S3 = (S3x , S3y ) en S4 = (S4x , S4y ) berekend worden: S1 : l1 = l3 ⇔ tan(a)x = − tan(b)(x − d) tan(b)d ⇔ S1x = tan(a) + tan(b) S2 : l2 = l3 ⇔ tan(a + 33◦ )x = − tan(b)(x − d) tan(b)d ⇔ S2x = tan(a + 33◦ ) + tan(b) (5.2) S3 : l2 = l4 ⇔ tan(a + 33◦ )x = − tan(b + 33◦ )(x − d) tan(a + 33◦ )d ⇔ S3x = tan(a + 33◦ ) + tan(b + 33◦ ) S4 : l1 = l4 ⇔ tan(a)x = − tan(b + 33◦ )(x − d) tan(b + 33◦ )d ⇔ S4x = tan(a) + tan(b + 33◦ ) Indien we nu de grijze oppervlakte A in figuur 5.3 willen berekenen, gaan we als volgt te werk: x
x
ZS3
A =
◦
ZS4
tan(a + 33 ) x dx + S2x
− tan(b + 33◦ ) (x − d) dx
S3x
(5.3)
−
x
ZS1
x
− tan(b) (x − d) dx +
S2x
ZS4
tan(a) x dx
S1x
5.1.2 Geval 2 Nu beschouwen we het geval waarbij eventueel niet alle snijpunten S1 , S2 , S3 , S4 zichtbaar zijn voor beide Wii remotes. Dit geval zullen we nog opsplitsen in twee gevallen, waarbij in het ene geval 0◦ < a, b < 90◦ −
33◦ 2
en in het andere geval 90◦ −
33◦ 33◦ ≤ a of b < 180◦ − 2 2
geldt. Een voorstelling voor het eerste geval kan gevonden worden in figuur 5.4 en voor het tweede geval in figuur 5.5.
5.1. MAXIMAAL BEREIK VOOR TWEE WII REMOTES
35
Figuur 5.4: Geval waarbij eventueel niet alle snijpunten S1 , S2 , S3 , S4 zichtbaar zijn ◦ voor beide Wii remotes en 0◦ < a, b < 90◦ − 332 .
Figuur 5.5: Geval waarbij niet alle snijpunten S1 , S2 , S3 , S4 zichtbaar zijn voor beide ◦ ◦ Wii remotes en 90◦ − 332 ≤ a of b < 180◦ − 332 .
36
5.1. MAXIMAAL BEREIK VOOR TWEE WII REMOTES
Figuur 5.6: Geval waarbij niet alle snijpunten S1 , S2 , S3 , S4 zichtbaar zijn voor beide ◦ Wii remotes en 0◦ < a, b < 90◦ − 332 . Het rode vierkant wordt rond het oppervlak bepaald, waarbij de snijpunten elk op een verschillende zijde van dit vierkant liggen.
Geval a Om de oppervlakte voor het eerste geval te bepalen, gaan we gebruik maken van het Monte Carlo area estimation algoritme. Hierbij bepalen we een rechthoek welke de volledige te berekenen oppervlakte bevat en gaan we steeds random punten binnen deze rechthoek bepalen. Deze rechthoek wordt bepaald door de vier snijpunten S1 , S2 , S3 , S4 , zoals in figuur 5.6 gezien kan worden. Deze random gegenereerde punten liggen ofwel binnen ofwel buiten het oppervlak waarvan we de oppervlakte willen berekenen. Het bepalen ofdat het random gegenereerd punt binnen of buiten het vierkant ligt, gebeurt door het bepalen ofdat het punt boven l1 en l3 en onder l2 en l4 . Hierbij valt een punt (x, y) boven een rechte l indien l(x) < y, onder wordt analoog bepaald. Dan krijgen we de oppervlakte tussen de vier lijnen. Het is zo dat deze oppervlakte niet volledig zichtbaar is voor beide Wii remotes, omdat LEDs vanaf een bepaalde afstand niet meer zichtbaar zijn binnen dit reeds bepaalde bereik. We kunnen deze eis nog inbrengen door de regel van Pythagoras te gebruiken. Dit wil zeggen dat a2 + b2 = c2 ≤ d2max moet gelden. Dit kan gevonden worden in figuur 5.7
Geval b In dit geval, waarbij
33◦ 33◦ ≤ a of b < 180◦ − 2 2 bepalen we het vierkant aan de hand van de maximale afstand waarin de IR LED nog waarneembaar is voor beide Wii remotes (= dmax ). Dit wil zeggen dat we de lijn die door beide Wii remotes gaat, als onderste lijn van het vierkant nemen (y = 0). De bovenste lijn wordt bepaald door de maximale afstand, en zal dus de lijn zijn met vergelijking (y = dmax ). De overblijvende lijnen zijn x = d − dmax en x = dmax . Dit kan gevonden worden in figuur 5.8. Indien dit vierkant bepaald is, gaan we het Monte Carlo area estimation algoritme weer toepassen om de oppervlakte te bepalen. 90◦ −
5.1. MAXIMAAL BEREIK VOOR TWEE WII REMOTES
37
Figuur 5.7: Geval waarbij niet alle snijpunten S1 , S2 , S3 , S4 zichtbaar zijn voor beide ◦ Wii remotes en 0◦ < a, b < 90◦ − 332 . Door middel van Pythagoras wordt de beperkte afstand van de Wii remotes tot de LEDs in rekening gebracht.
Figuur 5.8: Geval waarbij niet alle snijpunten S1 , S2 , S3 , S4 zichtbaar zijn voor beide ◦ Wii remotes en 0◦ < a, b < 90◦ − 332 . Door middel van Pythagoras wordt de beperkte afstand van de Wii remotes tot de LEDs in rekening gebracht.
38
5.2. PRECISIE
Hierbij moet voor het random gegenereerd punt nog bepaald worden ofdat dit wel degelijk zichtbaar was. Dit gebeurt op een gelijkaardige manier zoals in het vorige geval. Het is altijd zo dat indien a + b ≥ 180◦ , de oppervlakte gelijk is aan nul.
5.1.3 Concrete voorbeelden Indien we er vanuit gaan dat we de LEDs tot op een afstand van 5 m kunnen waarnemen en de horizontale viewangle van de Wii remotes gelijk is aan 33◦ , bekomen we volgende resultaten voor de maximale oppervlakte: Afstand tussen beide Wii remotes (cm) Max oppervlakte (m2 ) a(◦ ) b(◦ ) 100 5.7407 65, 5 65, 5 300 4.5439 49, 5 49, 5 500 4.5120 31 31 Indien we er nu vanuit gaan dat we de LEDs tot op een afstand van 7 m kunnen waarnemen, bekomen we volgende resultaten voor de maximale oppervlakte: Afstand tussen beide Wii remotes (cm) Max oppervlakte (m2 ) a(◦ ) b(◦ ) 100 11.8716 68 68 300 9.5418 56 56 500 8.6544 45 45 Enkele voorbeelden van plots van de zichtbare oppervlakte van twee Wii remotes kunnen gevonden worden in figuur 5.9. De waargenomen intensiteit van het infra-rode licht van een IR LED neemt sterk af, indien men verder verwijderd is van deze LED. Ook hangt de intensiteit af van de hoek waaronder de LED wordt waargenomen. Bij onze hardware (IR EMITTER, 5MM 880nm OSRAM SYLVANIA (SFH486)) is de afstand voor het detecteren van de LED door de Wii remotes beperkt tot ongeveer 5 m. De lichtfrequenties die de Wii remote kan detecteren liggen bij benadering tussen 870 nm en 950 nm. Een figuur die illustreert waar deze waarden zich juist bevinden, kunnen gevonden worden in figuur 5.10. Indien de Wii remotes gebruikt worden bij een aanwezigheid van te veel infra-rood licht, kunnen deze Wii remotes dit detecteren en wordt de opstelling onbruikbaar. Voorbeelden welke onze opstelling, die wij ondervonden hebben, zijn de aanwezigheid van kaarsen en een te veel aan buitenlicht.
5.2 Precisie Bij eender welke toepassing is het belangrijk te weten hoe precies de opnames van IR licht door de Wii remotes gebeurt. Omdat wij bij elke toepassingen twee Wii remotes gebruiken, hebben wij een praktische en theoretische uitwerking gemaakt bij het gebruik van twee Wii remotes.
5.2. PRECISIE
39
d=1m, maxAfstand=7m
d=1m, maxAfstand=5m
12 10 Oppervlakte (m2)
Oppervlakte (m2)
6
4
2
8 6 4 2 0 0
0 0
70
10
60
20 20
60
a (o)
60
20
40
40 0
50
30
40
40
b (o)
a (o)
(a) Zichtbare oppervlakte waarbij de afstand tussen beide Wii remotes gelijk is aan 1 m en de afstand tot waar onze IR LED kan waargenomen worden gelijk is aan 5 m.
30
50
20
60
o
b( )
10
70
0
(b) Zichtbare oppervlakte waarbij de afstand tussen beide Wii remotes gelijk is aan 1 m en de afstand tot waar onze IR LED kan waargenomen worden gelijk is aan 7 m.
d=3m, maxAfstand=5m
d=3m, maxAfstand=7m
Oppervlakte (m2)
10 Oppervlakte (m2)
5 4 3 70
2 60
1
0 0
50
0 0
5
40 10
60 20
30
20 30 40 50 70
o
b (o)
10
60
a (o)
20
60
a( )
o
b( )
0
0
(c) Zichtbare oppervlakte waarbij de afstand tussen beide Wii remotes gelijk is aan 3 m en de afstand tot waar onze IR LED kan waargenomen worden gelijk is aan 5 m.
(d) Zichtbare oppervlakte waarbij de afstand tussen beide Wii remotes gelijk is aan 3 m en de afstand tot waar onze IR LED kan waargenomen worden gelijk is aan 7 m. d=5m, maxAfstand=7m
d=5m, maxAfstand=5m
5
40
40
20
Oppervlakte (m2)
4 3
2
Oppervlakte (m )
2 1 0
60 b (o)
8 6 4 2 0 0 60
20
40
40
40
20
20
60 0 0
10
20
40
30
50
60
70
o
(e) Zichtbare oppervlakte waarbij de afstand tussen beide Wii remotes gelijk is aan 5 m en de afstand tot waar onze IR LED kan waargenomen worden gelijk is aan 5 m.
0 a (o)
b (o)
(f) Zichtbare oppervlakte waarbij de afstand tussen beide Wii remotes gelijk is aan 5 m en de afstand tot waar onze IR LED kan waargenomen worden gelijk is aan 7 m.
Figuur 5.9: Plots van de zichtbare oppervlakte voor twee Wii remotes waarbij experimentele waarden voor de afstand tussen de twee Wii remotes en de afstand tot waar de Wii remotes onze IR LED kunnen waarnemen gebruikt werden.
40
5.2. PRECISIE
Figuur 5.10: Algemeen spectrum van golflengtes voor licht. (Bron:[11])
5.2.1 Praktisch Om de precisie te berekenen, hebben we de twee Wii remotes eerst goed gepositioneerd ten opzichte van elkaar. We hebben een afstand gekozen van 1 m, waarbij we de Wii remotes onder een hoek van 65.5◦ moeten zetten om een optimaal bereik te hebben. Nadien hebben we deze Wii remotes gekalibreerd. Dan hebben we twee infra-rode LEDs op een vaste afstand van elkaar geplaatst en laten bewegen. Wanneer we tienduizend punten opnemen, waarbij de oorspronkelijke en gemiddelde afstand gelijk zijn aan 10 cm krijgen we een standaardafwijking van 0.2233 cm, een minimum waarde voor de afstand van 9.00 cm en een maximum waarde voor de afstand van 11.0346 cm. Een histogram waarbij het aantal punten per afstand geplot wordt, kan gevonden worden in figuur 5.11. Deze afstand is normaal verdeeld. Hierdoor weten we dat indien we de standaardafwijking afwijken van het gemiddelde, dat 68% van de afstanden binnen deze range valt. Wanneer we twee keer de standaardafwijking afwijken van het gemiddelde, weten we dat 95% van de afstanden binnen deze range valt. De standaardafwijking is gelijk aan 0.2233 cm en dus weten we dat 95% van de afstanden tussen 10 cm − 2 × 0.2233 cm ≈ 9.5534 cm.
5.2.2 Theoretisch De processor van een Wii remote past een 8× subpixel analyse toe om een resolutie van 1024×768 te verkrijgen vanuit een werkelijke resolutie van 128×96. Dit wetende kunnen we een theoretische precisie bepalen bij het gebruik van twee Wii remotes. We hebben ons beperkt tot een analyse in 2D, zodat we grotendeels het idee achter de berekening van de zichtbare oppervlakte kunnen hergebruiken. Indien we het gezichtsveld opdelen in 1024 gelijke delen, door de horizontale 33◦ viewangle van 33◦ op te delen in hoeken van 1024 , krijgen we voorstelling welke te vergelijken is met de schematische voorstelling in figuur 5.12. Het totale gezichtsveld voor beide Wii remotes wordt opgedeeld in kleine vakjes. Indien het IR LED binnen zo een vakje beweegt, merken de Wii remotes geen bewe-
5.2. PRECISIE
41
Figuur 5.11: Histogram voor de afstand tussen twee infra-rode LEDs.
Figuur 5.12: Twee Wii remotes waarbij het gezichtsveld in een evenveel gelijke delen is opgesplitst voor beide Wii remotes. Hierbij wordt het totale gezichtsveld opgedeeld in kleine vakjes, waarvan er één in het grijs gekleurd is.
42
5.3. KALIBRATIE
Figuur 5.13: Twee IR LEDs op een vaste afstand van elkaar laten bewegen, waarbij één LED binnen één zichtbaar vakje blijft en de andere LED over verschillende zichtbare vakjes beweegt. ging op. Als we nu de gemiddelde oppervlakte van zo één vakje bepalen, alsook de standaardafwijking, krijgen we een goed idee van de oppervlaktes van deze vakjes. Indien we een opstelling nemen waarbij de Wii remotes op een afstand van 5 m van elkaar verwijderd zijn en de LEDs kunnen detecteren tot op 5 m krijgen we een gemiddelde oppervlakte voor zo één vakje van 0.0430 cm2 en een standaardafwijking van 0.0154 cm2 . Hierdoor weten dat de oppervlakte van zo één vakje gemiddeld 0.0154 cm2 afwijkt van de gemiddelde oppervlakte. Bij nader onderzoek kunnen we concluderen dat de oppervlakten achteraan groter zijn dan de oppervlakten vooraan, dichtbij de Wii remotes.
5.2.3 Vergelijking praktijk en theorie Uit het theoretische gedeelte weten we dat de gemiddelde oppervlakte gelijk is aan 4.30 mm2 . Indien we het theoretische model vereenvoudigen en deze vakjes voorstellen als vierkantjes, hebben deze gemiddeld een zijde van ongeveer 2.07 mm. Stel dat één LED in één vakje blijft tijdens het bewegen en de andere LED zich over verschillende vakjes verplaatst, dan kunnen we dit schematisch voorstellen zoals in figuur 5.13. Dus indien we tijdens het verplaatsen van beide LEDs binnen één vakje blijven met één LED, kan de afstand afwijken met 2.07 mm. Dit hebben we in de praktijk ook ondervonden, aangezien we daar een standaardafwijking hadden van 2.233 mm.
5.3 Kalibratie De kalibratie van de twee Wii remotes gebeurt relatief snel. De Wii remotes hebben een sampling rate van 100Hz. Aangezien voor onze toepassingen vijfhonderd punten zeker voldoende zijn om te kalibreren hebben we in principe maar enkele seconden nodig. In de praktijk duurt dit meestal enkele seconden langer, omdat niet alle punten bruikbaar zijn. Zo is het mogelijk dat de IR LED slechts door één of zelfs geen Wii remote gedetecteerd wordt.
5.4. APPLICATIES
43
Figuur 5.14: Resultaat 3D head tracking.
5.4 Applicaties In dit onderdeel gaan we de resultaten van drie applicaties bespreken, namelijk 3D head tracking, white board simulatie en 3D scanner.
5.4.1 3D head tracking Bij 3D head tracking wordt de positie van het hoofd ten opzichte van het scherm bepaalt, om zo de positie van het oogpunt in een 3D wereld aan te passen aan de positie van het hoofd van de speler. De horizontale viewangle van de Wii remotes bedraagt bij benadering 33◦ en de verticale viewangle is ongeveer gelijk aan 23◦ , wat ervoor zorgt dat de plaats waarin het hoofd zich kan bewegen vrij geperkt is. De frequentie waarmee de Wii remotes de 2D coördinaten van het 3D punt opnemen is 100Hz, waardoor de reactiesnelheid hoog is en bevredigende resultaten geeft voor 3D head tracking. Een algemeen probleem bij het gebruik van Wii remotes is de last van storende lichtbronnen. Indien er te veel buitenlicht zichtbaar is, hebben we dikwijls gehad dat de resultaten niet accuraat waren. Dit kwam door een slechte kalibratie, door het te veel aan buitenlicht. De resultaten kunnen gevonden worden in figuur 5.14.
5.4.2 White board Indien we een white board willen simuleren moeten we de twee Wii remotes zodanig plaatsen dat ze het volledige bord kunnen zien. Hierbij wordt een infra-rode LED op een pen geplaatst, waardoor de positie van de LED overeen komt met de positie van de pen. Dus de positie van deze IR LED kan bepaald worden waardoor we een virtuele kopie van wat op papier geschreven werd, kunnen tonen op het scherm. Een resultaat hiervan kan gevonden worden in figuur 5.15.
44
5.4. APPLICATIES
Figuur 5.15: Resultaat van de simulatie van een white board, waarbij een virtuele kopie van de geschreven tekst op een televisiescherm getoond wordt.
Figuur 5.16: 3D reconstructie van een ingescande pop werd over de originele pop geplaatst.
5.4.3 3D scanning De ontworpen 3D scanner bestaat uit twee Wii remotes waarvan de infra-rood filter verwijderd is en een eenvoudige projector, welke een fel bolletje projecteert op het in te scannen object. Indien we dit bolletje over het gehele object laten lopen en de coördinaten van dit bolletje opnemen, kunnen we een 3D reconstructie van het ingescande object verkrijgen. Dit kan gezien worden in figuur 5.16.
HOOFDSTUK
6
Conclusie
Binnen dit eindwerk werd er nagegaan hoe de 3D positie van een infra-rode LED door middel van twee Wii remotes bepaald kan worden. Aangezien de Wii remotes beperkte viewangles hebben, zijn we nagegaan hoe we deze Wii remotes optimaal kunnen positioneren, indien de afstand tussen beide Wii remotes gegeven is. Indien beide Wii remotes gepositioneerd zijn, moeten we deze ten opzichte van elkaar kalibreren. Wegens de hoge sampling rate van 100−120Hz van de Wii remote, gebeurt dit kalibreren in minder dan één minuut. Om na te gaan hoe precies de Wii remotes juist zijn, hebben we een praktische en theoretische analyse gemaakt. Uit de praktijk blijkt dat de Wii remotes tot op 2.233 mm nauwkeurig zijn, wat ongeveer overeenkomt met de theoretische afleiding. Deze precisie is zeker voldoende om bevredigende resultaten te verkrijgen voor de drie applicaties welke uitgewerkt zijn: 3D head tracking, een white board simulatie en een primitieve 3D scanner.
46
Toekomstig werk
Veel uitbreidingen zijn mogelijk waarvan we twee fundamentele uitbreidingen zullen bespreken: het gebruik van meerdere lichtbronnen of het gebruik van meerdere Wii remotes. Indien we meerdere IR LEDs gebruiken, kunnen we bijvoorbeeld het knikken van het hoofd bij 3D head tracking simuleren. Indien meerdere lichtbronnen gebruikt worden, kan onze primitieve 3D scanner versnelt worden. Het voordeel nu is dat we geen identificatie nodig hebben van de verschillende LEDs en dat is wel nodig indien meerdere LEDs gebruikt worden. Dit kan gebeuren door de verschillende LEDs elk op een andere manier aan en uit te laten flikkeren. Dit heeft een negatieve invloed op de sampling rate. Indien we meerdere Wii remotes gebruiken, kunnen we de nu aanwezige occlusies verminderen. Ook de precisie zou verbeteren en het zichtbare volume kan zo vergroot worden.
48
Bibliografie
[1] AMO. Available from:
. [2] Stijn Ligot en Tanja Van den Eede. 3D Head Tracking - StereoWiision. Available from: . [3] Martin A. Fischler and Robert C. Bolles. Random sample consensus: a paradigm for model fitting with applications to image analysis and automated cartography. Communications of the ACM archive, 24:381 – 395, 1981. [4] R. I. Hartley and A. Zisserman. Multiple View Geometry in Computer Vision. Cambridge University Press, ISBN: 0521540518, second edition, 2004. [5] Paul Dietz Johnny Chung Lee, Scott Hudson. and visible ligth projection for location tracking. .
Hybrid infrared Available from:
[6] P. D. Kovesi. MATLAB and Octave functions for computer vision and image processing. School of Computer Science & Software Engineering, The University of Western Australia. Available from: . [7] O. Kreylos. Available from: . [8] Johnny Chung Lee. Available from: . [9] Ogre. Available from: . [10] Wiimote Project. Available from: . [11] Discover something. Available from: .
50
BIBLIOGRAFIE
[12] Matt Vella. Available from: . [13] Wii. Available from: .