HAND TRACKING MED DJUPKAMERA

Relevanta dokument
Procedurell renderingsmotor i Javascript och HTML5

Dagbok Mikael Lyck

Filhanterare med AngularJS

Objektorienterad programmering, allmänt

Viktiga egenskaper hos ett program (Meyer): Objektorienterad programmering, allmänt. Vilka egenskaper vill vi att våra program ska ha?

Procedurell grottgenerator och eld i GLSL. Marcus Widegren

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Inledning. Kapitel Bakgrund. 1.2 Syfte

Designing a Shading System. David Larsson

PROJEKT ALBYLEN. Datum: 25 mars AV: Magnus Lindgren, Mattias Jonsson, Alexander Paskota, Jimmie Yngvesson, Erik Nilsson

Tentamen TNM061, 3D-grafik och animering för MT2. Onsdag 20/ kl SP71. Inga hjälpmedel

Tentamen TNM061, 3D-grafik och animering för MT2. Tisdag 3/ kl 8-12 TP51, TP52, TP54, TP56, TP41, TP43. Inga hjälpmedel

Universe Engine Rapport

Labrapport över Rumbokningssytemet Grupp:1

Robin Wahlstedt Datavetenskap / Spel Vetenskapsmetodik rwt07001@student.mdh.se. Datorgrafik i spel

Slutrapport Get it going contracts

Simulering och rendering av gräs och vind i realtid

Rune Tennesmed. Oskar Norling 1DV430. Individuellt Mjukvaruutvecklingsprojekt 1DV430 Webbprogrammerare H12 Oskar Norling

Inkapsling (encapsulation)

Rapport Digitala Projekt EITF11 Grupp 4 Axel Sundberg, Jakob Wennerström Gille Handledare: Bertil Lindvall

Procedurell stad. Projekt i kursen TNM022 Procedurella metoder för bilder. Tobias Heldring, tobhe

Kungliga Tekniska Högskolan (KTH) Programutvecklingsprojekt (2D1954) Systembeskrivning för projektgrupp Gestmenyer

SLUTRAPPORT RUNE TENNESMED WEBBSHOP

Prototyping. Susanna Olsson, TietoEnator Funda Denizhan, TietoEnator Ann Lantz, CID

Generering av L-system fraktaler med Processing.js

Procedurella Grottor TNM084. Sammanfattning. Alexander Steen

Objektorienterad programmering

C-UPPSATS. Revitalizing classic art using real-time game technology

SLUTRAPPORT: TEXAS HOLDEM 4 FRIENDS

PROCEDUELL TERRÄNG. Proceduella metoder för bilder (TNM084) Jimmy Liikala Institutionen för teknik och naturvetenskap

Tor Sterner-Johansson Thomas Johansson Daniel Henriksson

Rabattsystem TEXTILGALLERIAN RABATTSYSTEM

LiTH Segmentering av MR-bilder med ITK Efterstudie MCIV. Anders Eklund. Status

Titel Augmented Reality. DokumentID Projekt FoU. Dokumentstatus Godkänd. Sida 1(10) Version 1.0. Augmented Reality

Vi är alla i gruppen väldigt intresserade av spel och vill lära oss mer om hur man skapar ett helt spel från idé till slutprodukt.

Projekt i programmering 1 (ver 2)... 2 Projektidé... 2 Planering... 2 Genomförande... 2 Testning och buggar... 3 Utvärdering... 3 Planering...

Figur 1. Skärmbild med markerade steg i videon. Diagram och tabell som visar positionerna som funktion av tiden.

Grafiska pipelinen. Edvin Fischer

Databashantering och Beslutsstöd

Bilaga 4, Skapa grafiskt användargränssnitt med guide

Mälardalens högskola

Projekt Rapport. RaidPlanner. Jeanette Karlsson UD10

Goda råd till de som ska utföra ett liknande projekt (från KMM 2016)

BESKRIVNING AV PROCESSMETODEN SCRUM

Arv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier

Joppes djurfamilj v2. Planering. Genomförande. Utvärdering och dokumentation

