Shaderbaserad stereomatching med lokala algoritmer

In English ]

Examensarbete i datavetenskap utfört av Karl Jonsson 2002-2003 redovisat 2003-09-15
Handledare: Lennarth Ohlsson, Instutitionen för Datavetenskap, Lunds Universitet

Nedladdning

Documentation
Abstract (pdf)
Report (pdf)

Programs (zip)
VirtualSource
D3DFilter
StereoRenderer

Movie clips (zip)
stereo
disparity
fog

Beskrivning

Moderna grafikkort har skapat nya möjligheter inom bildbehandlingen. De är mycket effektiva då det gäller att arbeta med grafiska operationer som transformationer och ljussättning. Det talas i nuläget om att de är en faktor 200 snabbare vid dessa beräkningar än processorn. Dessutom går utvecklingen inom datorgrafikområdet snabbare än utvecklingen av processorer. En av de senaste innovationerna är att inkludera programmerbara delar på grafikkorten för att öka flexibiliteten vid programmering. Dessa delar som kallas shaders är främst tänkta att användas för effekter i exempelvis datorspel, men samtidigt skapar flexibiliteten möjligheter inom andra områden. Inom ämnena datorseende och bildanalys krävs ofta mycket datorkapacitet, eftersom beräkningar på bilder är mycket krävande. Dessutom ligger applikationer här inte särskilt långt från applikationer inom datorgrafiken. Det har visats att enklare bildanalysoperationer kan utföras på grafikkort. Detta examensarbete syftade till att undersöka om grafikkort lämpar sig för att utföra mer komplex bildbehandling. Problemet ligger nämligen i att inte alla typer av operationer kan utföras på ett effektivt sätt här. Som bildanalysalgoritm valdes stereo matchning. Syftet med matchningen är att koppla två

bilder tagna från olika vinklar med varandra. Från denna koppling kan sedan scenen rekonstrueras. Detta är för övrigt det samma som sker i vår hjärna när bilder från ögonen kombineras till djupseende. Endast täta algoritmer som verkar på varje pixel i de bilder som undersöks valdes. Eftersom täta algoritmer tidigare av beräkningstekniska skäl inte har undersökts särskilt väl, visade det sig vara svårt att finna någon riktigt bra algoritm. De implementerade algoritmerna applicerades både på stillbilder och strömmande video. Vid matchning av videosekvenser i stereo finns verkligt behov av snabba och effektiva implementeringar och det är lätt att finna tillämpningar för dessa. Exempelvis kan två kameror kopplas till datorn för att ge datorn djupseende. Eftersom arbetet utfördes i Windows-miljö användes programmeringsgränssnittet DirectX. Närmre bestämt delmängden Direct3D för bildanalysberäkningarna och DirectShow för videobearbetningen. Genom att designa separata komponenter i DirectShow ökades flexibiliteten i användningen. Detta gjorde det möjligt att välja olika typer av källor och att skriva resultatet antingen till monitorn eller till en filmfil. Slutresultatet visade att det var en klar fördel att utnyttja grafikkortet för de beräkningar som krävdes.

Tidsåtgång vid matchning

Grafen nedan visar tidsåtgång som funktion av bildstorlek vid implementation av en matchningsalgoritm. Den undre linjen är matchningsalgoritmen implementerad med shaders i grafikkortet och den övre är motsvarande algoritm klassiskt implementerad.

Båda implementationerna är utförda i C++, för jämförbarhet och effektivitet. Detta ger en tydlig indikation att GPU-implementationer av lokala matchningsalgoritmer kan utföras effektivare på grafikkort.