Förklaring av färgspårning#
Vad innebär att spåra en färg och hur gör CMUcam4 det?#
Färgspårning är förmågan att ta en bild, isolera en viss färg och extrahera information om var i bilden en region finns som innehåller just den färgen. Anta som exempel att du får ett fotografi som innehåller en röd boll som ligger på en grusväg. Om någon bad dig att rita en ruta runt allt som var rött i bilden skulle du ganska enkelt rita en rektangel runt bollen. Detta är grundidén bakom färgspårning. Du behövde inte veta att objektet var en boll. Du behövde bara ha ett begrepp om färgen röd för att isolera objektet i bilden. Nedan går vi kort igenom hur CMUcam4 faktiskt använder informationen i en kamerabild för att utföra färgspårning.
För att ange en färg måste du definiera ett minsta och ett största tillåtna värde för tre färgkanaler. Varje unik färg representeras av ett rött, grönt och blått värde som anger hur mycket av varje kanal som blandas in i den unika färgen. Det knepiga med att ange en färg är att du måste definiera ett intervall av tillåtna värden för alla tre färgkanalerna. Eftersom ljus inte är perfekt enhetligt och ett objekts färg inte är perfekt enhetlig måste du ta höjd för dessa variationer. Du vill dock inte lätta på dessa gränser för mycket, annars accepteras många oönskade färger. Eftersom varje färgkanal, i CMUcam4:s fall, omvandlas till ett tal mellan 0 och 255, kan du avgränsa varje kanal med två tal, en övre och en nedre gräns. Om du har två gränser för var och en av de tre kanalerna innebär det att sex värden kan användas för att begränsa hela den färgrymd du vill spåra. Om du föreställer dig färgerna representerade av en kub där varje sida är en annan färgkanal (röd, grön och blå) skulle de sex värden som används för att välja din färg rita en tredimensionell låda inuti den kuben som definierar din önskade uppsättning färger.
När du har en gräns för den färg du vill spåra tar CMUcam4 dessa gränser och bearbetar bilden. Det finns många sätt att spåra färger i en bild som kan vara ganska komplexa. CMUcam4 använder en enkel enpass-algoritm som bearbetar varje ny bildruta från kameran oberoende. Den börjar längst upp till vänster i bilden och undersöker sekventiellt varje pixel rad för rad. Om den pixel den inspekterar faller inom det färgintervall som användaren angav markerar den den pixeln som spårad. Den undersöker också den aktuella spårade pixelns position för att se om den är den översta, understa, vänstraste eller högraste positionen av alla spårade pixlar som hittats hittills i bilden. Om den finner att pixeln är utanför den aktuella begränsningsrutan för det spårade området växer den begränsningsrutan så att den innehåller denna nya pixel. Eftersom placeringen av även en enda spårad pixel kan ändra begränsningsrutan kan begränsningsrutan ibland fluktuera ganska mycket från bild till bild. Brusfiltrering (se nästa stycke) kan användas för att minska en del av den fluktuationen. Den enda andra viktiga informationen som lagras är en summa av de horisontella och vertikala koordinaterna för de spårade pixlarna. I slutet av bilden tar CMUcam4 den horisontella summan och den vertikala summan av de spårade pixlarna och dividerar var och en med det totala antalet spårade pixlar och får ett värde som visar var mitten av det spårade objektet är beläget. Eftersom varje spårad pixel endast bidrar med en liten del till de slutliga horisontella och vertikala summorna är mitten (ofta kallad tyngdpunkten) av de spårade pixlarna vanligtvis ett mycket stabilare mått än begränsningsrutan. När alla pixlar i bilden har kontrollerats kan det totala antalet spårade pixlar också användas tillsammans med begränsningsrutans area för att beräkna konfidensen för och antalet pixlar i det spårade objektet.
Brusfiltrering gör att vi kan göra färgspårningsintervallen större så att vi kan tillåta större variationer i bildens pixelvärden utan att andra slumpmässiga variationer i bilden spåras. Idén bakom brusfiltrering är att vi endast vill betrakta en pixel som tillhörande den spårade färgen om den är en del av en grupp pixlar som ligger inom färgspårningsgränserna. I CMUcam4 implementerar vi detta på ett sätt som endast kräver ett enda pass över bilden. Medan pixlarna i en bild bearbetas upprätthåller CMUcam4 en räknare som håller reda på hur många sekventiella pixlar i den aktuella raden, före den aktuella pixeln, som låg inom de spårade färggränserna. Om det värdet är över brusfiltervärdet markeras den aktuella pixeln som en spårad pixel.
Vad är ett histogram och vad är det bra för?#
Ett histogram är en typ av diagram som visar frekvensen och fördelningen av data. När det gäller CMUcam4 visar histogrammet frekvensen och fördelningen av de färgvärden som hittas i en bild. Varje stapel representerar ett intervall av färgvärden för en specifik kanal. CMUcam4 kan dela upp de möjliga färgvärdena från 0 till 255 i 1, 2, 4, 8, 16, 32 och 64 olika fack. Varje fack innehåller antalet pixlar i bilden som faller inom vissa färggränser. Ett stort värde i ett visst fack betyder alltså att många av dessa färger hittades i bilden. Varje histogram representerar endast en utvald färgkanal.
Histogram är ett sätt att abstrahera innehållet i en bild. De har många användningsområden såsom primitiv objektigenkänning, tröskling eller färgbalansering. De är särskilt användbara för att skilja mellan olika texturer. Prova att rikta CMUcam4 med auto-gain avstängt mot två olika texturerade ytor och lägg märke till skillnaden i deras färgfördelningar. Denna effekt kan användas för att skilja mellan golvytor eller upptäcka hinder.