1 /*============================================================================
3 The Medical Imaging Interaction Toolkit (MITK)
5 Copyright (c) German Cancer Research Center (DKFZ)
8 Use of this source code is governed by a 3-clause BSD license that can be
9 found in the LICENSE file.
11 ============================================================================*/
13 #include <mitkImageAccessByItk.h>
14 #include <mitkImageCast.h>
16 #include <itkCastImageFilter.h>
23 template <typename ItkOutputImageType>
24 void CastToItkImage(const mitk::Image *mitkImage, itk::SmartPointer<ItkOutputImageType> &itkOutputImage)
26 AccessFixedDimensionByItk_1(mitkImage, _CastToItkImage2Access, ItkOutputImageType::ImageDimension, itkOutputImage);
29 template <typename TPixelType, unsigned int VImageDimension>
30 void CastToItkImage(const mitk::Image *mitkImage,
31 itk::SmartPointer<itk::VectorImage<TPixelType, VImageDimension>> &itkOutputImage)
33 AccessVectorFixedDimensionByItk_n(mitkImage, _CastToItkImage2Access, VImageDimension, (itkOutputImage));
36 template <typename TPixel, unsigned int VImageDimension, class ItkOutputImageType>
37 void _CastToItkImage2Access(const itk::Image<TPixel, VImageDimension> *itkInputImage,
38 itk::SmartPointer<ItkOutputImageType> &itkOutputImage)
40 typedef itk::Image<TPixel, VImageDimension> ItkInputImageType;
41 if (typeid(ItkInputImageType) == typeid(ItkOutputImageType))
43 itkOutputImage = const_cast<ItkOutputImageType *>(reinterpret_cast<const ItkOutputImageType *>(itkInputImage));
46 typedef itk::CastImageFilter<ItkInputImageType, ItkOutputImageType> CastImageFilterType;
47 typename CastImageFilterType::Pointer castImageFilter = CastImageFilterType::New();
48 castImageFilter->SetInput(itkInputImage);
49 castImageFilter->Update();
50 itkOutputImage = castImageFilter->GetOutput();
53 template <typename TPixel, unsigned int VImageDimension, class ItkOutputImageType>
54 void _CastToItkImage2Access(const itk::VectorImage<TPixel, VImageDimension> *itkInputImage,
55 itk::SmartPointer<ItkOutputImageType> &itkOutputImage)
57 typedef itk::VectorImage<TPixel, VImageDimension> ItkInputImageType;
58 if (typeid(ItkInputImageType) == typeid(ItkOutputImageType))
60 itkOutputImage = const_cast<ItkOutputImageType *>(reinterpret_cast<const ItkOutputImageType *>(itkInputImage));
63 typedef itk::CastImageFilter<ItkInputImageType, ItkOutputImageType> CastImageFilterType;
64 typename CastImageFilterType::Pointer castImageFilter = CastImageFilterType::New();
65 castImageFilter->SetInput(itkInputImage);
66 castImageFilter->Update();
67 itkOutputImage = castImageFilter->GetOutput();
70 #endif // DOXYGEN_SKIP