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
- 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<class PixelType>
-typename itk::Image<PixelType,1>::Pointer NewImage1D(int vsize, double vspacing)
+typename itk::Image<PixelType,1>::Pointer
+NewImage1D(int vsize, double vspacing)
{
typedef itk::Image<PixelType,1> ImageType;
typename ImageType::Pointer g = ImageType::New();
//--------------------------------------------------------------------
template<class PixelType>
-typename itk::Image<PixelType,2>::Pointer NewImage2D(int sx, int sy, double dx, double dy)
+typename itk::Image<PixelType,2>::Pointer
+NewImage2D(int sx, int sy, double dx, double dy)
{
typedef itk::Image<PixelType,2> ImageType;
typename ImageType::Pointer g = ImageType::New();
}
//--------------------------------------------------------------------
+
//--------------------------------------------------------------------
template<class PixelType>
-typename itk::Image<PixelType,3>::Pointer NewImage3D(int sx, int sy, int sz, double dx, double dy, double dz)
+typename itk::Image<PixelType,3>::Pointer
+NewImage3D(int sx, int sy, int sz, double dx, double dy, double dz)
{
typedef itk::Image<PixelType,3> ImageType;
typename ImageType::Pointer g = ImageType::New();
//--------------------------------------------------------------------
template<class ImageType>
-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<ImageType> 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<class ImageType>
-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<ImageType> 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;
}
//--------------------------------------------------------------------
template<class ImageType1, class ImageType2>
-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; i<A->GetImageDimension(); i++) {
if (A->GetSpacing()[i] != B->GetSpacing()[i]) return false;
- if (A->GetLargestPossibleRegion().GetSize()[i] != B->GetLargestPossibleRegion().GetSize()[i]) return false;
}
return true;
}
//--------------------------------------------------------------------
template<class ImageType1, class ImageType2>
-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; i<A->GetImageDimension(); i++) {
if (A->GetSpacing()[i] != B->GetSpacing()[i]) return false;
- if (A->GetLargestPossibleRegion().GetSize()[i] != B->GetLargestPossibleRegion().GetSize()[i]) return false;
}
return true;
}
//--------------------------------------------------------------------
template<class ImageType1, class ImageType2>
-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; i<A->GetImageDimension(); i++) {
- if (A->GetSpacing()[i] != B->GetSpacing()[i]) return false;
+ if (A->GetLargestPossibleRegion().GetSize()[i] != B->GetLargestPossibleRegion().GetSize()[i]) return false;
}
return true;
}
//--------------------------------------------------------------------
template<class ImageType1, class ImageType2>
-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; i<A->GetImageDimension(); i++) {
- if (A->GetSpacing()[i] != B->GetSpacing()[i]) return false;
+ if (A->GetLargestPossibleRegion().GetSize()[i] != B->GetLargestPossibleRegion().GetSize()[i]) return false;
}
return true;
}
//--------------------------------------------------------------------
+//--------------------------------------------------------------------
+template<class ImageType1, class ImageType2>
+bool HaveSameSizeAndSpacing(typename ImageType1::ConstPointer A,
+ typename ImageType2::ConstPointer B)
+{
+ return ( HaveSameSize<ImageType1, ImageType2>(A, B) &&
+ HaveSameSpacing<ImageType1, ImageType2>(A, B) );
+}
+//--------------------------------------------------------------------
+
+//--------------------------------------------------------------------
+template<class ImageType1, class ImageType2>
+bool HaveSameSizeAndSpacing(typename ImageType1::Pointer A,
+ typename ImageType2::Pointer B)
+{
+ return ( HaveSameSize<ImageType1, ImageType2>(A, B) &&
+ HaveSameSpacing<ImageType1, ImageType2>(A, B) );
+}
+//--------------------------------------------------------------------
+
#endif /* end #define CLITKIMAGECOMMON_TXX */