多目标跟踪算法#
Multi-track 是一个用于 CMUcam3 的简单多目标跟踪算法,由 Steve Sherman 为马里兰大学帕克分校集体动力学与控制实验室的 Derek Paley 博士开发。该算法的核心是在图像帧的小区域上调用简单的颜色跟踪,然后将返回的边界框合并在一起,从而给出找到的物体列表。
在典型的三通道全分辨率图像上,multitrack 执行大约需要 450 毫秒。相比之下,simple_color_track 为 300 毫秒,基本的亮像素搜索为 200 毫秒。在全分辨率单通道图像上,multitrack 大约需要 340 毫秒,简单颜色跟踪约 200 毫秒,亮像素约 150 毫秒。我确信还有许多可以进行的优化,因此欢迎随意调整和改进该算法。
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;
每个 multitrack_pkt_t 定义如下:
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;
更多文档应可在源代码中找到,还有一个示例 main 文件,但如果您有任何问题,欢迎在论坛中提问。