21 #include <itkBinaryImageToLabelMapFilter.h> 22 #include <itkLabelMapToLabelImageFilter.h> 25 template <
typename TPixel,
unsigned int VImageDimension>
26 void mitk::BinaryImageToLabelSetImageFilter::ApplyBinaryImageToLabelMapFilter(
const itk::Image<TPixel, VImageDimension>* inputImage)
28 using ImageType = itk::Image<TPixel, VImageDimension>;
29 using BinaryImageToLabelMapFilterType = itk::BinaryImageToLabelMapFilter<ImageType>;
30 typename BinaryImageToLabelMapFilterType::Pointer binaryImageToLabelMapFilter = BinaryImageToLabelMapFilterType::New();
31 binaryImageToLabelMapFilter->SetInput(inputImage);
32 binaryImageToLabelMapFilter->SetInputForegroundValue(m_ForegroundValue);
33 binaryImageToLabelMapFilter->SetFullyConnected(m_FullyConnected);
35 using LabelMap2ImageType = itk::LabelMapToLabelImageFilter< typename BinaryImageToLabelMapFilterType::OutputImageType, ImageType>;
37 typename LabelMap2ImageType::Pointer label2image = LabelMap2ImageType::New();
38 label2image->SetInput(binaryImageToLabelMapFilter->GetOutput());
39 label2image->Update();
42 if (m_OutputIsLabelSetImage) {
44 labeledBinaryImage->InitializeByLabeledImage(labeledImage);
45 this->SetOutput(MakeNameFromOutputIndex(0), labeledBinaryImage.GetPointer());
48 this->SetOutput(MakeNameFromOutputIndex(0), labeledImage.GetPointer());
52 void mitk::BinaryImageToLabelSetImageFilter::VerifyInputImage(
const mitk::Image* inputImage)
55 mitkThrow() <<
"Input image is not initialized.";
58 mitkThrow() <<
"Input image volume is not set.";
62 if (
nullptr == geometry || !geometry->IsValid())
63 mitkThrow() <<
"Input image has invalid geometry.";
65 if (!geometry->GetImageGeometry())
66 mitkThrow() <<
"Geometry of input image is not an image geometry.";
69 void mitk::BinaryImageToLabelSetImageFilter::GenerateData()
71 const auto* inputImage = this->
GetInput();
72 AccessByItk(inputImage, ApplyBinaryImageToLabelMapFilter);
80 Superclass::SetInput(image);
86 mitkThrow() <<
"Input index " << index <<
" is invalid.";
91 void mitk::BinaryImageToLabelSetImageFilter::VerifyInputInformation()
93 Superclass::VerifyInputInformation();
itk::Image< unsigned char, 3 > ImageType
bool IsVolumeSet(int t=0, int n=0) const override
Check whether volume at time t in channel n is set.
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...
Image class for storing images.
#define AccessByItk(mitkImage, itkImageTypeFunction)
Access a MITK image by an ITK image.
mitk::Image::Pointer image
InputImageType * GetInput(void)
virtual bool IsInitialized() const
Check whether the data has been initialized, i.e., at least the Geometry and other header data has be...
mitk::BaseGeometry * GetGeometry(int t=0) const
Return the geometry, which is a TimeGeometry, of the data as non-const pointer.
void SetInput(const InputImageType *image) override