]> Creatis software - bbtk.git/commitdiff
We can pass the spacing,if the input image doesn't have (and if we now it)
authorjean-pierre roux <jean-pierre.roux@creatis.insa-lyon.fr>
Thu, 27 Nov 2008 14:55:54 +0000 (14:55 +0000)
committerjean-pierre roux <jean-pierre.roux@creatis.insa-lyon.fr>
Thu, 27 Nov 2008 14:55:54 +0000 (14:55 +0000)
packages/itk/src/bbitkImageSeriesReader.cxx
packages/itk/src/bbitkImageSeriesReader.h

index 1a18bcbb97138b1024ac4780cf6da16f7581165d..68de42d33d37370de47b2343945d0ee1138afc8a 100644 (file)
@@ -2,8 +2,8 @@
   Program:   bbtk
   Module:    $RCSfile: bbitkImageSeriesReader.cxx,v $
   Language:  C++
-  Date:      $Date: 2008/11/26 10:13:32 $
-  Version:   $Revision: 1.7 $
+  Date:      $Date: 2008/11/27 14:55:54 $
+  Version:   $Revision: 1.8 $
 =========================================================================*/
 
 /* ---------------------------------------------------------------------
@@ -44,6 +44,21 @@ namespace bbitk
   
   BBTK_ADD_BLACK_BOX_TO_PACKAGE(itk,ImageSeriesReader);
 
+  void ImageSeriesReader::bbUserConstructor()
+  {
+    bbSetInputXSpacing(-1.);
+    bbSetInputYSpacing(-1.);
+    bbSetInputZSpacing(-1.);
+  }
+  
+  void ImageSeriesReader::bbUserCopyConstructor(bbtk::BlackBox::Pointer)
+  {    
+  }
+  
+  void ImageSeriesReader::bbUserDestructor()
+  {
+  }
+    
   void ImageSeriesReader::Read()
   {
     const std::vector<std::string>& filenames = bbGetInputFileNames();
@@ -77,6 +92,7 @@ namespace bbitk
     genericReader->SetFileName(filename.c_str());
     genericReader->ReadImageInformation();
     
+    // a stack of 2D images will result as a 3D image // JPRx
     int plusUn;
     if (filenames.size()>1)
        plusUn = 1;
@@ -84,6 +100,7 @@ namespace bbitk
        plusUn = 0;
     
     bbtk::TypeInfo typ = GetITKImagePtrTypeInfoFromPixelTypeInfoAndDimension(genericReader->GetComponentTypeInfo(), genericReader->GetNumberOfDimensions() + plusUn);
+    
       
     BBTK_TEMPLATE_ITK_IMAGE_SWITCH(typ,Read);
     
@@ -111,6 +128,29 @@ namespace bbitk
        bbtkError("could not read image series : "<<e.what());
       }
 
+    // JPRx     
+    typename itkImageType::SpacingType spacingJPRx;
+        
+    bool spacingToBeSet = false;
+    if (bbGetInputXSpacing() > 0.)
+    {
+       spacingToBeSet = true;
+       spacingJPRx[0]= bbGetInputXSpacing();
+    }
+    if (bbGetInputYSpacing() > 0.)
+    {
+       spacingToBeSet = true;
+       spacingJPRx[1]= bbGetInputYSpacing();
+    }
+    if (bbGetInputZSpacing() > 0.)
+    {
+       spacingToBeSet = true;
+       spacingJPRx[2]= bbGetInputZSpacing();
+    }
+    if (spacingToBeSet)
+       reader->GetOutput()->SetSpacing(spacingJPRx);   
+    // JPRx 
+
     reader->GetOutput()->Register();
     //    if (bbGetOutputOut()) 
     bbSetOutputOut ( reader->GetOutput() );
index 7f3337fbcaeb95bec8624dfa4490b9eca0bb5e8b..2c78ba550e4a84e3b7a84c736d1ee5933978727f 100644 (file)
@@ -2,8 +2,8 @@
   Program:   bbtk
   Module:    $RCSfile: bbitkImageSeriesReader.h,v $
   Language:  C++
-  Date:      $Date: 2008/11/26 10:13:32 $
-  Version:   $Revision: 1.9 $
+  Date:      $Date: 2008/11/27 14:55:54 $
+  Version:   $Revision: 1.10 $
 =========================================================================*/
 
 /* ---------------------------------------------------------------------
@@ -55,8 +55,18 @@ namespace bbitk
     
     BBTK_BLACK_BOX_INTERFACE(ImageSeriesReader,
                             bbtk::AtomicBlackBox);
-
+    //==================================================================
+    /// User callback called in the box contructor
+    virtual void bbUserConstructor();
+    /// User callback called in the box copy constructor
+    virtual void bbUserCopyConstructor(bbtk::BlackBox::Pointer);
+    /// User callback called in the box destructor
+    virtual void bbUserDestructor();
+    //==================================================================
     BBTK_DECLARE_INPUT(FileNames,std::vector<std::string>);
+    BBTK_DECLARE_INPUT(XSpacing,float);
+    BBTK_DECLARE_INPUT(YSpacing,float);    
+    BBTK_DECLARE_INPUT(ZSpacing,float);    
     BBTK_DECLARE_OUTPUT(Out,anyImagePointer);
     BBTK_PROCESS(Read);
     void Read();
@@ -78,6 +88,10 @@ namespace bbitk
   typedef std::vector<std::string> vectorofstring;
   BBTK_INPUT(ImageSeriesReader,FileNames,
             "vector of file names with complete paths",vectorofstring,"file names list");
+  BBTK_INPUT(ImageSeriesReader,XSpacing, "if images don't contain information",float,"");           
+  BBTK_INPUT(ImageSeriesReader,YSpacing, "if images don't contain information",float,"" );          
+  BBTK_INPUT(ImageSeriesReader,ZSpacing, "if images don't contain information",float,"");
+            
   BBTK_OUTPUT(ImageSeriesReader,Out,"Output itk::image<T,D> with type T and dimension D determined by the content of the files + vector size",anyImagePointer,"");
   
   BBTK_END_DESCRIBE_BLACK_BOX(ImageSeriesReader);