Exemplo n.º 1
0
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//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;
}
Exemplo n.º 2
0
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//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;
}