18 #include <itkComposeImageFilter.h> 19 #include <itkExtractImageFilter.h> 20 #include <itkImageDuplicator.h> 21 #include <itkVectorIndexSelectionCastImageFilter.h> 23 template <
typename TPixel,
unsigned int VDimension>
28 typedef itk::Image<TPixel, VDimension>
ImageType;
29 typedef itk::ComposeImageFilter<ImageType> ComposeFilterType;
30 typedef itk::ImageDuplicator<ImageType> DuplicatorType;
32 auto numberOfLayers = labelSetImage->GetNumberOfLayers();
34 if (numberOfLayers > 1)
36 auto vectorImageComposer = ComposeFilterType::New();
37 auto activeLayer = labelSetImage->GetActiveLayer();
39 for (decltype(numberOfLayers) layer = 0; layer < numberOfLayers; ++layer)
41 auto layerImage = mitk::ImageToItkImage<TPixel, VDimension>(
42 layer != activeLayer ? labelSetImage->GetLayerImage(layer) : labelSetImage);
44 vectorImageComposer->SetInput(layer, layerImage);
47 vectorImageComposer->Update();
54 auto layerImage = mitk::ImageToItkImage<TPixel, VDimension>(labelSetImage);
56 auto duplicator = DuplicatorType::New();
57 duplicator->SetInputImage(layerImage);
70 if (labelSetImage->GetNumberOfLayers() > 0)
72 if (labelSetImage->GetDimension() == 4)
85 template <
typename TPixel,
unsigned int VDimensions>
89 typedef itk::VectorImage<TPixel, VDimensions> VectorImageType;
90 typedef itk::Image<TPixel, VDimensions>
ImageType;
91 typedef itk::VectorIndexSelectionCastImageFilter<VectorImageType, ImageType> VectorIndexSelectorType;
95 auto numberOfLayers = image->GetVectorLength();
96 for (decltype(numberOfLayers) layer = 0; layer < numberOfLayers; ++layer)
98 auto layerSelector = VectorIndexSelectorType::New();
99 layerSelector->SetInput(image);
100 layerSelector->SetIndex(layer);
101 layerSelector->Update();
108 labelSetImage->InitializeByLabeledImage(layerImage);
112 labelSetImage->AddLayer(layerImage);
121 if (image.IsNotNull())
123 if (image->GetChannelDescriptor().GetPixelType().GetPixelType() == itk::ImageIOBase::VECTOR)
125 if (4 == image->GetDimension())
137 labelSetImage->InitializeByLabeledImage(image);
141 return labelSetImage;
MITKMULTILABEL_EXPORT Image::Pointer ConvertLabelSetImageToImage(LabelSetImage::ConstPointer labelSetImage)
Convert mitk::LabelSetImage to mitk::Image (itk::VectorImage)
itk::Image< unsigned char, 3 > ImageType
#define AccessFixedDimensionByItk_n(mitkImage, itkImageTypeFunction, dimension, va_tuple)
Access a mitk-image with known dimension by an itk-image with one or more parameters.
static void ConvertLabelSetImageToImage(const itk::Image< TPixel, VDimension > *, mitk::LabelSetImage::ConstPointer labelSetImage, mitk::Image::Pointer &image)
MITKMULTILABEL_EXPORT LabelSetImage::Pointer ConvertImageToLabelSetImage(Image::Pointer image)
Convert mitk::Image to mitk::LabelSetImage, templating and differentation between itk::Image and itk:...
Image::Pointer ImportItkImage(const itk::SmartPointer< ItkOutputImageType > &itkimage, const BaseGeometry *geometry=nullptr, bool update=true)
Imports an itk::Image (with a specific type) as an mitk::Image.Instantiates instance of ITKImageImpor...
#define AccessVectorPixelTypeByItk_n(mitkImage, itkImageTypeFunction, va_tuple)
Access a vector mitk::Image by an ITK vector image with one or more parameters.
mitk::Image::Pointer image
void CastToMitkImage(const itk::SmartPointer< ItkOutputImageType > &itkimage, itk::SmartPointer< mitk::Image > &mitkoutputimage)
Cast an itk::Image (with a specific type) to an mitk::Image.
#define AccessByItk_2(mitkImage, itkImageTypeFunction, arg1, arg2)
static void ConvertImageToLabelSetImage(const itk::VectorImage< TPixel, VDimensions > *image, mitk::LabelSetImage::Pointer &labelSetImage)
#define AccessVectorFixedDimensionByItk_n(mitkImage, itkImageTypeFunction, dimension, va_tuple)
Access a vector mitk-image with known dimension by a ITK vector image with one or more parameters...