ITK  5.4.0
Insight Toolkit
itkMultiphaseDenseFiniteDifferenceImageFilter.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 itkMultiphaseDenseFiniteDifferenceImageFilter_h
19#define itkMultiphaseDenseFiniteDifferenceImageFilter_h
20
24#include "itkNumericTraits.h"
26
27#include <list>
28
29namespace itk
30{
97template <typename TInputImage,
98 typename TFeatureImage,
99 typename TOutputImage,
100 typename TFunction,
101 typename TIdCell = unsigned int>
103 : public MultiphaseFiniteDifferenceImageFilter<TInputImage, TFeatureImage, TOutputImage, TFunction, TIdCell>
104{
105public:
106 ITK_DISALLOW_COPY_AND_MOVE(MultiphaseDenseFiniteDifferenceImageFilter);
107
114
116 itkOverrideGetNameOfClassMacro(MultiphaseDenseFiniteDifferenceImageFilter);
117
120 static constexpr unsigned int ImageDimension = Superclass::ImageDimension;
121
123 using typename Superclass::InputImageType;
124 using typename Superclass::InputImagePointer;
125 using typename Superclass::InputRegionType;
126 using typename Superclass::InputSizeType;
127 using typename Superclass::InputSizeValueType;
128 using typename Superclass::InputIndexType;
129 using typename Superclass::InputIndexValueType;
130 using typename Superclass::InputPixelType;
131 using typename Superclass::InputPointType;
132 using typename Superclass::InputSpacingType;
133 using ValueType = typename InputImageType::ValueType;
134
135 using typename Superclass::FeatureImageType;
136 using typename Superclass::FeatureSizeType;
137 using typename Superclass::FeatureImagePointer;
138 using typename Superclass::FeatureRegionType;
139 using typename Superclass::FeatureSpacingType;
140 using typename Superclass::FeaturePointType;
141 using typename Superclass::FeaturePixelType;
142
143 using typename Superclass::OutputImageType;
144 using typename Superclass::OutputImagePointer;
145 using typename Superclass::OutputRegionType;
146 using typename Superclass::OutputSizeType;
147 using SizeValueType = typename Superclass::OutputSizeValueType;
148 using typename Superclass::OutputIndexType;
149 using typename Superclass::OutputIndexValueType;
150 using OutputPixelType = typename OutputImageType::PixelType;
151
152 using typename Superclass::IdCellType;
153
156
159
160 using typename Superclass::FiniteDifferenceFunctionType;
161 using typename Superclass::FiniteDifferenceFunctionPointer;
162 using NeighborhoodIteratorType = typename FiniteDifferenceFunctionType::NeighborhoodType;
163
165 using typename Superclass::TimeStepType;
166
169
170 void
172
173#ifdef ITK_USE_CONCEPT_CHECKING
174 // Begin concept checking
176 itkConceptMacro(OutputAdditiveOperatorsCheck, (Concept::AdditiveOperators<OutputPixelType>));
178 // End concept checking
179#endif
180
181 itkSetMacro(ReinitializeCounter, unsigned int);
182 itkGetMacro(ReinitializeCounter, unsigned int);
183
184protected:
186 {
187 this->m_ReinitializeCounter = 1;
188 // FIXME: this->m_UpdateCounter really used?
189 // this->m_UpdateCounter = 0; // FIXME: Should this be a bool ?
190 }
191
193
194 void
195 PrintSelf(std::ostream &, Indent indent) const override;
196
200 void
202
203 void
205
209 void
211
212 unsigned int m_ReinitializeCounter{}; // FIXME: Should this be a boolean ?
213 // unsigned int m_UpdateCounter; // FIXME: Should this be a boolean ?
214
215private:
218 void
220
225 CalculateChange() override;
226
228 std::vector<InputImagePointer> m_UpdateBuffers{};
229};
230} // end namespace itk
231
232#ifndef ITK_MANUAL_INSTANTIATION
233# include "itkMultiphaseDenseFiniteDifferenceImageFilter.hxx"
234#endif
235
236#endif
Binarize an input image by thresholding.
Base class for all process objects that output image data.
Control indentation during Print() invocation.
Definition: itkIndent.h:50
void PrintSelf(std::ostream &, Indent indent) const override
~MultiphaseDenseFiniteDifferenceImageFilter() override=default
void ApplyUpdate(TimeStepType dt) override
typename FiniteDifferenceFunctionType::NeighborhoodType NeighborhoodIteratorType
The base class for all process objects (source, filters, mappers) in the Insight data processing pipe...
This filter calculates the Euclidean distance transform of a binary image in linear time for arbitrar...
SmartPointer< Self > Pointer
#define itkConceptMacro(name, concept)
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....
Splits an image into a main region and several "face" regions which are used to handle computations o...