Medical Imaging Interaction Toolkit  2026.06.00
Medical Imaging Interaction Toolkit
itkMultiOutputNaryFunctorImageFilter.h
Go to the documentation of this file.
1 /*============================================================================
2 
3 The Medical Imaging Interaction Toolkit (MITK)
4 
5 Copyright (c) German Cancer Research Center (DKFZ)
6 All rights reserved.
7 
8 Use of this source code is governed by a 3-clause BSD license that can be
9 found in the LICENSE file.
10 
11 ============================================================================*/
12 
13 #ifndef itkMultiOutputNaryFunctorImageFilter_h
14 #define itkMultiOutputNaryFunctorImageFilter_h
15 
16 #include <itkImageToImageFilter.h>
17 #include <itkImageIterator.h>
18 #include <itkArray.h>
19 
20 namespace itk
21 {
38 template< class TInputImage, class TOutputImage, class TFunction, class TMaskImage = ::itk::Image<unsigned char, TInputImage::ImageDimension> >
40  public ImageToImageFilter< TInputImage, TOutputImage >
41 
42 {
43 public:
46  typedef ImageToImageFilter< TInputImage, TOutputImage > Superclass;
50  itkNewMacro(Self);
51 
53  itkTypeMacro(MultiOutputNaryFunctorImageFilter, ImageToImageFilter);
54 
56  typedef TFunction FunctorType;
57  typedef TInputImage InputImageType;
58  typedef typename InputImageType::Pointer InputImagePointer;
59  typedef typename InputImageType::RegionType InputImageRegionType;
60  typedef typename InputImageType::PixelType InputImagePixelType;
61  typedef TOutputImage OutputImageType;
62  typedef typename OutputImageType::Pointer OutputImagePointer;
63  typedef typename OutputImageType::RegionType OutputImageRegionType;
64  typedef typename OutputImageType::PixelType OutputImagePixelType;
65  typedef typename FunctorType::InputPixelArrayType NaryInputArrayType;
66  typedef typename FunctorType::OutputPixelArrayType NaryOutputArrayType;
67  typedef TMaskImage MaskImageType;
68  typedef typename MaskImageType::Pointer MaskImagePointer;
69  typedef typename MaskImageType::RegionType MaskImageRegionType;
70 
75  FunctorType & GetFunctor() { return m_Functor; }
76 
83  void SetFunctor(FunctorType & functor)
84  {
85  if ( m_Functor != functor )
86  {
87  m_Functor = functor;
88  this->ActualizeOutputs();
89  this->Modified();
90  }
91  }
92 
93  itkSetObjectMacro(Mask, MaskImageType);
94  itkGetConstObjectMacro(Mask, MaskImageType);
95 
98  InputImageDimension, unsigned int, TInputImage::ImageDimension);
100  OutputImageDimension, unsigned int, TOutputImage::ImageDimension);
101 
102 #ifdef ITK_USE_CONCEPT_CHECKING
104  itkConceptMacro( SameDimensionCheck,
105  ( Concept::SameDimension< InputImageDimension, OutputImageDimension > ) );
106  itkConceptMacro( OutputHasZeroCheck,
107  ( Concept::HasZero< OutputImagePixelType > ) );
109 #endif
110 protected:
113 
124  void ThreadedGenerateData(const OutputImageRegionType & outputRegionForThread,
125  ThreadIdType threadId) override;
126 
129 
130 private:
131  MultiOutputNaryFunctorImageFilter(const Self &); //purposely not implemented
132  void operator=(const Self &); //purposely not implemented
133 
134  FunctorType m_Functor;
135  MaskImagePointer m_Mask;
136 };
137 } // end namespace itk
138 
139 #ifndef ITK_MANUAL_INSTANTIATION
140 #include <itkMultiOutputNaryFunctorImageFilter.tpp>
141 #endif
142 
143 #endif
Perform a generic pixel-wise operation on N images and produces m output images.
itkStaticConstMacro(InputImageDimension, unsigned int, TInputImage::ImageDimension)
ImageToImageFilter< TInputImage, TOutputImage > Superclass
void ThreadedGenerateData(const OutputImageRegionType &outputRegionForThread, ThreadIdType threadId) override
itkStaticConstMacro(OutputImageDimension, unsigned int, TOutputImage::ImageDimension)