]> Creatis software - clitk.git/blobdiff - vv/vvImageReader.txx
Account for transform when updating display extent of vf, fusion and overlay
[clitk.git] / vv / vvImageReader.txx
index 31937bfbc229fe83919f721cbeeb4dce6f772c1e..3c5e1545878b27511d100c559db30a1c2f473dbf 100644 (file)
@@ -57,7 +57,7 @@ void vvImageReader::UpdateWithDim(std::string InputPixelType)
     std::cerr << "Error, input pixel type : " << InputPixelType << " unknown !" << std::endl;
 
   if (CLITK_EXPERIMENTAL && mLastError.size()==0) {
-    ReadNkiImageTransform();
+    //ReadNkiImageTransform();
     ReadMatImageTransform();
   }
 }
@@ -68,14 +68,12 @@ void vvImageReader::UpdateWithDim(std::string InputPixelType)
 template<class InputPixelType, unsigned int VImageDimension>
 void vvImageReader::UpdateWithDimAndInputPixelType()
 {
-
-  //  DD(mType);
-
   if (mType == MERGEDWITHTIME)   // In this case we can load the images
     // one at the time to avoid excessive
     // memory use
   {
     mImage=vvImage::New();
+
     for (std::vector<std::string>::const_iterator i=mInputFilenames.begin(); i!=mInputFilenames.end(); i++) {
       typedef itk::Image< InputPixelType, VImageDimension-1 > InputImageType;
       typedef itk::ImageFileReader<InputImageType> ReaderType;
@@ -83,7 +81,7 @@ void vvImageReader::UpdateWithDimAndInputPixelType()
       reader->ReleaseDataFlagOn();
       reader->SetFileName(*i);
       try {
-        reader->Update();
+        mImage->AddItkImage<InputImageType>(reader->GetOutput());
       } catch ( itk::ExceptionObject & err ) {
         std::cerr << "Error while reading " << mInputFilenames[0].c_str()
                   << " " << err << std::endl;
@@ -92,7 +90,6 @@ void vvImageReader::UpdateWithDimAndInputPixelType()
         mLastError = error.str();
         return;
       }
-      mImage->AddItkImage<InputImageType>(reader->GetOutput());
     }
   } else if (mType == SLICED) {
     mImage=vvImage::New();
@@ -120,27 +117,26 @@ void vvImageReader::UpdateWithDimAndInputPixelType()
     filter->SetInput(reader->GetOutput());
     filter->ReleaseDataFlagOn();
     try {
-      filter->Update();
+      mImage->AddItkImage<SlicedImageType>(filter->GetOutput());
     }
     catch ( itk::ExceptionObject & err ) {
       std::cerr << "Error while slicing " << mInputFilenames[0].c_str()
                 << "(slice #" << mSlice << ") " << err << std::endl;
       return;
     }
-    mImage->AddItkImage<SlicedImageType>(filter->GetOutput());
   } else {
     if (mInputFilenames.size() > 1) {
       typedef itk::Image< InputPixelType, VImageDimension > InputImageType;
       typedef itk::ImageSeriesReader<InputImageType> ReaderType;
       typename ReaderType::Pointer reader = ReaderType::New();
-      for (std::vector<std::string>::const_iterator i=mInputFilenames.begin(); i!=mInputFilenames.end(); i++)
-        std::cout << (*i) << std::endl;
       reader->SetFileNames(mInputFilenames);
-      //if (mUseAnObserver) {
-      //reader->AddObserver(itk::ProgressEvent(), mObserver);
-      //}
+      reader->ReleaseDataFlagOn();
+
       try {
-        reader->Update();
+        if (mType == IMAGEWITHTIME)
+          mImage=vvImageFromITK<VImageDimension,InputPixelType>(reader->GetOutput(),true);
+        else
+          mImage=vvImageFromITK<VImageDimension,InputPixelType>(reader->GetOutput());
       } catch ( itk::ExceptionObject & err ) {
         std::cerr << "Error while reading image series:" << err << std::endl;
         std::stringstream error;
@@ -148,27 +144,18 @@ void vvImageReader::UpdateWithDimAndInputPixelType()
         mLastError = error.str();
         return;
       }
-
-      // DD(reader->GetOutput()->GetImageDimension());
-      //           DD(reader->GetOutput()->GetNumberOfComponentsPerPixel());
-      //           for(unsigned int i=0; i <reader->GetOutput()->GetImageDimension(); i++) {
-      //             DD(reader->GetOutput()->GetSpacing()[i]);
-      //           }
-
-      if (mType == IMAGEWITHTIME)
-        mImage=vvImageFromITK<VImageDimension,InputPixelType>(reader->GetOutput(),true);
-      else
-        mImage=vvImageFromITK<VImageDimension,InputPixelType>(reader->GetOutput());
     } else {
       typedef itk::Image< InputPixelType, VImageDimension > InputImageType;
       typedef itk::ImageFileReader<InputImageType> ReaderType;
       typename ReaderType::Pointer reader = ReaderType::New();
       reader->SetFileName(mInputFilenames[0]);
-      //if (mUseAnObserver) {
-      //reader->AddObserver(itk::ProgressEvent(), mObserver);
-      //}
+      reader->ReleaseDataFlagOn();
+
       try {
-        reader->Update();
+        if (mType == IMAGEWITHTIME)
+          mImage=vvImageFromITK<VImageDimension,InputPixelType>(reader->GetOutput(),true);
+        else
+          mImage=vvImageFromITK<VImageDimension,InputPixelType>(reader->GetOutput());
       } catch ( itk::ExceptionObject & err ) {
         std::cerr << "Error while reading " << mInputFilenames[0].c_str()
                   << " " << err << std::endl;
@@ -177,19 +164,6 @@ void vvImageReader::UpdateWithDimAndInputPixelType()
         mLastError = error.str();
         return;
       }
-
-      // DD(reader->GetOutput()->GetImageDimension());
-      //           DD(reader->GetOutput()->GetNumberOfComponentsPerPixel());
-      //           for(unsigned int i=0; i <reader->GetOutput()->GetImageDimension(); i++) {
-      //             DD(reader->GetOutput()->GetSpacing()[i]);
-      //             DD(reader->GetOutput()->GetOrigin()[i]);
-      //           }
-
-
-      if (mType == IMAGEWITHTIME)
-        mImage=vvImageFromITK<VImageDimension,InputPixelType>(reader->GetOutput(),true);
-      else
-        mImage=vvImageFromITK<VImageDimension,InputPixelType>(reader->GetOutput());
     }
   }
 }