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