Forskning och utveckling inom språkteknologi Uppgift 3: Projektförslag Parallelliserad dependensparsning i CUDA

Konferens FAI Dokumenthanteringssystem i Alfresco

Bakgrund. Genomförande

LiTH. WalkCAM 2007/05/15. Testrapport. Mitun Dey Version 1.0. Status. Granskad. Godkänd. Reglerteknisk projektkurs WalkCAM LIPs

Static vs Dynamic binding Polymorfism. Objekt-orienterad programmering och design (DIT953) Niklas Broberg, 2018

Datastrukturer och Algoritmer D0041D

Medborgaren och myndigheten

Slutrapport VoteIT Mix

LiTH. WalkCAM 2007/05/15. Testplan. Mitun Dey Version 1.0. Status. Granskad. Godkänd. Reglerteknisk projektkurs WalkCAM LIPs

Grafiska pipelinens funktion

LIPs Daniel Axehill ChrKr Projektdirektiv_Saab_v3 CKr

Analys och design. Objekt. Klass. med hjälp av CRC. Klassdiagram

Omtentamen. TNM077 3D-datorgrafik och animering kl 8-12 Inga hjälpmedel. (samt även TNM008 3D-datorgrafik och VR)

Säkra Designmönster (Secure Design Patterns)

Slutrapport - Intranät

Grafiska användargränssnitt i Java

Spelutveckling 3d-grafik och modellering. Grunder för 3d-grafik Blender Animering

Projektplan. LiTH Segmentering av MR-bilder med ITK Anders Eklund. Version 1.0. Status. Bilder och grafik projektkurs, CDIO MCIV LIPs

Projektmetodik II. HF1005, Informationsteknik och ingenjörsmetodik för Datateknik. Projektarbete

SCRUM. Vattenfallsmodellen. Analys. Design. Kod. Test. Rational Unified Process Agile. Kallas också linjär sekventiell modell.

Objektorienterad Programkonstruktion. Föreläsning 6 23 nov 2015

Projektplan. Per-Emil Eliasson, Claes Fälth, Manne Gustafson, Andreas Gustafsson. 29 januari 2003

Classes och Interfaces, Objects och References, Initialization

Procedurell 3D-eld på grafikkortet

Snabbguide. ITP Whiteboard har 3 nivåer bas, medel och avancerad. Detta gör att det är enkelt att börja jobba med ITP Whiteboard.

Objektorienterad programmering

Programutvecklingsprojekt Projektgrupp Elvin. Detailed Design Document

Testprotokoll Autonom målföljning med quadcopter

Abstrakta datatyper Laboration 2 GruDat, DD1344

Kandidatarbete I- data

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?

Samlingar, Gränssitt och Programkonstruktion! Förelasning 11!! TDA540 Objektorienterad Programmering!

PROJEKTSKOLA 1 STARTA ETT PROJEKT

Static vs Dynamic binding Polymorfism. Objekt-orienterad programmering och design Alex Gerdes, 2016

SLUTRAPPORT WEBBPROJEKT 1

SEGLAISOLEN.SE En Wordpres Webbsajt

Procedurell Terräng med LOD i OpenGL 4

Facit Tentamen TDDC (7)

Mekanismer för mediadistribution

LIPs Fredrik Ljungberg ChrKr Projektdirektiv18_ROV.doc CKr

LUNDS UNIVERSITET. Parallell exekvering av Float32 och INT32 operationer

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

Skissa och gissa. Individuellt Mjukvaruutvecklingsprojekt, 1DV430. Christian Nilsson, cn222gc, WP

Introduktionsmöte Innehåll

TDDI02. På denna föreläsning: Programmeringsprojekt, Föreläsning 1. Kursinformation Vad är Software Engineering? Hur går ett projekt till?

TDDC74 - Projektspecifikation

UML. Tomas Czarnecki Institutionen för Informationsbehandling Åbo Akademi,FIN Åbo, Finland url:

Historik: OOP. Objektorientering. Historik: OOP (forts) En Dum Fråga

Slutrapport YUNSIT.se Portfolio/blogg

