Pointillistisk målning robotarm (12 / 15 steg)
Steg 12: Grundläggande bildbehandling
Bild ingång kan antingen hård-kodad av användaren eller tas från Kameradata manuellt. Även om uCam kan ta RAW färgfoton, är denna mängden data onödiga för att generera den binära matris som Galileo använder för att bestämma vilka "pixlar" att måla. Jag konfigurerat kameran för att ta en gråskalebild med en 80 av 60 pixlar. Data från kameran kommer i enda byte, vilket gör hanteringen bilden mycket lättare att processen (4800 byte i alla).
Här är programmet flödet från att ta en bild:
läsa in bilddata i en enkel matris
cykla men den nya matrisen
om värdet är över en viss tröskel, konvertera det till ett högsta värde (kontrast ända upp!), annars minska det till 0
beskära bilden till 60 av 60 pixlar
Ladda den beskurna bilden i två dimensionell array
ta det genomsnittliga värdet av en 4 block kvadratiska delen av matrisen
om genomsnittet är minst hälften mörk, ställ sedan in pixeln i en ny mindre matris (30 x 30) vara mörka också
Beskär den nya små matrisen vara 24 24 pixlar
Bilden har nu minskat ner tillräckligt för att användas som indata för motion planeraren.