Examensarbeten Informationskodning/Datorgrafik

Kontakt: Ingemar Ragnemalm (ingis AT isy PUNKT liu PUNKT se.)
OBS! Denna sida handlar om exjobbsförslag från Ingemar Ragnemalm.
Övriga examensarbeten hos ICG finns på hemsidan.

Examensarbetena är uppdelade i ett antal kategorier nedan.

(Uppdaterad 111013. Inaktuella exjobb är bortplockade och några nya har tillkommit.)

Datorgrafik, spelprogrammering, bildbehandling, bildkodning

1. Renderingsmotor för parallellprocessor

Detta examensarbete syftar till att producera ett relativt komplett fungerande 3D-renderingsbibliotek för en ny parallellarkitektur, ePUMA, som är under utveckling på ISY. Denna renderingsmotor skall fungera som prototyp för senare implementation i ePUMA-assembly (ej del av exjobbet). Programkoden utvecklas i vanligt högnivåspråk, men med så mycket hänsyn till målakitekturen som möjligt.

2. Grafikalgoritmer för parallellprocessor

Detta examensarbete syftar till att producera en eller flera grafikalgoritmer för en ny parallellarkitektur, ePUMA, som är under utveckling på ISY. Programkoden utvecklas i en simulator. Förslag på algoritmer att studera: Strålföljning, kurvritning, fotonmappning, ytfyllning, synlighetsberäkning(visibility), kollisionsdetektering... Detta examensarbete gäller primärt algoritmer som inte kräver en komplett renderingskedja (vilket täcks av föregående exjobbsförslag). [EXJOBBET ÄR TAGET. DOCK ÄR FLER LIKNANDE EXJOBB VARA AKTUELLA.]

3. Bildbehandlingsalgoritmer för parallellprocessor

Detta examensarbete syftar till att producera en eller flera grafikalgoritmer för en ny parallellarkitektur, ePUMA, som är under utveckling på ISY. Programkoden utvecklas i en simulator. Förslag på algoritmer att studera: Kantdetektering, stereomatchning, detektering av featurepunkter, avståndstransform, watersheds...

4. Renderingsmotor för CUDA eller OpenCL

En trend i datorgrafik är att grafikprocessorer blir allt mer generella. Detta examensarbete syftar till att utvärdera om en ren mjukvarurenderare kan implementeras effektivt på en modern grafikprocessor, samt jämföra dess prestanda med konventionell grafikkod (förslagsvis OpenGL).

5. Videokodning för parallellprocessor