Coridendro ett verktyg för att grafiskt åskådliggöra incidensen av malignt melanom inom olika släkter

EDAA01 Programmeringsteknik - fördjupningskurs

Här ges en överblick över de delar som ingår i projektarbetet och beskriver kraven och bedömningskriterierna.

Kommunal Jämförelsetjänst

Design och konstruktion av grafiska gränssnitt

Transkript:

HAND TRACKING MED DJUPKAMERA ETT PROJEKT I TNM090 - SOFTWARE ENGINEERING Rasmus KARLSSON Per JOHANSSON Erik HAMMARLUND raska293@student.liu.se perjo020@student.liu.se eriha891@student.liu.se 2014-01-14

Abstrakt Djupkameror kan utföra många uppgifter idag. Spårning av händer har länge varit möjligt men kräver ofta hjälpmedel som hjälper kameran att identifiera orientering och position. Lite svårare men fullt möjligt är att hitta och spåra händer eller andra objekt utan några andra hjälpmedel. Detta projekt behandlar just spårning av händer utan externa hjälpmedel. 1 Projektidé och mål Vid val av projekt valde tre personer en projektidé som baserade sig på att med hjälp av en djupkamera kunna följa handrörelser och handpositioner. Dessa tre var Rasmus, Per och Erik som bildade en projektgrupp som skulle ta sig an idén. Efter möte med kunden beslutade sig gruppen för att använda en djupkamera av märket Prime- Sense, vilken kan avgöra djup mellan ca 35cm och 1,4m. Målbilden för projektidén var ett projekt [4] genomfört av tre personer vid ett univeristet i Grekland. De hade med hjälp av en djupkamera lyckats göra ett program som markerar, med en renderad kropp som hade samma form som en hand ovanpå användarens hand. Till en början inriktade sig gruppen att skriva ett program som använder Open- NI för att hämta djupbilden från kameran. Dessutom påbörjades en kod från grunden som skulle rita ut de objekt som skulle renderas ovanpå kamerabilden. Problem uppstod dock med dels störningar i djupbilden i form av brus samt med skapandet av de parametriska objekt som skulle renderas. Det första problemet gick att komma runt i och med att bilden rensades från bakgrund och stationära objekt. Det andra blev ett stort och bestående problem. Att skapa ett parametriskt objekt från grunden med olika objekt som ska sitta ihop visade sig vara för tidskrävande och hann inte påbörjas av gruppen utan blir en senare uppgift. Dessutom blev det ett problem att få till objekt som ser ut som en hand och har lika många frihetsgrader som en hand eller åtminstone tillräckligt många frihetsgrader för att likna en hand. En grundläggande strategi för att bestämma frihetsgraderna för den parametriska handen var att undersöka en beskuren djupbild av den riktiga handen. Djupbilden ska då vara beskuren så att endast handen är i fokus och där exempelvis handleden är en lämplig utgångspunkt för att börja avgöra dess orientering. Därefter kan ytterligare parametrar utrönas så att den parametriska handen kan renderas så likt originalet som möjligt. Implementationen tog längre tid än gruppen hade trott. Därför förenklades målet från att hitta och följa en hands rörelse till att hitta och följa en bolls rörelse. 2 Dokumentation Protokoll för sprintmöten har förts i form av en digital scrumboard 1, där backlog och uppgifter är listade och fördelade. Där 1

