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.