From 5e45ba6586eff364b295a5477d7af4d44af83a7e Mon Sep 17 00:00:00 2001 From: Eduardo DAVILA Date: Fri, 2 Jun 2017 09:22:19 +0200 Subject: [PATCH] #3095 BBTK Feature New Normal - Box Segmentation Connectivity add multiple input points --- .../vtk/src/bbvtkSegmentationConnectivity.cxx | 92 ++++++++++--------- 1 file changed, 49 insertions(+), 43 deletions(-) diff --git a/packages/vtk/src/bbvtkSegmentationConnectivity.cxx b/packages/vtk/src/bbvtkSegmentationConnectivity.cxx index 218c9db..3b28389 100644 --- a/packages/vtk/src/bbvtkSegmentationConnectivity.cxx +++ b/packages/vtk/src/bbvtkSegmentationConnectivity.cxx @@ -149,50 +149,56 @@ namespace bbvtk void SegmentationConnectivity::DoProcess() { - int outputformat = bbtkStaticLecture::GetTypeFormat( bbGetInputOutputFormat() , bbGetInputIn() ); - - - - vtkImageData *imagedata = bbGetInputIn(); - imagedata->UpdateInformation(); - imagedata->SetUpdateExtent(imagedata->GetWholeExtent()); - imagedata->Update(); - thresh2->ThresholdBetween(3000, 3001); - thresh2->SetInput(imagedata); - thresh2->ThresholdBetween(bbGetInputThresholdMinMax()[0], bbGetInputThresholdMinMax()[1]); - thresh2->Modified(); - thresh2->Update(); -// EED 2016 06 15 -// cast2->Modified(); -// cast2->Update(); - connect2->RemoveAllSeeds (); - int x = bbGetInputPositionXYZ()[0]; - int y = bbGetInputPositionXYZ()[1]; - int z = bbGetInputPositionXYZ()[2]; - - int ext[6]; - imagedata->GetWholeExtent(ext); - int maxx = ext[1]-ext[0]+1; - int maxy = ext[3]-ext[2]+1; - int maxz = ext[5]-ext[4]+1; - if ( x<0 ) { printf("Warnnig bbtk::vtk::SegmentationConnectivity::DoProcess limites of the image out of range x: %d -> 0 \n",x ); x=0; } - if ( y<0 ) { printf("Warnnig bbtk::vtk::SegmentationConnectivity::DoProcess limites of the image out of range y: %d -> 0 \n",y ); y=0;} - if ( z<0 ) { printf("Warnnig bbtk::vtk::SegmentationConnectivity::DoProcess limites of the image out of range z: %d -> 0 \n",z ); z=0;} - - if ( x>=maxx ) { printf("Warnnig bbtk::vtk::SegmentationConnectivity::DoProcess limites of the image out of range x: %d -> %d \n",x, maxx-1 ); x=maxx-1; } - if ( y>=maxy ) { printf("Warnnig bbtk::vtk::SegmentationConnectivity::DoProcess limites of the image out of range y: %d -> %d \n",y, maxy-1 ); y=maxy-1; } - if ( z>=maxz ) { printf("Warnnig bbtk::vtk::SegmentationConnectivity::DoProcess limites of the image out of range z: %d -> %d \n",y, maxz-1 ); z=maxz-1; } - - connect2->AddSeed( x,y,z ); - connect2->SetOutputConnectedValue( bbGetInputValue() ); - cast4->SetOutputScalarType( outputformat ); - - connect2->Modified(); - connect2->Update(); - cast4->Update(); - bbSetOutputOut(cast4->GetOutput() ); - } + int x,y,z; + int i,numPoints = bbGetInputPositionXYZ().size()/3; + int verif = (bbGetInputPositionXYZ().size()-1) % 3; + if (( numPoints>=1) && (verif==2) && (bbGetInputIn()!=NULL)) + { + int outputformat = bbtkStaticLecture::GetTypeFormat( bbGetInputOutputFormat() , bbGetInputIn() ); + vtkImageData *imagedata = bbGetInputIn(); + imagedata->UpdateInformation(); + imagedata->SetUpdateExtent(imagedata->GetWholeExtent()); + imagedata->Update(); + thresh2->ThresholdBetween(3000, 3001); + thresh2->SetInput(imagedata); + thresh2->ThresholdBetween(bbGetInputThresholdMinMax()[0], bbGetInputThresholdMinMax()[1]); + thresh2->Modified(); + thresh2->Update(); + connect2->RemoveAllSeeds (); + + int ext[6]; + imagedata->GetWholeExtent(ext); + int maxX = ext[1]-ext[0]+1; + int maxY = ext[3]-ext[2]+1; + int maxZ = ext[5]-ext[4]+1; + + for (i=0;i=0) || (x=0) || (y=0) || (zAddSeed( x,y,z ); + } else { + printf("EED WARNNIG! In box: SegmentationConnectivity point out of range \n"); + } // if point inside image + + } // for i + connect2->SetOutputConnectedValue( bbGetInputValue() ); + cast4->SetOutputScalarType( outputformat ); + connect2->Modified(); + connect2->Update(); + cast4->Update(); + bbSetOutputOut(cast4->GetOutput() ); + } else { + printf("EED WARNNIG! In box: SegmentationConnectivity List of points are not coherent. \n"); + bbSetOutputOut( NULL ); + }// if numPoints verif + +} + }// EO namespace bbvtk -- 2.44.0