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.