ITK 6.0.0
Insight Toolkit
 
Loading...
Searching...
No Matches
itkTernaryFunctorImageFilter.h
Go to the documentation of this file.
1/*=========================================================================
2 *
3 * Copyright NumFOCUS
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * https://www.apache.org/licenses/LICENSE-2.0.txt
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 *
17 *=========================================================================*/
18#ifndef itkTernaryFunctorImageFilter_h
19#define itkTernaryFunctorImageFilter_h
20
22
23namespace itk
24{
37template <typename TInputImage1,
38 typename TInputImage2,
39 typename TInputImage3,
40 typename TOutputImage,
41 typename TFunction>
42class ITK_TEMPLATE_EXPORT TernaryFunctorImageFilter : public InPlaceImageFilter<TInputImage1, TOutputImage>
43{
44public:
45 ITK_DISALLOW_COPY_AND_MOVE(TernaryFunctorImageFilter);
46
52
54 itkNewMacro(Self);
55
57 itkOverrideGetNameOfClassMacro(TernaryFunctorImageFilter);
58
60 using FunctorType = TFunction;
61 using Input1ImageType = TInputImage1;
62 using Input1ImagePointer = typename Input1ImageType::ConstPointer;
63 using Input1ImageRegionType = typename Input1ImageType::RegionType;
64 using Input1ImagePixelType = typename Input1ImageType::PixelType;
65 using Input2ImageType = TInputImage2;
66 using Input2ImagePointer = typename Input2ImageType::ConstPointer;
67 using Input2ImageRegionType = typename Input2ImageType::RegionType;
68 using Input2ImagePixelType = typename Input2ImageType::PixelType;
69 using Input3ImageType = TInputImage3;
70 using Input3ImagePointer = typename Input3ImageType::ConstPointer;
71 using Input3ImageRegionType = typename Input3ImageType::RegionType;
72 using Input3ImagePixelType = typename Input3ImageType::PixelType;
73 using OutputImageType = TOutputImage;
74 using OutputImagePointer = typename OutputImageType::Pointer;
75 using OutputImageRegionType = typename OutputImageType::RegionType;
76 using OutputImagePixelType = typename OutputImageType::PixelType;
77
79 void
80 SetInput1(const TInputImage1 * image1);
81
83 void
84 SetInput2(const TInputImage2 * image2);
85
87 void
88 SetInput3(const TInputImage3 * image3);
89
96 {
97 return m_Functor;
98 }
99
104 const FunctorType &
106 {
107 return m_Functor;
108 }
109
116 void
117 SetFunctor(const FunctorType & functor)
118 {
119 if (!(functor == m_Functor))
120 {
121 m_Functor = functor;
122 this->Modified();
123 }
124 }
125
127 static constexpr unsigned int Input1ImageDimension = TInputImage1::ImageDimension;
128 static constexpr unsigned int Input2ImageDimension = TInputImage2::ImageDimension;
129 static constexpr unsigned int Input3ImageDimension = TInputImage3::ImageDimension;
130 static constexpr unsigned int OutputImageDimension = TOutputImage::ImageDimension;
131
135
136protected:
138 ~TernaryFunctorImageFilter() override = default;
139
142 void
144
155 void
156 DynamicThreadedGenerateData(const OutputImageRegionType & outputRegionForThread) override;
157
158
159private:
161};
162} // end namespace itk
163
164#ifndef ITK_MANUAL_INSTANTIATION
165# include "itkTernaryFunctorImageFilter.hxx"
166#endif
167
168#endif
virtual void Modified() const
Implements transparent reference counting.
void BeforeThreadedGenerateData() override
void SetInput2(const TInputImage2 *image2)
static constexpr unsigned int Input3ImageDimension
typename Input1ImageType::PixelType Input1ImagePixelType
typename Input2ImageType::RegionType Input2ImageRegionType
typename OutputImageType::RegionType OutputImageRegionType
static constexpr unsigned int OutputImageDimension
typename Input2ImageType::ConstPointer Input2ImagePointer
static constexpr unsigned int Input1ImageDimension
void SetInput1(const TInputImage1 *image1)
InPlaceImageFilter< TInputImage1, TOutputImage > Superclass
typename OutputImageType::PixelType OutputImagePixelType
typename Input1ImageType::ConstPointer Input1ImagePointer
typename Input2ImageType::PixelType Input2ImagePixelType
typename Input1ImageType::RegionType Input1ImageRegionType
typename Input3ImageType::ConstPointer Input3ImagePointer
static constexpr unsigned int Input2ImageDimension
typename Input3ImageType::PixelType Input3ImagePixelType
void SetFunctor(const FunctorType &functor)
typename Input3ImageType::RegionType Input3ImageRegionType
void SetInput3(const TInputImage3 *image3)
void DynamicThreadedGenerateData(const OutputImageRegionType &outputRegionForThread) override
typename OutputImageType::Pointer OutputImagePointer
~TernaryFunctorImageFilter() override=default
#define itkConceptMacro(name, concept)
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....