X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=common%2FclitkImageCommon.txx;h=a07c66f0459eca0743c41c460937e48a484c75a0;hb=08f7de414957e92b25ca5b299007e941b610d3a8;hp=74f57302ad616c3a022b0d497ecb519e114d6953;hpb=b9ba052017bdb1396d8c1b0d73487d737485266e;p=clitk.git diff --git a/common/clitkImageCommon.txx b/common/clitkImageCommon.txx index 74f5730..a07c66f 100644 --- a/common/clitkImageCommon.txx +++ b/common/clitkImageCommon.txx @@ -3,7 +3,7 @@ Authors belong to: - University of LYON http://www.universite-lyon.fr/ - - Léon Bérard cancer center http://oncora1.lyon.fnclcc.fr + - Léon Bérard cancer center http://www.centreleonberard.fr - CREATIS CNRS laboratory http://www.creatis.insa-lyon.fr This software is distributed WITHOUT ANY WARRANTY; without even @@ -14,14 +14,14 @@ - BSD See included LICENSE.txt file - CeCILL-B http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html -======================================================================-====*/ +===========================================================================**/ #ifndef CLITKIMAGECOMMON_TXX #define CLITKIMAGECOMMON_TXX //-------------------------------------------------------------------- template -typename itk::Image::Pointer +typename itk::Image::Pointer NewImage1D(int vsize, double vspacing) { typedef itk::Image ImageType; @@ -40,7 +40,7 @@ NewImage1D(int vsize, double vspacing) //-------------------------------------------------------------------- template -typename itk::Image::Pointer +typename itk::Image::Pointer NewImage2D(int sx, int sy, double dx, double dy) { typedef itk::Image ImageType; @@ -62,7 +62,7 @@ NewImage2D(int sx, int sy, double dx, double dy) //-------------------------------------------------------------------- template -typename itk::Image::Pointer +typename itk::Image::Pointer NewImage3D(int sx, int sy, int sz, double dx, double dy, double dz) { typedef itk::Image ImageType; @@ -188,34 +188,22 @@ typename ImageType::Pointer readImage(const std::vector & filenames //-------------------------------------------------------------------- template -void writeImage(const typename ImageType::Pointer image, const std::string & filename, const bool verbose) +void writeImage(const typename ImageType::Pointer image, const std::string & filename, const bool verbose, const bool compression) { - typedef itk::ImageFileWriter WriterType; - typename WriterType::Pointer writer = WriterType::New(); - writer->SetFileName(filename.c_str()); - writer->SetInput(image); - if (verbose) { - std::cout << "Writing [" << filename << "] ... " << std::endl; - } - try { - writer->Update(); - } catch( itk::ExceptionObject & err ) { - std::cerr << "Exception while writing image [" << filename << "]" << std::endl; - std::cerr << err << std::endl; - exit(-1); - } + return writeImage(image.GetPointer(), filename, verbose, compression); } //-------------------------------------------------------------------- //-------------------------------------------------------------------- template -void writeImage(const ImageType* image, const std::string & filename, const bool verbose) +void writeImage(const ImageType* image, const std::string & filename, const bool verbose, const bool compression) { typedef itk::ImageFileWriter WriterType; typename WriterType::Pointer writer = WriterType::New(); writer->SetFileName(filename.c_str()); writer->SetInput(image); + writer->SetUseCompression(compression); if (verbose) { std::cout << "Writing [" << filename << "] ... " << std::endl; } @@ -323,13 +311,12 @@ void ComputeWeightsOfEachClasses(const typename InputImageType::Pointer & input, //-------------------------------------------------------------------- template -bool HaveSameSizeAndSpacing(typename ImageType1::ConstPointer A, - typename ImageType2::ConstPointer B) +bool HaveSameSpacing(typename ImageType1::ConstPointer A, + typename ImageType2::ConstPointer B) { if (A->GetImageDimension() != B->GetImageDimension()) return false; for(unsigned int i=0; iGetImageDimension(); i++) { if (A->GetSpacing()[i] != B->GetSpacing()[i]) return false; - if (A->GetLargestPossibleRegion().GetSize()[i] != B->GetLargestPossibleRegion().GetSize()[i]) return false; } return true; } @@ -337,13 +324,12 @@ bool HaveSameSizeAndSpacing(typename ImageType1::ConstPointer A, //-------------------------------------------------------------------- template -bool HaveSameSizeAndSpacing(typename ImageType1::Pointer A, - typename ImageType2::Pointer B) +bool HaveSameSpacing(typename ImageType1::Pointer A, + typename ImageType2::Pointer B) { if (A->GetImageDimension() != B->GetImageDimension()) return false; for(unsigned int i=0; iGetImageDimension(); i++) { if (A->GetSpacing()[i] != B->GetSpacing()[i]) return false; - if (A->GetLargestPossibleRegion().GetSize()[i] != B->GetLargestPossibleRegion().GetSize()[i]) return false; } return true; } @@ -351,12 +337,12 @@ bool HaveSameSizeAndSpacing(typename ImageType1::Pointer A, //-------------------------------------------------------------------- template -bool HaveSameSpacing(typename ImageType1::ConstPointer A, - typename ImageType2::ConstPointer B) +bool HaveSameSize(typename ImageType1::ConstPointer A, + typename ImageType2::ConstPointer B) { if (A->GetImageDimension() != B->GetImageDimension()) return false; for(unsigned int i=0; iGetImageDimension(); i++) { - if (A->GetSpacing()[i] != B->GetSpacing()[i]) return false; + if (A->GetLargestPossibleRegion().GetSize()[i] != B->GetLargestPossibleRegion().GetSize()[i]) return false; } return true; } @@ -364,16 +350,36 @@ bool HaveSameSpacing(typename ImageType1::ConstPointer A, //-------------------------------------------------------------------- template -bool HaveSameSpacing(typename ImageType1::Pointer A, - typename ImageType2::Pointer B) +bool HaveSameSize(typename ImageType1::Pointer A, + typename ImageType2::Pointer B) { if (A->GetImageDimension() != B->GetImageDimension()) return false; for(unsigned int i=0; iGetImageDimension(); i++) { - if (A->GetSpacing()[i] != B->GetSpacing()[i]) return false; + if (A->GetLargestPossibleRegion().GetSize()[i] != B->GetLargestPossibleRegion().GetSize()[i]) return false; } return true; } //-------------------------------------------------------------------- +//-------------------------------------------------------------------- +template +bool HaveSameSizeAndSpacing(typename ImageType1::ConstPointer A, + typename ImageType2::ConstPointer B) +{ + return ( HaveSameSize(A, B) && + HaveSameSpacing(A, B) ); +} +//-------------------------------------------------------------------- + +//-------------------------------------------------------------------- +template +bool HaveSameSizeAndSpacing(typename ImageType1::Pointer A, + typename ImageType2::Pointer B) +{ + return ( HaveSameSize(A, B) && + HaveSameSpacing(A, B) ); +} +//-------------------------------------------------------------------- + #endif /* end #define CLITKIMAGECOMMON_TXX */