Multi-Track-algoritmi#
Multi-track on yksinkertainen useiden kohteiden seuranta-algoritmi CMUcam3:lle, jonka Steve Sherman kehitti tri Derek Paleylle Marylandin yliopiston College Parkin Collective Dynamics and Control -laboratoriossa. Algoritmin ydin on kutsua yksinkertaista värinseurantaa kuvaruudun pienille alueille ja yhdistää sitten palautetut rajaavat laatikot takaisin yhteen löydettyjen kohteiden luettelon muodostamiseksi.
Tyypillisessä kolmikanavaisessa täysresoluutioisessa kuvassa multitrackin suoritus kestää noin 450 ms. Tämä on verrattuna simple_color_trackin 300 ms:iin ja peruskirkkaan pikselin haun 200 ms:iin. Täysresoluutioisessa yksikanavaisessa kuvassa multitrack kestää ~340 ms, yksinkertainen värinseuranta ~200 ms ja kirkas pikseli noin 150 ms. Olen varma, että optimointeja on tehtävissä paljon, joten voit vapaasti näpertää ja parantaa algoritmia.
Esimerkki multitrackin kutsumisesta:
multitrack_pkt_t tracker;
cc3_pixbuf_load(); //takes picture
multitrack(&tracker);
//make sure to free the memory after you are done to prevent a memory leak
free(tracker.objects);
tracker.entries=0;
Kukin multitrack_pkt_t määritellään seuraavasti:
typedef struct {
uint8_t entries; // the number of objects
cc3_track_pkt_t* objects;//pointer to the array of objects
cc3_track_pkt_t base; //the reference color data
uint8_t divh; //number of rows of blocks
uint8_t divw; //number of columns of blocks
uint16_t tolerance; //max distance track_pkts must be to merge
uint8_t minpix; // minimum number of pixels to not be filtered
uint8_t mindensity; //minimum density to not be filtered
uint8_t minwidth; //minimum dimension of a track pkt
} multitrack_pkt_t;
Lisädokumentaatiota pitäisi olla saatavilla lähdekoodissa, samoin kuin esimerkki main-tiedosto, mutta jos sinulla on kysyttävää, voit vapaasti kysyä foorumeilla.