2008-08-08

Vecka 32

Oroligheterna inom företaget fortsätter och det är alltmer oklart vad framtiden kommer innehålla för Teligent. Stora nedskärningar har påbörjats under veckan och kontoret i Umeå har inte sluppit undan. Det kvarstår att se vad som kommer hända med företaget i allmänhet och med detta kontor, men jag har inte så många alternativ annat än att fortsätta med mitt arbete.

Jag ägnade mig under början av veckan åt att implementera morfologiska operationer i mängder, vilket började med erosion och dilation och fortsatte med opening, closing, boundary detection, hit-or-miss samt delar av andra operationer. Bilden nedan demonstrerar boundary detection (dvs kantdetektering), inklusive de problem med bakgrund som har jämförbar ljusintensitet som mig själv.
Med detta implementerat gjorde jag ett nytt försök med rörelsedetektering. Tidigare hade jag skrivit en enkel funktion som jämförde nuvarande bildruta med den föregående pixel för pixel och färglagde dom som förändrats tillräckligt mycket. Detta var mer eller mindre meningslöst eftersom nivån av bruset i bilden såg till att varenda pixel ständigt var i förändring. Det jag gjorde annorlunda nu var att plocka ut en referensbild när man byter till rörelsedetekteringsläget eller trycker R (reset). Vid varje efterföljande bildruta beräknas en "avståndskarta" (distance map) jämfört med referensen och om rörelse upptäcks färgläggs det området. På bilden nedan har jag jämfört med referensbilden höjt min arm. Märk väl att själva handen inte upptäcks, eftersom väggen i bakgrunden under lysrörsbelysningen och ljuset utifrån har i princip identisk färg som min hud och förändringen i färgvärde när handen rör sig inte är tillräcklig för att upptäcka den.
Ännu en bild nedan visar en binär mask där områden som har rörelse har värdet 0 (vita), medan övriga är 1 (svarta). Utöver rörelsedetekteringen har jag även lekt med morfologi genom att utföra en "öppning" (morphological opening) med ett ganska stort strukturelement. Detta resulterar i att detaljer som är mindre än strukturelementet försvinner, större objekt blir mer eller mindre opåverkade (vilket kan vara behändigt för att minska brus).
Det uppenbara testet var nu att kombinera rörelse med färgdetektering, så endast områden som rör på sig och matchar färgen hos hud finns kvar, vilket resulterade i bilden nedan.
Det ser väldigt lovande ut, bortsett från de kritvita regionerna som på grund av ljuset utifrån är för långt bort från hudfärg så plockas hud och endast hud ut (jag rörde inte min vänstra hand). Problemen kommer när man inser att "målvärdet" för vilken färg som motsvarar hud fortfarande påverkas kraftigt av belysning (både från lysrör och solen), samt att metoden inte kan se skillnad på en hudfärgat (från kamerans synpunkt) del av väggen där det tidigare fanns en axel eller något annat som rört sig och en yta som tidigare inte hade hud men nu har det. Jag tror dock att rörelse i kombination med färg-baserad detektering kan användas för att spåra händernas rörelse.

Utöver implementering (till viss del omstrukturering av tidigare kod som kunde förbättras) hade jag på torsdagen också första mötet med Fredrik Georgsson, min handledare inom universitetet. Vi kommer mötas veckovis framöver, vilket säkert kommer hjälpa mig att undvika att ägna tid åt kod eller kapitel som inte leder någonstans. Jag fick många intressanta förslag på saker jag borde testa och en hög artiklar, varav jag börjat läsa en hittils.

Det kan verka som om jag ägnar oproportioneligt mycket tid åt att försöka segmentera hudområden i den dåliga ljusmiljön som finns här, men eftersom jag när som helst skulle kunna förenkla processen genom att införa enfärgad (mörk) bakgrund och/eller ställa kameran i ett rum där belysningen inte ändras ser jag det som en utmaning att undersöka hur pass robust segmentering jag kan åstadkomma under svåra och varierande förhållanden innan jag börjar förenkla uppgiften. Inom några veckor vill jag dock kunna gå över till att beräkna features som ska klassificeras till det tecken som utförts, vilket kräver att segmenteringen fungerar någotsånär. Själva klassificeringen kommer om föregående steg är fungerande vara ganska enkel, men jag vill också hinna jämföra så många olika metoder som möjligt, så jag bör kanske inte vänta alltför länge.

Under nästa vecka kommer jag till att börja med försöka koda några förslag jag fått av Fredrik och också skriva på de delar av rapporten som berör olika metoder för att dela in bilder i områden med och utan hud. Jag kommer också fortsätta läsa de nytillkomna artiklarna och arbeta in deras resultat i rapporten.

Inga kommentarer: