X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=vv%2FvvImageReader.txx;h=dde83af1172fe686fc82bea36d122ddc049e98d7;hb=6789a2e30f7c951de93ebd0c0596e7168ec6e061;hp=cfa389a7154e5cf803469d6b9da39030536b3949;hpb=b6cfdecc2f880a7015d8f5a73174a0361cfe7924;p=clitk.git diff --git a/vv/vvImageReader.txx b/vv/vvImageReader.txx index cfa389a..dde83af 100644 --- a/vv/vvImageReader.txx +++ b/vv/vvImageReader.txx @@ -1,7 +1,7 @@ /*========================================================================= Program: vv http://www.creatis.insa-lyon.fr/rio/vv - Authors belong to: + Authors belong to: - University of LYON http://www.universite-lyon.fr/ - Léon Bérard cancer center http://oncora1.lyon.fnclcc.fr - CREATIS CNRS laboratory http://www.creatis.insa-lyon.fr @@ -22,14 +22,18 @@ #include #include #include +#include + +#include + #include "clitkCommon.h" -#include "itkImageToVTKImageFilter.h" #include "vvFromITK.h" #include "vvConstants.h" //---------------------------------------------------------------------------- template -void vvImageReader::UpdateWithDim(std::string InputPixelType) { +void vvImageReader::UpdateWithDim(std::string InputPixelType) +{ if (mType == VECTORFIELD) UpdateWithDimAndInputPixelType,VImageDimension>(); else if (InputPixelType == "short") @@ -48,124 +52,119 @@ void vvImageReader::UpdateWithDim(std::string InputPixelType) { UpdateWithDimAndInputPixelType(); else std::cerr << "Error, input pixel type : " << InputPixelType << " unknown !" << std::endl; + + if (CLITK_EXPERIMENTAL) + if (mLastError.size()==0) + ReadNkiImageTransform(); } //---------------------------------------------------------------------------- //---------------------------------------------------------------------------- template -void vvImageReader::UpdateWithDimAndInputPixelType() { +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 - { - typedef itk::Image< InputPixelType, VImageDimension-1 > InputImageType; + { + typedef itk::Image< InputPixelType, VImageDimension-1 > InputImageType; + typedef itk::ImageFileReader ReaderType; + typename ReaderType::Pointer reader = ReaderType::New(); + typedef itk::ImageToVTKImageFilter ConnectorType; + typename ConnectorType::Pointer connector = ConnectorType::New(); + connector->SetInput(reader->GetOutput()); + mImage=vvImage::New(); + for (std::vector::const_iterator i=mInputFilenames.begin(); i!=mInputFilenames.end(); i++) { + std::cout << (*i) << std::endl; + reader->SetFileName(*i); + try { + reader->Update(); + } catch ( itk::ExceptionObject & err ) { + std::cerr << "Error while reading " << mInputFilenames[0].c_str() + << " " << err << std::endl; + std::stringstream error; + error << err; + mLastError = error.str(); + return; + } + try { + connector->Update(); + } catch ( itk::ExceptionObject & err ) { + std::cerr << "Error while setting vvImage from ITK (MERGEDWITHTIME)" + << " " << err << std::endl; + } + vtkImageData *image = vtkImageData::New(); + image->DeepCopy(connector->GetOutput()); + mImage->AddImage(image); + } + } else { + if (mInputFilenames.size() > 1) { + typedef itk::Image< InputPixelType, VImageDimension > InputImageType; + typedef itk::ImageSeriesReader ReaderType; + typename ReaderType::Pointer reader = ReaderType::New(); + for (std::vector::const_iterator i=mInputFilenames.begin(); i!=mInputFilenames.end(); i++) + std::cout << (*i) << std::endl; + reader->SetFileNames(mInputFilenames); + //if (mUseAnObserver) { + //reader->AddObserver(itk::ProgressEvent(), mObserver); + //} + try { + reader->Update(); + } catch ( itk::ExceptionObject & err ) { + std::cerr << "Error while reading image series:" << err << std::endl; + std::stringstream error; + error << err; + mLastError = error.str(); + return; + } + + // DD(reader->GetOutput()->GetImageDimension()); + // DD(reader->GetOutput()->GetNumberOfComponentsPerPixel()); + // for(unsigned int i=0; i GetOutput()->GetImageDimension(); i++) { + // DD(reader->GetOutput()->GetSpacing()[i]); + // } + + if (mType == IMAGEWITHTIME) + mImage=vvImageFromITK(reader->GetOutput(),true); + else + mImage=vvImageFromITK(reader->GetOutput()); + } else { + typedef itk::Image< InputPixelType, VImageDimension > InputImageType; typedef itk::ImageFileReader ReaderType; typename ReaderType::Pointer reader = ReaderType::New(); - typedef itk::ImageToVTKImageFilter ConnectorType; - typename ConnectorType::Pointer connector = ConnectorType::New(); - connector->SetInput(reader->GetOutput()); - mImage=vvImage::New(); - for (std::vector::const_iterator i=mInputFilenames.begin();i!=mInputFilenames.end();i++) - { - std::cout << (*i) << std::endl; - reader->SetFileName(*i); - try { - reader->Update(); - } - catch ( itk::ExceptionObject & err ) { - std::cerr << "Error while reading " << mInputFilenames[0].c_str() - << " " << err << std::endl; - std::stringstream error; - error << err; - mLastError = error.str(); - return; - } - try { - connector->Update(); - } - catch ( itk::ExceptionObject & err ) { - std::cerr << "Error while setting vvImage from ITK (MERGEDWITHTIME)" - << " " << err << std::endl; - } - vtkImageData *image = vtkImageData::New(); - image->DeepCopy(connector->GetOutput()); - mImage->AddImage(image); - } - } - else - { - if (mInputFilenames.size() > 1) - { - typedef itk::Image< InputPixelType, VImageDimension > InputImageType; - typedef itk::ImageSeriesReader ReaderType; - typename ReaderType::Pointer reader = ReaderType::New(); - for (std::vector::const_iterator i=mInputFilenames.begin();i!=mInputFilenames.end();i++) - std::cout << (*i) << std::endl; - reader->SetFileNames(mInputFilenames); - //if (mUseAnObserver) { - //reader->AddObserver(itk::ProgressEvent(), mObserver); - //} - try { - reader->Update(); - } - catch ( itk::ExceptionObject & err ) { - std::cerr << "Error while reading image series:" << err << std::endl; - std::stringstream error; - error << err; - mLastError = error.str(); - return; - } - - // DD(reader->GetOutput()->GetImageDimension()); - // DD(reader->GetOutput()->GetNumberOfComponentsPerPixel()); - // for(unsigned int i=0; i GetOutput()->GetImageDimension(); i++) { - // DD(reader->GetOutput()->GetSpacing()[i]); - // } - - if (mType == IMAGEWITHTIME) - mImage=vvImageFromITK(reader->GetOutput(),true); - else - mImage=vvImageFromITK(reader->GetOutput()); - } + reader->SetFileName(mInputFilenames[0]); + //if (mUseAnObserver) { + //reader->AddObserver(itk::ProgressEvent(), mObserver); + //} + try { + reader->Update(); + } catch ( itk::ExceptionObject & err ) { + std::cerr << "Error while reading " << mInputFilenames[0].c_str() + << " " << err << std::endl; + std::stringstream error; + error << err; + mLastError = error.str(); + return; + } + + // DD(reader->GetOutput()->GetImageDimension()); + // DD(reader->GetOutput()->GetNumberOfComponentsPerPixel()); + // for(unsigned int i=0; i GetOutput()->GetImageDimension(); i++) { + // DD(reader->GetOutput()->GetSpacing()[i]); + // DD(reader->GetOutput()->GetOrigin()[i]); + // } + + + if (mType == IMAGEWITHTIME) + mImage=vvImageFromITK(reader->GetOutput(),true); else - { - typedef itk::Image< InputPixelType, VImageDimension > InputImageType; - typedef itk::ImageFileReader ReaderType; - typename ReaderType::Pointer reader = ReaderType::New(); - reader->SetFileName(mInputFilenames[0]); - //if (mUseAnObserver) { - //reader->AddObserver(itk::ProgressEvent(), mObserver); - //} - try { - reader->Update(); - } - catch ( itk::ExceptionObject & err ) { - std::cerr << "Error while reading " << mInputFilenames[0].c_str() - << " " << err << std::endl; - std::stringstream error; - error << err; - mLastError = error.str(); - return; - } - - // DD(reader->GetOutput()->GetImageDimension()); - // DD(reader->GetOutput()->GetNumberOfComponentsPerPixel()); - // for(unsigned int i=0; i GetOutput()->GetImageDimension(); i++) { - // DD(reader->GetOutput()->GetSpacing()[i]); - // DD(reader->GetOutput()->GetOrigin()[i]); - // } - - - if (mType == IMAGEWITHTIME) - mImage=vvImageFromITK(reader->GetOutput(),true); - else - mImage=vvImageFromITK(reader->GetOutput()); - } + mImage=vvImageFromITK(reader->GetOutput()); } + } } //----------------------------------------------------------------------------