อัลกอริทึม Multi-Track#

Multi-track เป็นอัลกอริทึมการติดตามวัตถุหลายชิ้นอย่างง่ายสำหรับ CMUcam3 ที่พัฒนาโดย Steve Sherman สำหรับ Dr. Derek Paley ที่ห้องปฏิบัติการ Collective Dynamics and Control ของมหาวิทยาลัย Maryland College Park แก่นของอัลกอริทึมคือการเรียกการติดตามสีอย่างง่ายบนพื้นที่เล็กๆ ของเฟรมภาพ แล้วรวมกรอบขอบเขตที่ส่งคืนมากลับเข้าด้วยกันเพื่อให้ได้รายการของวัตถุที่พบ

สำหรับภาพความละเอียดเต็มสามช่องทั่วไป multitrack จะใช้เวลาประมาณ 450 ms ในการดำเนินการ เมื่อเทียบกับ 300ms สำหรับ simple_color_track และ 200ms สำหรับการค้นหาพิกเซลสว่างพื้นฐาน สำหรับภาพช่องเดียวความละเอียดเต็ม multitrack จะใช้เวลาประมาณ 340ms การติดตามสีอย่างง่ายประมาณ 200ms และพิกเซลสว่างประมาณ 150ms ฉันแน่ใจว่ามีการปรับให้เหมาะสมอีกมากมายที่ทำได้ ดังนั้นสามารถลองปรับแต่งและปรับปรุงอัลกอริทึมได้ตามสบาย

ตัวอย่างการเรียกใช้ 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 ตัวอย่างด้วย แต่หากคุณมีคำถามใดๆ สามารถถามในฟอรัมได้ตามสบาย