Çoklu İzleme Algoritması#

Multi-track, Steve Sherman tarafından Maryland Üniversitesi College Park Collective Dynamics and Control Lab’de Dr. Derek Paley için geliştirilmiş, CMUcam3 için basit bir çoklu nesne izleme algoritmasıdır. Algoritmanın çekirdeği, görüntü karesinin küçük alanlarında basit renk izlemeyi çağırmak ve ardından döndürülen sınırlayıcı kutuları bulunan nesnelerin bir listesini vermek üzere tekrar birleştirmektir.

Tipik bir üç kanallı tam çözünürlüklü görüntüde, multitrack’in çalıştırılması yaklaşık 450 ms sürecektir. Bu, simple_color_track için 300 ms ve temel bir parlak piksel araması için 200 ms ile karşılaştırılabilir. Tam çözünürlüklü tek kanallı bir görüntüde, multitrack ~340 ms, basit renk izleme ~200 ms ve parlak piksel yaklaşık 150 ms sürecektir. Yapılacak birçok optimizasyon olduğundan eminim, bu yüzden algoritmayı kurcalamaktan ve iyileştirmekten çekinmeyin.

multitrack’in örnek bir çağrısı:

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;

Her multitrack_pkt_t şu şekilde tanımlanır:

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;

Daha fazla belge, bir örnek main dosyasının yanı sıra kaynak kodda mevcut olmalıdır, ancak herhangi bir sorunuz varsa forumlarda sormaktan çekinmeyin.