X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=tools%2FclitkSplitImageGenericFilter.cxx;h=72f712c9be1614b6fca13ef35aa102f4119f9af9;hb=69e0d4a169d9b95536a0f45377bdb208814cf89b;hp=c7ef0beae85cb142a4df7a79a4df143b87a258f9;hpb=c1f9a7a372572718c10f3f1086692c3d507b41b5;p=clitk.git diff --git a/tools/clitkSplitImageGenericFilter.cxx b/tools/clitkSplitImageGenericFilter.cxx old mode 100755 new mode 100644 index c7ef0be..72f712c --- a/tools/clitkSplitImageGenericFilter.cxx +++ b/tools/clitkSplitImageGenericFilter.cxx @@ -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,7 +14,7 @@ - BSD See included LICENSE.txt file - CeCILL-B http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html -======================================================================-====*/ +===========================================================================**/ /** ------------------------------------------------------------------- * @file clitkSplitImageGenericFilter.cxx @@ -36,13 +36,55 @@ clitk::SplitImageGenericFilter::SplitImageGenericFilter(): } //-------------------------------------------------------------------- - //-------------------------------------------------------------------- template void clitk::SplitImageGenericFilter::InitializeImageType() { ADD_DEFAULT_IMAGE_TYPES(Dim); - //ADD_VEC_IMAGE_TYPE(Dim, 3,float); + ADD_VEC_IMAGE_TYPE(Dim, 3,float); +} +//-------------------------------------------------------------------- + +//-------------------------------------------------------------------- +template +typename clitk::SplitImageGenericFilter::PngConversion::OutputPngImagePointer +clitk::SplitImageGenericFilter::PngConversion::Do(double window, + double level, + ImagePointer input) +{ + static const unsigned int PixelDimension = itk::PixelTraits::Dimension; + return this->Do(window, level, input, static_cast< PixelDimType *>(NULL) ); +} +//-------------------------------------------------------------------- + +//-------------------------------------------------------------------- +template +template +typename clitk::SplitImageGenericFilter::PngConversion::OutputPngImagePointer +clitk::SplitImageGenericFilter::PngConversion::Do(double window, + double level, + ImagePointer input, + PixelDimType *) +{ + clitkExceptionMacro("Png conversion is not implemented for vector fields"); + return NULL; +} +//-------------------------------------------------------------------- + +//-------------------------------------------------------------------- +template +typename clitk::SplitImageGenericFilter::PngConversion::OutputPngImagePointer +clitk::SplitImageGenericFilter::PngConversion::Do(double window, + double level, + ImagePointer input, + PixelDimType<1> *) +{ + typedef itk::IntensityWindowingImageFilter< ImageType, OutputPngImageType > CastFilterType; + typename CastFilterType::Pointer cast = CastFilterType::New(); + cast->SetWindowLevel(window, level); + cast->SetInput(input); + cast->Update(); + return cast->GetOutput(); } //-------------------------------------------------------------------- @@ -63,6 +105,9 @@ void clitk::SplitImageGenericFilter::UpdateWithInputImageType() size[mSplitDimension]=0; typename ImageType::RegionType extracted_region; extracted_region.SetSize(size); +#if ITK_VERSION_MAJOR >= 4 + filter->SetDirectionCollapseToIdentity(); +#endif filter->SetExtractionRegion(extracted_region); filter->Update(); @@ -77,13 +122,11 @@ void clitk::SplitImageGenericFilter::UpdateWithInputImageType() filter->SetExtractionRegion(extracted_region); filter->Update(); if(this->m_Png){ - typedef itk::Image< unsigned char, ImageType::ImageDimension-1 > OutputPngImageType; - typedef itk::IntensityWindowingImageFilter< OutputImageType, OutputPngImageType > CastFilterType; - typename CastFilterType::Pointer cast = CastFilterType::New(); - cast->SetWindowLevel(this->m_Window, this->m_Level); - cast->SetInput(filter->GetOutput()); + PngConversion png; SetOutputFilename(base_filename+"_"+ss.str()+".png"); - SetNextOutput(cast->GetOutput()); + typename PngConversion::OutputPngImagePointer output; + output = png.Do(this->m_Window, this->m_Level, filter->GetOutput()); + this->template SetNextOutput::OutputPngImageType>(output); } else { SetOutputFilename(base_filename+"_"+ss.str()+".mhd");