LabelImageType::Pointer getYousefSegmented(InputImageType::Pointer im_input,std::list<Seed> &seed_list,char *filename) { // copy the image into a unsigned char * char configfile[1024]; strcpy(configfile,filename); printf("Entering YousefSeg\n"); InputImageType::SizeType size = im_input->GetLargestPossibleRegion().GetSize(); unsigned char * in_Image; in_Image = (unsigned char*) malloc( size[0]*size[1]*(size[2]+1)*sizeof(unsigned char)); if(in_Image == NULL) { printf("Couldn't allocate memory\n"); } memset(in_Image,0,size[0]*size[1]*(size[2]+1)*sizeof(unsigned char)); ConstIteratorType pix_buf(im_input,im_input->GetLargestPossibleRegion()); int ind = 0; for ( pix_buf.GoToBegin(); !pix_buf.IsAtEnd(); ++pix_buf, ++ind ) in_Image[ind]=(pix_buf.Get()); printf("Copied input data\n"); yousef_nucleus_seg *NucleusSeg = new yousef_nucleus_seg(); NucleusSeg->readParametersFromFile(configfile); NucleusSeg->setDataImage(in_Image,size[0],size[1],size[2]+1,"null"); unsigned short * output_img; // int *bounds_img; NucleusSeg->runBinarization(); output_img = NucleusSeg->getBinImage(); // getITKImage(output_img); // getProcessedBinaryImage( NucleusSeg->runSeedDetection(); std::vector<Seed> seeds = NucleusSeg->getSeeds(); printf("In yousef_seg Seed size = %d\n", (int)seeds.size()); std::vector<Seed>::iterator iter = seeds.begin(); for(;iter!=seeds.end();iter++) { seed_list.push_back(*iter); } NucleusSeg->runClustering(); printf("Finished Clustering\n"); if(NucleusSeg->isSegmentationFinEnabled()) { NucleusSeg->runAlphaExpansion3D(); output_img=NucleusSeg->getSegImage(); } else { output_img=NucleusSeg->getClustImage(); } // bounds_img = NucleusSeg->getBoundsImage(); printf("Finished segmentation\n"); LabelImageType::Pointer label = LabelImageType::New(); label->SetRegions(im_input->GetLargestPossibleRegion()); label->Allocate(); LabelIteratorType liter(label,label->GetLargestPossibleRegion()); ind = 0; for(liter.GoToBegin();!liter.IsAtEnd();++liter,++ind) { liter.Set(output_img[ind]); } delete NucleusSeg; free(in_Image); return label; }