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
-======================================================================-====*/
+===========================================================================**/
/**
-------------------------------------------------------------------
* @file clitkSplitImageGenericFilter.cxx
}
//--------------------------------------------------------------------
-
//--------------------------------------------------------------------
template<unsigned int Dim>
void clitk::SplitImageGenericFilter::InitializeImageType()
{
ADD_DEFAULT_IMAGE_TYPES(Dim);
- //ADD_VEC_IMAGE_TYPE(Dim, 3,float);
+ ADD_VEC_IMAGE_TYPE(Dim, 3,float);
+}
+//--------------------------------------------------------------------
+
+//--------------------------------------------------------------------
+template <class ImageType>
+typename clitk::SplitImageGenericFilter::PngConversion<ImageType>::OutputPngImagePointer
+clitk::SplitImageGenericFilter::PngConversion<ImageType>::Do(double window,
+ double level,
+ ImagePointer input)
+{
+ static const unsigned int PixelDimension = itk::PixelTraits<typename ImageType::PixelType>::Dimension;
+ return this->Do(window, level, input, static_cast< PixelDimType<PixelDimension> *>(NULL) );
+}
+//--------------------------------------------------------------------
+
+//--------------------------------------------------------------------
+template <class ImageType>
+template<unsigned int Dim>
+typename clitk::SplitImageGenericFilter::PngConversion<ImageType>::OutputPngImagePointer
+clitk::SplitImageGenericFilter::PngConversion<ImageType>::Do(double window,
+ double level,
+ ImagePointer input,
+ PixelDimType<Dim> *)
+{
+ clitkExceptionMacro("Png conversion is not implemented for vector fields");
+ return NULL;
+}
+//--------------------------------------------------------------------
+
+//--------------------------------------------------------------------
+template <class ImageType>
+typename clitk::SplitImageGenericFilter::PngConversion<ImageType>::OutputPngImagePointer
+clitk::SplitImageGenericFilter::PngConversion<ImageType>::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);
+ return cast->GetOutput();
}
//--------------------------------------------------------------------
size[mSplitDimension]=0;
typename ImageType::RegionType extracted_region;
extracted_region.SetSize(size);
+#if ITK_VERSION_MAJOR >= 4
+ filter->SetDirectionCollapseToSubmatrix();
+#endif
filter->SetExtractionRegion(extracted_region);
filter->Update();
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<OutputImageType> png;
SetOutputFilename(base_filename+"_"+ss.str()+".png");
- SetNextOutput<OutputPngImageType>(cast->GetOutput());
+ typename PngConversion<OutputImageType>::OutputPngImagePointer output;
+ output = png.Do(this->m_Window, this->m_Level, filter->GetOutput());
+ this->template SetNextOutput<typename PngConversion<OutputImageType>::OutputPngImageType>(output);
}
else {
SetOutputFilename(base_filename+"_"+ss.str()+".mhd");