Multi-Track 알고리즘#
Multi-track은 University of Maryland College Park의 Collective Dynamics and Control Lab에서 Derek Paley 박사를 위해 Steve Sherman이 개발한 CMUcam3용 간단한 다중 물체 트래킹 알고리즘입니다. 이 알고리즘의 핵심은 이미지 프레임의 작은 영역에 대해 간단한 컬러 트랙을 호출한 다음 반환된 경계 상자들을 다시 병합하여 발견된 물체 목록을 제공하는 것입니다.
일반적인 3채널 전체 해상도 이미지에서, multitrack은 실행하는 데 약 450 ms가 걸립니다. 이는 simple_color_track의 300ms, 기본 밝은 픽셀 검색의 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 파일과 함께 소스에서 확인할 수 있어야 하지만, 질문이 있으면 포럼에서 자유롭게 문의하십시오.