From: Eduardo DAVILA Date: Tue, 1 Mar 2016 14:14:58 +0000 (+0100) Subject: #2865 BBTK Feature New Normal - new option in CleanExternalPlane DimImage+2 (Type 1) X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?p=bbtk.git;a=commitdiff_plain;h=6827eadc2157e47cc354282c7992fe052e6b5ca0 #2865 BBTK Feature New Normal - new option in CleanExternalPlane DimImage+2 (Type 1) --- diff --git a/packages/std/src/bbstdFilesFromDirectory.cxx b/packages/std/src/bbstdFilesFromDirectory.cxx index 05283bc..61fb34c 100644 --- a/packages/std/src/bbstdFilesFromDirectory.cxx +++ b/packages/std/src/bbstdFilesFromDirectory.cxx @@ -188,7 +188,7 @@ int FilesFromDirectory::Explore(std::string const &dirpath, bool recursive) // Real POSIX implementation: scandir is a BSD extension only, and doesn't // work on debian for example - DIR* dir = opendir(dirName.c_str()); + DIR* dir = opendir( dirName.c_str() ); if (!dir) { return 0; diff --git a/packages/vtk/src/bbvtkCleanExternalPlane.cxx b/packages/vtk/src/bbvtkCleanExternalPlane.cxx index c7306d0..b6d8a6e 100644 --- a/packages/vtk/src/bbvtkCleanExternalPlane.cxx +++ b/packages/vtk/src/bbvtkCleanExternalPlane.cxx @@ -35,30 +35,16 @@ namespace bbvtk BBTK_ADD_BLACK_BOX_TO_PACKAGE(vtk,CleanExternalPlane) BBTK_BLACK_BOX_IMPLEMENTATION(CleanExternalPlane,bbtk::AtomicBlackBox); -//===== -// Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost) -//===== -void CleanExternalPlane::Process() -{ - -// THE MAIN PROCESSING METHOD BODY -// Here we simply set the input 'In' value to the output 'Out' -// And print out the output value -// INPUT/OUTPUT ACCESSORS ARE OF THE FORM : -// void bbSet{Input|Output}NAME(const TYPE&) -// const TYPE& bbGet{Input|Output}NAME() const -// Where : -// * NAME is the name of the input/output -// (the one provided in the attribute 'name' of the tag 'input') -// * TYPE is the C++ type of the input/output -// (the one provided in the attribute 'type' of the tag 'input') +//---------------------------------------------------------------------- +void CleanExternalPlane::CleanTypeA(vtkImageData* image) +{ if ( bbGetInputIn()!=NULL ) { int i,j; int ext[6]; int dim[3]; - bbGetInputIn()->GetWholeExtent(ext); + image->GetWholeExtent(ext); dim[0]=ext[1]-ext[0]+1; dim[1]=ext[3]-ext[2]+1; @@ -69,36 +55,104 @@ void CleanExternalPlane::Process() { for (j=0 ; jSetScalarComponentFromDouble (i, j, 0 , 0, 0.0); - bbGetInputIn()->SetScalarComponentFromDouble (i, j, dim[2]-1, 0, 0.0); - } - } + image->SetScalarComponentFromDouble (i, j, 0 , 0, 0.0); + image->SetScalarComponentFromDouble (i, j, dim[2]-1, 0, 0.0); + } // for j + }// for i // YZ plane for (i=0 ; iSetScalarComponentFromDouble (0 , i, j, 0, 0.0); - bbGetInputIn()->SetScalarComponentFromDouble (dim[0]-1 , i, j, 0, 0.0); - } - } + image->SetScalarComponentFromDouble (0 , i, j, 0, 0.0); + image->SetScalarComponentFromDouble (dim[0]-1 , i, j, 0, 0.0); + } // for j + } // for i // YZ plane for (i=0 ; iSetScalarComponentFromDouble (i, 0 , j, 0, 0.0); - bbGetInputIn()->SetScalarComponentFromDouble (i, dim[1]-1 , j, 0, 0.0); - } - } + image->SetScalarComponentFromDouble (i, 0 , j, 0, 0.0); + image->SetScalarComponentFromDouble (i, dim[1]-1 , j, 0, 0.0); + } // for j + }// for i + } // if In +} + +//---------------------------------------------------------------------- +void CleanExternalPlane::CleanTypeB() +{ + + int ext[6]; + int dimA[3]; + int dimB[3]; + bbGetInputIn()->GetWholeExtent(ext); + + dimA[0] = ext[1]-ext[0]+1; + dimA[1] = ext[3]-ext[2]+1; + dimA[2] = ext[5]-ext[4]+1; + + dimB[0] = dimA[0] + 2; + dimB[1] = dimA[1] + 2; + dimB[2] = dimA[2] + 2; + - - } - + imageoutput->Initialize(); + imageoutput->SetScalarType( bbGetInputIn()->GetScalarType() ); + imageoutput->SetSpacing( bbGetInputIn()->GetSpacing() ); + imageoutput->SetDimensions( dimB[0], dimB[1], dimB[2] ); + imageoutput->AllocateScalars(); - bbSetOutputOut( bbGetInputIn() ); + + int j,k; + long sizeBlock= dimA[0] * bbGetInputIn()->GetScalarSize(); + + for (j=0;jGetScalarPointer(1,j+1,k+1) , bbGetInputIn()->GetScalarPointer(0,j,k) , sizeBlock ); + } + } + imageoutput->Update(); + imageoutput->Modified(); +} + + +//===== +// Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost) +//===== +void CleanExternalPlane::Process() +{ + +// THE MAIN PROCESSING METHOD BODY +// Here we simply set the input 'In' value to the output 'Out' +// And print out the output value +// INPUT/OUTPUT ACCESSORS ARE OF THE FORM : +// void bbSet{Input|Output}NAME(const TYPE&) +// const TYPE& bbGet{Input|Output}NAME() const +// Where : +// * NAME is the name of the input/output +// (the one provided in the attribute 'name' of the tag 'input') +// * TYPE is the C++ type of the input/output +// (the one provided in the attribute 'type' of the tag 'input') + + if (bbGetInputType()==0) + { + CleanTypeA( bbGetInputIn() ); + bbSetOutputOut( bbGetInputIn() ); + } + + if (bbGetInputType()==1) + { + CleanTypeB(); + CleanTypeA(imageoutput); + bbSetOutputOut( imageoutput ); + } + @@ -111,7 +165,8 @@ void CleanExternalPlane::bbUserSetDefaultValues() // SET HERE THE DEFAULT INPUT/OUTPUT VALUES OF YOUR BOX // Here we initialize the input 'In' to 0 - bbSetInputIn(0); + bbSetInputIn(NULL); + bbSetInputType(0); } //===== @@ -125,6 +180,7 @@ void CleanExternalPlane::bbUserInitializeProcessing() // but this is where you should allocate the internal/output pointers // if any + imageoutput = vtkImageData::New(); } //===== @@ -137,9 +193,9 @@ void CleanExternalPlane::bbUserFinalizeProcessing() // Here does nothing // but this is where you should desallocate the internal/output pointers // if any - + imageoutput->Delete(); } -} -// EO namespace bbvtk + +} // EO namespace bbvtk diff --git a/packages/vtk/src/bbvtkCleanExternalPlane.h b/packages/vtk/src/bbvtkCleanExternalPlane.h index 864cb77..d10d165 100644 --- a/packages/vtk/src/bbvtkCleanExternalPlane.h +++ b/packages/vtk/src/bbvtkCleanExternalPlane.h @@ -48,8 +48,14 @@ class bbvtk_EXPORT CleanExternalPlane // Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost) //===== BBTK_DECLARE_INPUT(In,vtkImageData*); + BBTK_DECLARE_INPUT(Type,int); BBTK_DECLARE_OUTPUT(Out,vtkImageData*); BBTK_PROCESS(Process); + + vtkImageData* imageoutput; + void CleanTypeA(vtkImageData*); + void CleanTypeB(); + void Process(); //===== // Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost) @@ -62,6 +68,7 @@ BBTK_BEGIN_DESCRIBE_BLACK_BOX(CleanExternalPlane,bbtk::AtomicBlackBox); BBTK_DESCRIPTION("change the gray level of the externals planes of the image to 0 value."); BBTK_CATEGORY("filter"); BBTK_INPUT(CleanExternalPlane,In,"Input image",vtkImageData*,""); + BBTK_INPUT(CleanExternalPlane,Type,"0 = (default) not modifie Dimention. 1 = Add outside plane (Dimension of image change)",int,""); BBTK_OUTPUT(CleanExternalPlane,Out,"Output image",vtkImageData*,""); BBTK_END_DESCRIBE_BLACK_BOX(CleanExternalPlane); //===== diff --git a/packages/vtk/src/bbvtkCreateImage.cxx b/packages/vtk/src/bbvtkCreateImage.cxx index 305fec3..e408b93 100644 --- a/packages/vtk/src/bbvtkCreateImage.cxx +++ b/packages/vtk/src/bbvtkCreateImage.cxx @@ -54,25 +54,24 @@ void CreateImage::Process() // (the one provided in the attribute 'type' of the tag 'input') - printf("EED CreateImage::Process Start\n"); double spc[6]; int dim[3]; int outputformat = VTK_UNSIGNED_SHORT; - if (bbGetInputOutputFormat()=="VTK_BIT") outputformat = VTK_BIT; // 1 - else if (bbGetInputOutputFormat()=="VTK_CHAR") outputformat = VTK_CHAR; // 2 + if (bbGetInputOutputFormat()=="VTK_BIT") outputformat = VTK_BIT; // 1 + else if (bbGetInputOutputFormat()=="VTK_CHAR") outputformat = VTK_CHAR; // 2 else if (bbGetInputOutputFormat()=="VTK_SIGNED_CHAR") outputformat = VTK_SIGNED_CHAR; // 15 else if (bbGetInputOutputFormat()=="VTK_UNSIGNED_CHAR") outputformat = VTK_UNSIGNED_CHAR; // 3 - else if (bbGetInputOutputFormat()=="VTK_SHORT") outputformat = VTK_SHORT; // 4 + else if (bbGetInputOutputFormat()=="VTK_SHORT") outputformat = VTK_SHORT; // 4 else if (bbGetInputOutputFormat()=="VTK_UNSIGNED_SHORT") outputformat = VTK_UNSIGNED_SHORT; // 5 - else if (bbGetInputOutputFormat()=="VTK_INT") outputformat = VTK_INT; // 6 + else if (bbGetInputOutputFormat()=="VTK_INT") outputformat = VTK_INT; // 6 else if (bbGetInputOutputFormat()=="VTK_UNSIGNED_INT") outputformat = VTK_UNSIGNED_INT; // 7 - else if (bbGetInputOutputFormat()=="VTK_LONG") outputformat = VTK_LONG; // 8 + else if (bbGetInputOutputFormat()=="VTK_LONG") outputformat = VTK_LONG; // 8 else if (bbGetInputOutputFormat()=="VTK_UNSIGNED_LONG") outputformat = VTK_UNSIGNED_LONG; // 9 - else if (bbGetInputOutputFormat()=="VTK_FLOAT") outputformat = VTK_FLOAT; // 10 - else if (bbGetInputOutputFormat()=="VTK_DOUBLE") outputformat = VTK_DOUBLE; // 11 + else if (bbGetInputOutputFormat()=="VTK_FLOAT") outputformat = VTK_FLOAT; // 10 + else if (bbGetInputOutputFormat()=="VTK_DOUBLE") outputformat = VTK_DOUBLE; // 11 spc[0] = bbGetInputSpacing()[0]; spc[1] = bbGetInputSpacing()[1]; @@ -113,7 +112,6 @@ void CreateImage::Process() imageoutput->Modified(); bbSetOutputOut(imageoutput); - printf("EED CreateImage::Process End\n"); } @@ -166,9 +164,8 @@ void CreateImage::bbUserFinalizeProcessing() // but this is where you should desallocate the internal/output pointers // if any imageoutput->Delete(); - -} } -// EO namespace bbvtk + +}// EO namespace bbvtk