Algoritmus Multi-Track#

Multi-track je jednoduchý algoritmus pro sledování více objektů pro CMUcam3 vyvinutý Stevem Shermanem pro Dr. Dereka Paleyho na University of Maryland College Park Collective Dynamics and Control Lab. Jádrem algoritmu je zavolat jednoduché sledování barvy na malé oblasti obrazového snímku a poté sloučit vrácené ohraničující rámečky zpět dohromady, aby vznikl seznam nalezených objektů.

Na typickém tříkanálovém obraze v plném rozlišení bude spuštění multitrack trvat kolem 450 ms. To je ve srovnání s 300 ms pro simple_color_track a 200 ms pro základní vyhledávání jasných pixelů. Na jednokanálovém obraze v plném rozlišení bude multitrack trvat ~340 ms, jednoduché sledování barvy ~200 ms a jasné pixely přibližně 150 ms. Jsem si jist, že lze provést mnoho optimalizací, takže neváhejte algoritmus vylepšovat a zdokonalovat.

Ukázkové volání multitrack:

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;

Každý multitrack_pkt_t je definován takto:

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;

Další dokumentace by měla být k dispozici ve zdrojovém kódu, stejně jako ukázkový soubor main, ale pokud máte jakékoli dotazy, neváhejte se zeptat na fórech.