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); }
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; }
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; }