2008-07-18

Vecka 29

Nu är vecka 4 av totalt 20 över, vilket betyder att 20% av den totala tiden har passerat och jag nu officiellt gått över från förstudie- till implementationsstadiet.

Angående implementationen har jag hittils i projektet tittat på lite olika verktyg och bibliotek för att behandla video under Linux och gjort enklare segmenteringsförsök (Euklidiskt avstånd som nu kan viktas för de olika kanalerna samt en statisk metod från en artikel [PDF]) i färgrymden YCbCr. Om jag får tag på en Wii-kontroll (som har en IR-kamera av hög kvalitet) kommer jag undersöka om jag kan använda den för att hitta hudregioner, vilket skulle eliminera alla problem med varierande belysning. Det finns inte heller någon brist på algoritmer och idéer att implementera för kamerorna som spelar in synligt ljus. Nästa sak på agendan inom det området bör nog vara att rita lite histogram för de olika kanalerna över fördelningen av pixlars värden i olika ljusförhållanden och bakgrunder, vilket borde göra det möjligt att bedöma hur realistiskt det är att kunna urskilja hudområden från det övriga i bilden. Med min nuvarande kod brukar delar av en stol ofta komma med som hudområden eftersom den är såpass nära hudfärg och ofta gör brus i bilden att enskilda pixlar råkar tolkas som hud som är ute och flyger i luften. Pre- och postprocessing av datat kommer kunna hantera många sådana problem, men man får vara försiktig för att inte göra för många antaganden om hur en "acceptabel miljö" borde se ut.

En sak jag kommer behöva så småningom är generella bildbehandlingsrutiner. Jag har under tidigare projekt använt MATLAB, vilket är väldigt behändigt eftersom i princip allt man kan behöva finns implementerat redan. Octave är ett fri mjukvaru-alternativ som fungerar väldigt likt i många situationer. Jag har tittat lite översiktligt på bildbehandlingsmöjligheterna men inte fått konvertering från godtyckliga bildformat att fungera ännu, trots ett skript som använde ImageMagick för att kompensera för att dessa funktioner saknas i Octave. Eftersom MATLAB-språket är skriptat så går det komma åt koden för bildanalysfunktionerna, så om inget annat fungerar kan jag implementera det jag behöver själv genom att studera hur de har gjort.

En annan sak som vore användbart vore att i realtid strömma video från kamerorna och försöka klassificera den, samt att kunna kalibrera parametrar för algoritmer under körning genom att läsa in tangentbordstryckningar så jag slipper kompilera om eller ange nya argument vid anropet konstant. Det skulle heller inte skada att jag undersökte FFmpeg-rutinerna för konvertering mellan olika bildformat.

Under denna veckan har jag skrivit några backup-skript som automatiskt kopierar min källkod och rapport en gång i veckan och även lagrar kopior på universitetets servrar. Jag har testat att använda ett föremål med kända färgvärden för att kompensera för förändringar i belysning utan större framgångar än så länge. "Föremålet" är en rosa Post-It som jag först filmade på nära håll för att plocka ut lappens färgvärde och sedan letar efter i träningsvideon genom att stegvis öka det tillåtna avståndet i färgrymden. Tanken är att när lappen kan identifieras så kan förändringen mellan den uppfattade färgen och de sedan tidigare kända värdena användas för att korrigera hela bilden, men förbättringen har hittils varit marginell.

Största delen av veckan använde jag dock till att skriva på ett delavsnitt i rapporten där jag beskriver HMM (gömda markov-modeller) ganska detaljerat. Eventuellt är min beskrivning mer ingående än vad som behövs, men eftersom jag aldrig implementerat algoritmerna själv så är det en bra möjlighet för mig att lära mig dom (vilket är en förutsättning för att jag ska kunna beskriva dom på ett begripligt sätt).

Nästa vecka kommer jag fortsätta att skriva på de delar av rapporten som känns mest viktiga och troligtvis skicka in vad jag hittils har producerat till min handledare inom universitetet. Han är fortfarande på semester, men om han läser mail och ser mitt utkast till rapporten kommer han bli någorlunda uppdaterad om vad jag håller på med. Det kan också hjälpa för min egen skull att veta att jag producerar text som kommer bli läst inom inte den ej avlägsna framtiden så jag inte skjuter alltför mycket framåt och håller högre kvalitet på det jag skriver.

Inga kommentarer: