Multi-Track algoritmus#

A Multi-Track egy egyszerű, több tárgyat követő algoritmus a CMUcam3-hoz, amelyet Steve Sherman fejlesztett Dr. Derek Paley számára a Marylandi Egyetem College Park Collective Dynamics and Control Labjában. Az algoritmus lényege, hogy egyszerű színkövetést hív meg a képkocka kis területein, majd a visszaadott befoglaló kereteket összeolvasztja, hogy a talált tárgyak listáját adja.

Egy tipikus háromcsatornás, teljes felbontású képen a multitrack körülbelül 450 ms alatt fut le. Ez a simple_color_track 300 ms-ához és egy alapvető fényespixel-kereséshez tartozó 200 ms-hoz képest. Egy teljes felbontású, egycsatornás képen a multitrack ~340 ms-ot, az egyszerű színkövetés ~200 ms-ot, a fényespixel-keresés pedig körülbelül 150 ms-ot vesz igénybe. Biztos vagyok benne, hogy sok optimalizálást lehet még végezni, ezért nyugodtan bütyköljön az algoritmuson, és fejlessze tovább.

A multitrack egy példahívása:

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;

Minden multitrack_pkt_t a következőképpen van definiálva:

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;

További dokumentációnak elérhetőnek kell lennie a forrásban, valamint egy minta main fájlnak, de ha bármilyen kérdése van, nyugodtan tegye fel a fórumokon.