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)
- Deformerbara kroppar
- Level sets
- Modellering av naturliga objekt, som träd och moln
- Ansiktsanimation
- Avancerad ljussättning och ljussättning i speciella situationer
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.