Thuật Toán Multi-Track#

Multi-track là một thuật toán theo dõi nhiều đối tượng đơn giản cho CMUcam3 được phát triển bởi Steve Sherman cho Tiến sĩ Derek Paley tại Phòng thí nghiệm Động lực học và Điều khiển Tập thể của Đại học Maryland College Park. Cốt lõi của thuật toán là gọi color track đơn giản trên các vùng nhỏ của khung hình ảnh và sau đó gộp các khung bao được trả về lại với nhau để đưa ra một danh sách các đối tượng được tìm thấy.

Trên một ảnh ba kênh độ phân giải đầy đủ điển hình, multitrack sẽ mất khoảng 450 ms để thực thi. Điều này so với 300ms cho simple_color_track, và 200ms cho một tìm kiếm pixel sáng cơ bản. Trên một ảnh một kênh độ phân giải đầy đủ, multitrack sẽ mất ~340ms, simple color track ~200ms và bright pixel khoảng 150ms. Tôi chắc rằng có nhiều tối ưu hóa cần thực hiện, vì vậy cứ tự nhiên nghịch và cải tiến thuật toán.

Một ví dụ gọi 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;

Mỗi multitrack_pkt_t được định nghĩa như sau:

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;

Tài liệu chi tiết hơn sẽ có sẵn trong mã nguồn, cũng như một tập tin main mẫu, nhưng nếu bạn có bất kỳ câu hỏi nào, cứ tự nhiên hỏi trên các diễn đàn.