cv::Mat_<int>* Segmentation_SLIC::segmentImage_SLIC(cv::Mat* in, int k, float M, int iteration){
	this->k = k;			//number of clusters
	N = width * height;		//number of points
	S = (int)sqrt(1.0 * N / k);			//grid(window) size
	this->M = M;					//色と距離の重み付け
	
	if(!initialized){
		initMemory_SLIC();			//Init GPU memory			
		initialized = true;
	}

	initLD_SLIC();					//init pixel parameters		
	copyInputImage_SLIC(in);	//set input image
	computeGrd();					//compute gradients
	sampleInitialClusters();		//sample clusters, move centers	

	/*cudaDeviceSynchronize();
	unsigned t1 = clock();*/
	for(int i = 0; i < iteration; i++){
		set_ld();					//Set cluster IDs		
		aggregateClusters();		//Analyze cluster clouds		
		resetAggregationUnit();			
	}
	//cudaDeviceSynchronize();
	//std::cout << (clock() - t1) / 1000.0 << std::endl;

	postProcess();
	setOutputImage();
	return &bw;
}
cv::Mat_<int> Segmentation_SLIC::segmentImage_SLIC(cv::Mat_<cv::Vec3b> in){
						
	
	//init pixel parameters		
	initLD_SLIC();
	//set input image
	copyInputImage_SLIC(in);	
	//compute gradients
	computeGrd();	
	//sample clusters, move centers	
	sampleInitialClusters();		

	/*cudaDeviceSynchronize();
	unsigned t1 = clock();*/
	for(int i = 0; i < Iteration; i++){
		//Set cluster IDs	
		set_ld();			
		resetAggregationUnit();			
		//Analyze cluster clouds
		aggregateClusters();				
	}
	//cudaDeviceSynchronize();
	//std::cout << (clock() - t1) / 1000.0 << std::endl;

	//postProcess();
	setOutputImage();
	return bw;
}
t_ld	*create_ld(void)
{
	t_ld	*ld;

	ld = NULL;
	if ((ld = (t_ld *)malloc(sizeof(t_ld))))
		set_ld(ld);
	return (ld);
}
Beispiel #4
0
int
main ()
{
  int *p;

  p = get_gd ();
  set_gd (3);
  if (*p != 3 || !test_gd (3))
    abort ();

  p = get_ld ();
  set_ld (4);
  if (*p != 4 || !test_ld (4))
    abort ();

  printf ("PASS\n");

  return 0;
}
Beispiel #5
0
static int
do_test (void)
{
  int *p;

  p = get_gd ();
  set_gd (3);
  if (*p != 3 || !test_gd (3))
    abort ();

  p = get_ld ();
  set_ld (4);
  if (*p != 4 || !test_ld (4))
    abort ();

  printf ("PASS\n");

  return 0;
}