Detta examensarbete syftar till att producera programkod för avkodning av komprimerad video för en ny parallellarkitektur, ePUMA, som är under utveckling på ISY. (Se även förslag från Jens Ogniewski på ICG's allmänna exjobbsförslagssida.)

6. Korsplattforms-API för OpenGL

Det finns ett antal bibliotek för att utveckla plattformsoberoende OpenGL-kod, som GLUT, SDL och GLFW. Dock har alla dessa lösningar kritiska begränsningar. SDL och GLFW är enbart tänkta för spel och saknar stöd för t.ex. multifönstertillämpningar. GLUT är väletablerat, har ett mycket bra API, men tyvärr några klumpiga lösningar som gör att det inte riktigt räcker för seriösa tillämpningar. Detta examensarbete har kodnamnet GLAT - GL Alternative Toolkit - och syftar till att producera ett nytt bibliotek, förslagsvis baserat på GLUT och FreeGLUT, som ser över problem och begränsingar för att producera ett bättre bibiotek. Detta bibliotek bör minst stödja MS Windows, Linux och Mac OSX (iPhone OS och Android är ytterligare förslag), skall vara open source, och så lätt att installera att installation inte skall kunna vara en stötesten för någon plattform.

Programkoden bör skrivas i C, men detta är förhandlingsbart så länge det resulterande biblioteket kan anropas från C (och därmed i princip alla språk).

7. Dynamiskt syntaxsystem för shaders och beräkningskärnor

Alla shaderspråk och GPU computing-språk har tagits fram för att följa C-syntax. Detta examensarbete syftar till att ta fram ett system som tillåter programmeraren att själv, så långt det är möjligt, välja syntax, typiskt för att syntaxen skall vara så lik värdprogrammets syntax som möjligt. Förslag på syntax att stöjda: Python, Pascal, Ada, Smalltalk.

8. Kodintegrering i OpenCL

OpenCL är ett språk för parallellprogrammering på bl.a. GPUer. OpenCL's kernelkod är dock inte integrerad i huvudprogrammet, som CUDA tillåter. Examensarbetet syftar till att ta fram en preprocessor som tillåter OpenCL-kod att integreras somi CUDA, samt i detta sammanhang studera syntaxvarianter för att uttrycka parallelismen på ett lättfattligt sätt.

9. Analys av säkerhetstryck med standardkameror

En imponerande teknik för säkerhetstryck, identifiering av falska resp äkta objekt (sedlar, checkar mm) har tagits fram av ett tyskt företag. Denna teknik är baserad på analys av tryckta mönster på mikroskopisk nivå. Ett problem med tekniken är kostnaden för hårdvara för att utföra denna analys. Detta examensarbete syftar till att analysera till vilken grad det är möjligt att implementera tekniken med vanliga standardkameror, och vilken säkerhetsnivå som då kan erhållas.

10. Interaktiv videokodning

När man kodar video är det ofta ett svårt och tidsödande problem att hitta rätt codec-inställning, så man får största möjliga kompression med bibehållen kvalitet. Examensarbetet består i att ta fram en programvara som löser detta problem på bästa sätt, genom att på ett snabbt och effektivt (och helst intuitivt) sätt ge användaren en förtitt på kodningsresultatet. Som eventiellt tillägg kan programmet även hjälpa användaren att hitta kritiska delar av materialet genom att analysera dess innehåll (lämpligtvis med lämpliga intervaller). Typiskt bör man söka efter brus och rörelser, områden med stora krav på datatakt.

Existerande videokodningsmjukvara, som QuickTime eller ffmpeg får användas. Genom dessa kan lösningen göras tillämpbar på många olika format.

11. Utvärdering av plattformar för spelprogrammering

Datorspelsbranschen domineras idag av C++, Java och Flash. Det finns flera alternativa språk som industrin ofta förbiser av olika anledningar. Detta examensarbete syftar till att utvärdera vanliga och ovanliga alternativ så neutralt som möjligt och sammanställa deras styrkor och svagheter. För att göra detta måste ett antal väl valda testfall designas och implementeras på de valda plattformarna.

Vi tänker oss att minst tre plattformar/språk utvärderas, varav minst ett skall vara mindre vanligt men intressant för problemet, så det inte bara är en jämförelse av de mest konventionella lösningarna. Såväl 2D som 3D-spel kan ingå, möjligen båda.

12. Visualisering av kroppsskador

Detta examensarbete är forskningsnära. Det syftar till att ta fram en programvara i vilken man kan registrera kroppskador på en modell av en människokropp, samt på ett visuellt sätt presentera statistik på uppsättningar av många skadefall. Huvudproblemet är datorgrafik, men även användbarhetsfrågor ingår.

Andra ämnen som jag är intresserad av men inte har konkreta förslag kring just nu (men vi diskuterar gärna)

Användbarhet

1. Kodnära användargränssnittskonstruktion

Vi har tidigare arbetat med en annorlunda inrikning för design av användargränssnitt, där fokus ligger mer på koden, för att minska problemen som uppstår när man går från layout till kod. I tidigare arbeten har detta applicerats på spelgränssnitt med specialskrivna kontroller. Detta examensarbete syftar till att vidareutveckla dessa koncept och utveckla lösningar för konventionella GUI-program med standardkontroller.

2. Ett nytt hierarkiskt dataformat och dess tillämpning på vektorgrafik.

Vi har designat ett nytt dataformat, som är tänkt att ersätta eller komplettera XML, speciellt för hierarkiska data. Examensarbetet syftar till att applicera detta format på verkliga problem, förslagsvis vektorgrafik, och därmed påvisa formatets användbarhet samt analysera svagheter och föreslå ev. kompletteringar. Jämförelser med andra nya format som JSON och YAML bör ingå.

3. Det olösbara problemet med portabla användargränssnitt

Inom programvaruindustrin möter man ofta uppfattningen att det är omöjligt att producera bra användargränssnitt som samtidigt är plattformsoberoende. Vi anser att detta är en onödigt pessimistisk synvinkel; bara för att diverse mer eller mindre klumpiga lösningar producerar dåliga gränssnitt betyder det inte att det inte är möjligt. Detta examensarbete syftar till att lösa detta "omöjliga" problem genom att analysera begränsningar i existerande lösningar och föreslå alternativa angreppssätt. En implementation (om än mycket inkomplett) av den föreslagna lösningen bör ingå.

4. Grafiskt användargränssnitt för inbyggda system

Grafiska användarränssnitt (GUI) är självklara i många produkter idag. Ändå finns det ingen tydlig lösning för hur man gör sådana för små inbyggda system, där man arbetar mot små, oftast svartvita skärmar, och systemet har starkt begränsad mängd minne och prestanda. Exjobbet syftar till att designa och implementera ett sådant system. Arbetet utförs mot en viss plattform, men bör designas så att det är möjligt at med minimal arbetsinsats föra över resultatet till andra inbygggda system.

Egna förslag

Om du har ett specialintresse som inte täcks av ovanstående förslag, men som du tror skulle kunna bli ett lämpligt examensarbete, så är jag beredd att diskutera saken. Om jag bedömer att uppgiften är lämplig, dvs lagom omfattning och att det går att skriva en trevlig exjobbsrapport om ämnet så kan vi oftast diskutera oss fram till en bra form.

Det kan också hända att du finner något förslag intressant men skulle vilja angripa det från någon annan vinkel än den jag beskriver. Sådana fall är oftast bara trevliga och jag diskuterar dem mycket gärna.

Industriexjobb

Förslagen på denna sida är tänkta för interna exjobb. Vi examinerar även externa exjobb. För dessa utförs normalt arbetet på ett företag, och då skall det finnas en handledare på plats. Vi tillhandahåller då främst handledning kring rapporten.

Handledare och examinator

Vi beslutar individuellt, beroende på ämne och vår arbetssituation, vem som är handledare respektive examinator. Oftast är jag (Ingemar) examinator, ibland även handledare.

Ansökan

Ansökan är normalt helt informellt. Du tar kontakt med mig, och jag beslutar om jag kan anta dig till exjobbet genast eller om jag bör välja mellan flera sökande.

Plats och arbetsredskap

Som examensarbetare får du tillgång till våra exjobbararbetsplatser, samt fikarum, och vi förser dig med en (oftast stationär) dator som skall räcka för det problem du skall arbeta med. Dock är tillgången på nya datorer begränsad så vi ibland måste kompromissa.

"Stora" och "små" examensarbeten

Vi är mest vana vid "stora" 30 hp-exjobb, men 15-poängs är också möjliga. Eftersom dessa är under kortare tid så är det speciellt viktigt att vi diskuterar omfattning, då våra förslag oftast är tänkta för 30 hp. De flesta förslag ovan är skalbara till 15 hp.