diff --git a/Modules/ImageExtraction/mitkExtractImageFilter.cpp b/Modules/ImageExtraction/mitkExtractImageFilter.cpp index 4300630..0941ec8 100644 --- a/Modules/ImageExtraction/mitkExtractImageFilter.cpp +++ b/Modules/ImageExtraction/mitkExtractImageFilter.cpp @@ -20,14 +20,15 @@ See LICENSE.txt or http://www.mitk.org for details. #include "mitkITKImageImport.h" #include "mitkImageTimeSelector.h" -#include - #include +#include + mitk::ExtractImageFilter::ExtractImageFilter() :m_SliceIndex(0), m_SliceDimension(0), - m_TimeStep(0) + m_TimeStep(0), + m_DirectionCollapseToStrategy( DIRECTIONCOLLAPSETOGUESS ) { MITK_WARN << "Class ExtractImageFilter is deprecated! Use ExtractSliceFilter instead."; } @@ -109,14 +110,32 @@ void mitk::ExtractImageFilter::ItkImageProcessing( itk::Image ImageType3D; typedef itk::Image< TPixel, VImageDimension-1 > ImageType2D; + typedef itk::ExtractImageFilter ExtractImageFilterType; typename ImageType3D::RegionType inSliceRegion = itkImage->GetLargestPossibleRegion(); inSliceRegion.SetSize( m_SliceDimension, 0 ); - typedef itk::ExtractImageFilter ExtractImageFilterType; - typename ExtractImageFilterType::Pointer sliceExtractor = ExtractImageFilterType::New(); - sliceExtractor->SetDirectionCollapseToSubmatrix(); + + typename ExtractImageFilterType::DIRECTIONCOLLAPSESTRATEGY collapseStrategy; + switch( m_DirectionCollapseToStrategy ) + { + case DIRECTIONCOLLAPSETOUNKOWN: + collapseStrategy = ExtractImageFilterType::DIRECTIONCOLLAPSETOUNKOWN; + break; + case DIRECTIONCOLLAPSETOIDENTITY: + collapseStrategy = ExtractImageFilterType::DIRECTIONCOLLAPSETOIDENTITY; + break; + case DIRECTIONCOLLAPSETOSUBMATRIX: + collapseStrategy = ExtractImageFilterType::DIRECTIONCOLLAPSETOSUBMATRIX; + break; + case DIRECTIONCOLLAPSETOGUESS: + default: + collapseStrategy = ExtractImageFilterType::DIRECTIONCOLLAPSETOGUESS; + break; + } + + sliceExtractor->SetDirectionCollapseToStrategy( collapseStrategy ); sliceExtractor->SetInput( itkImage ); inSliceRegion.SetIndex( m_SliceDimension, m_SliceIndex ); diff --git a/Modules/ImageExtraction/mitkExtractImageFilter.h b/Modules/ImageExtraction/mitkExtractImageFilter.h index 125c719..8a07ac7 100644 --- a/Modules/ImageExtraction/mitkExtractImageFilter.h +++ b/Modules/ImageExtraction/mitkExtractImageFilter.h @@ -76,6 +76,19 @@ class ImageExtraction_EXPORT ExtractImageFilter : public ImageToImageFilter itkSetMacro(TimeStep, unsigned int); itkGetConstMacro(TimeStep, unsigned int); + typedef enum DirectionCollapseStrategyEnum { + DIRECTIONCOLLAPSETOUNKOWN=0, + DIRECTIONCOLLAPSETOIDENTITY=1, + DIRECTIONCOLLAPSETOSUBMATRIX=2, + DIRECTIONCOLLAPSETOGUESS=3 + } DIRECTIONCOLLAPSESTRATEGY; + + /** + \brief Collapse strategy to be used. + */ + itkSetMacro(DirectionCollapseToStrategy, DIRECTIONCOLLAPSESTRATEGY); + itkGetConstMacro(DirectionCollapseToStrategy, DIRECTIONCOLLAPSESTRATEGY); + protected: ExtractImageFilter(); // purposely hidden @@ -92,6 +105,7 @@ class ImageExtraction_EXPORT ExtractImageFilter : public ImageToImageFilter unsigned int m_SliceIndex; unsigned int m_SliceDimension; unsigned int m_TimeStep; + DIRECTIONCOLLAPSESTRATEGY m_DirectionCollapseToStrategy; }; } // namespace