Nästa bild är identisk, förutom att en erosion nu har gjort att rutorna nu inte sitter ihop. De är alltså olika kopplade komponenter och får olika färger (men de börjar bli så många att man har svårt att särskilja vissa färger).
Slutligen en riktig bild, där jag med binär thresholding har behållit alla föremål med vissa ljusvärden och sedan "öppnat bilden" (opening) för att bli av med några tusen pixlar som orsakats av brus (som annars skulle räknats som "kopplade komponenter" och tilldelats unika färger).
Arbetet med kopplade komponenter tog oväntat lång tid, men resultatet är väldigt praktiskt i många sammanhang. Exempelvis antar några författare att den största kopplade komponenten i bilden som är hudfärgad är användarens hand/arm, vilket verkar fungera bra.Den nuvarande tanken för mitt projekt är att mjukvaran först genomgår en kalibreringsfas där användaren håller upp handen framför kameran. Snakes (aktiva konturer) är nuvarande det starkaste hoppet för att kunna följa handens form, men som bilden nedan visar skulle en väldigt enkel lösning vara att indikera ett område där alla pixlar antas vara hud och be användaren att hålla handen innanför.
Det viktigaste som behövs just nu är robust kantdetektering, eftersom det som jag beskrivit vore bättre att inte behöva förlita sig på färginformation för att hitta handen, utan istället semi-automatiskt hitta handen och extrahera den informationen under kalibreringen.
Bilden ovan visar en snake med 25 punkter som knappt syns och förvirrat försöker inhägna inget i allmänhet, men tre av punkterna har ett "energilandskap" utritat kring sig. Varje punkt använder flera olika mått för att bestämma sin nya position men tanken är alltid att minimera energin, där måttet på "energi" är saker som att försöka hålla jämna avstånd till sina grannar, behålla en fin, rund form, söka sig mot ljusa föremål och kanter. Av de fyra måtten jag nyss nämnde visar de färgade områdena de första tre (röd - "ballongenergi", grön - "kontinuititetsenergi", blå - "intensitetsenergi"). De mörkare områdena inom de färgade grannskapen för punkterna visar vars energin är lägst, vilket är vars punkten vill röra sig. Det sista måttet på energi är att söka sig mot kanter, vilket är det viktigaste och något som jag inte har fungerande i alla olika situationer än (närmare bestämt i nerskalade/subsamplade bilder, vilket jag tänkt använda med snakes för att låta dom hierarkiskt söka sig till bättre anpassningar).Jag har också utökat min faltningsfunktion i veckan för att bland annat hantera kanteffekter bättre genom att reflektera delar av bilden och skapa en större utökad version under operationen. Detta ledde oväntat nog till ett ganska roligt tidsfördriv, eftersom det inte är något som hindrar att man reflekterar 100% av bilden, live.
Min LCD-skärm är större än din (och mer självrefererande).
Det här är en del av ett fönster.
Nu är det vecka 35, vilket betyder att nästa vecka är den tionde och halva tiden för exjobbet är över nu. Det känns som om jag fått mycket gjort, men jag uppskattar att jag inte varit framsynt nog att inse hur mycket arbete vissa saker skulle kräva i förväg. Om jag hade vetat det i förväg är det inte lika säkert att jag kommit igång. Högst på dagsordningen nästa vecka står att ordna kantdetektering som fungerar bra vid låg upplösning, jag har några redan implementerade metoder som kan fungera, annars finns Canny. Utöver det vill jag få gråskalemorfologi att fungera, halvt av samma anledning (kantdetektering) och titta på om varians/standardfördelningen i bilden ger några ledtrådar till vilka områden som innehåller hud. Rapporten börjar hamna bakom det jag faktiskt gjort också, så förr eller senare borde jag gå över till att skriva mer och programmera mindre, men just nu vill jag få mer resultat.






