多目标跟踪算法#

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 文件,但如果您有任何问题,欢迎在论坛中提问。