/////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //detect and save detected boxes double *detect(IplImage *IM,MODEL *MO,double thresh,int *D_NUMS,double *A_SCORE) { //for time measurement clock_t t1,t2,t3; //initialize scale information for hierachical detection double *scales=ini_scales(MO->MI,IM,IM->width,IM->height); //initialize feature-size matrix int *featsize=ini_featsize(MO->MI); //calculate feature pyramid t1=clock(); double **feature=calc_f_pyramid(IM,MO->MI,featsize,scales); t2=clock(); //detect boundary boxes double *boxes = get_boxes(feature,scales,featsize,MO,D_NUMS,A_SCORE,thresh); t3=clock(); s_free(scales); //release scale-information s_free(featsize); //release feat size information free_features(feature,MO->MI); return boxes; }
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //detect and save detected boxes FLOAT *detect(IplImage *IM,MODEL *MO,FLOAT thresh,int *D_NUMS,FLOAT *A_SCORE) { /* for measurement */ struct timeval tv; struct timeval tv_ini_scales_start, tv_ini_scales_end; float time_ini_scales; struct timeval tv_ini_feat_size_start, tv_ini_feat_size_end; float time_ini_feat_size; struct timeval tv_get_boxes_start, tv_get_boxes_end; float time_get_boxes; struct timeval tv_calc_f_pyramid_start, tv_calc_f_pyramid_end; float time_calc_f_pyramid = 0; //for time measurement clock_t t1,t2,t3; //initialize scale information for hierachical detection gettimeofday(&tv_ini_scales_start, NULL); FLOAT *scales=ini_scales(MO->MI,IM,IM->width,IM->height); gettimeofday(&tv_ini_scales_end, NULL); //initialize feature-size matrix gettimeofday(&tv_ini_feat_size_start, NULL); int *featsize=ini_featsize(MO->MI); gettimeofday(&tv_ini_feat_size_end, NULL); //calculate feature pyramid t1=clock(); gettimeofday(&tv_calc_f_pyramid_start, NULL); FLOAT **feature=calc_f_pyramid(IM,MO->MI,featsize,scales); gettimeofday(&tv_calc_f_pyramid_end, NULL); tvsub(&tv_calc_f_pyramid_end, &tv_calc_f_pyramid_start, &tv); time_kernel += tv.tv_sec * 1000.0 + (float)tv.tv_usec / 1000.0; time_calc_f_pyramid += tv.tv_sec * 1000.0 + (float)tv.tv_usec / 1000.0; printf("\n"); printf("calc_f_pyramid %f[ms]\n", time_calc_f_pyramid); t2=clock(); //detect boundary boxes gettimeofday(&tv_get_boxes_start, NULL); FLOAT *boxes = get_boxes(feature,scales,featsize,MO,D_NUMS,A_SCORE,thresh); gettimeofday(&tv_get_boxes_end, NULL); t3=clock(); #if 1 // tvsub(&tv_ini_scales_end, &tv_ini_scales_start, &tv); // time_ini_scales = tv.tv_sec * 1000.0 + (float)tv.tv_usec / 1000.0; // tvsub(&tv_ini_feat_size_end, &tv_ini_feat_size_start, &tv); // time_ini_feat_size = tv.tv_sec * 1000.0 + (float)tv.tv_usec / 1000.0; // tvsub(&tv_calc_f_pyramid_end, &tv_calc_f_pyramid_start, &tv); // time_calc_f_pyramid = tv.tv_sec * 1000.0 + (float)tv.tv_usec / 1000.0; // tvsub(&tv_get_boxes_end, &tv_get_boxes_start, &tv); // time_get_boxes = tv.tv_sec * 1000.0 + (float)tv.tv_usec / 1000.0; // printf("ini_scales : %f\n", time_ini_scales); // printf("ini_feat_size : %f\n", time_ini_feat_size); // printf("calc_f_pyramid : %f\n", time_calc_f_pyramid); // printf("get_boxes : %f\n", time_get_boxes); printf("\n"); #endif s_free(scales); //release scale-information s_free(featsize); //release feat size information free_features(feature,MO->MI); return boxes; }