syns om en uppgift är påbörjad, arbetas på eller är klar. Kod ska fungera, vara dokumenterad och vara kollad av en annan person innan den anses vara klar. Med dokumenterad avses välkommenterad kod som beskriver dess funktionalitet och ska vara kompatibel med doxygen. Under det följande sprintmötet kommer backloggen att kollas för att bekräfta vad som är klart och om det finns eventuella rester. Resterna kommer i så fall att behöva arbetas på under ytterligare en iteration beroende på hur mycket arbete som återstår på respektive uppgift. Innan den första egentliga sprinten genomfördes en planeringssprint där backloggen formulerades, namnoch kodkonventioner valdes och en modell över arkitekturen designades. I bilden 2 nedan visas en överblick över den klasstruktur som formulerades under planeringssprinten och som senare vidareutvecklats under projektets gång. Även om den genomgående strukturen är densamma så har den utökats och ändrats lite då problem som inte var kända under planeringen dök upp. 3 Gruppmedlemmar I gruppen ingick Rasmus Karlsson, Per Johansson och Erik Hammarlund. Rasmus har varit ytterst ansvarig för aktuell version av programmet och som en del i den uppgiften ålades det honom att se till att den senaste fungerade versionen som utvecklats fanns tillgänglig för alla gruppmedlemmar. Dessutom har Rasmus haft ansvar för att programmet får in bild och djupbild från kameran på korrekt sätt med så lite brus som möjligt och även för att ta ut rätt position av bollen i tre dimensioner. Per har haft i uppgift att hålla iordning på alla gruppens dokument och som en del i uppgiften också skriva protokoll och uppdatera de levande dokumenten. Utöver dessa uppgifter har han även varit ansvarat för att rendering på grafikkortet ska stödas. Detta inkluderar initialisering av texturer, Frame Buffer Objects, shaders, samt en datastruktur för objekt. Erik har varit ansvarig att sköta kontakten med kunden genom hela projektet. Dessutom har han skrivit klasser för att skapa parametriska objekt, hjälpt Rasmus skapa funktioner som tar in bilder från djupkameran. Erik har sedan skapat funktioner som rensar upp bilden från bakgrund och bord eller vad som statiskt finns med i bilden och returnerar denna upprensade version för att kunna användas av andra klasser och funktioner. I och med att gruppen haft relativt få medlemmar har det varit svårt att dela upp projektarbetet i mindre bitar. Vissa delar är dock naturligt separerbara, såsom information från kameran och hanteringen av det samt renderingen av objektet som ska placeras ovanpå kamerabilden samt transformeringen av denna. 2

Figur 1: Urklipp från gruppens backlog Figur 2: Exempel på grundläggande klasstruktur 4 Implementering och resultat Gruppen valde att göra implementeringen i C++ med OpenGL[2] och använde GLUT[1] för fönsterhantering. Anledningen var att vi senare behövde så hög prestanda som möjligt för de kommande matchningsalgoritmerna. Med hjälp av kodbiblioteket OpenNI[3] kan en färg- och en djupbild tas ut i realtid från PrimeSense- 3

kameran. Bilden sparas som en textur och renderas sedan på ett plan framför kameran. Genom att låta djupkameran spara en bild av bakgrunden kan den subtraheras i den nuvarande bilden vilket ger en bättre separation av bollen och bakgrunden 3. Genom att undersöka positionen i den närmsta punkten kan bollen renderas ut på rätt position i tre dimensioner. 5 Vidareutveckling Eftersom det ursprungliga målet inte uppnåddes finns det fortfarande mycket att utveckla. I nuläget renderas en boll ut i den punkt som ligger närmast djupkameran, vilket innebär att det ännu inte sker någon matchning. Ett kommande steg är därför att utveckla en matchingsmetod som hjälper till att bestämma parametrar för det parametriska objektet. Därefter ska bollen så småningom bytas ut mot en hand, vilken lämpligen modelleras i ett extern program, exempelvis Maya. Denna ska sedan kunna styras i programmet på ett enkelt sätt. Att göra detta snyggt kan kräva någon form av skinning eller liknande metod. 4

Figur 3: Filtrering av bakgrund Figur 4: Skärmdump av det slutgiltiga programmet 5

Referenser [1] Glut - the opengl utility toolkit. http://www.opengl.org/resources/libraries/glut/. [Online; senast hämtad 14 januari 2014]. [2] Opengl. http://www.opengl.org/. [Online; senast hämtad 14 januari 2014]. [3] Openni. http://www.openni.org/. [Online; senast hämtad 14 januari 2014]. [4] Antonis A. Argyros Iason Oikonomidis, Nikolaos Kyriazis. Efficient modelbased 3d tracking of hand articulations using kinect. Technical report, Computational Vision and Robotics Lab., Institute of Computer Science, FORTH, 2011. 6