ITK  6.0.0
Insight Toolkit
itkDenseFiniteDifferenceImageFilter.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 itkDenseFiniteDifferenceImageFilter_h
19#define itkDenseFiniteDifferenceImageFilter_h
20
21#include "itkBooleanStdVector.h"
24
25namespace itk
26{
69template <typename TInputImage, typename TOutputImage>
70class ITK_TEMPLATE_EXPORT DenseFiniteDifferenceImageFilter
71 : public FiniteDifferenceImageFilter<TInputImage, TOutputImage>
72{
73public:
74 ITK_DISALLOW_COPY_AND_MOVE(DenseFiniteDifferenceImageFilter);
75
79
82
84 itkOverrideGetNameOfClassMacro(DenseFiniteDifferenceImageFilter);
85
87 using typename Superclass::InputImageType;
88 using typename Superclass::OutputImageType;
89 using typename Superclass::FiniteDifferenceFunctionType;
90
93 static constexpr unsigned int ImageDimension = Superclass::ImageDimension;
94
97 using typename Superclass::PixelType;
98
100 using typename Superclass::TimeStepType;
101
104
105#ifdef ITK_USE_CONCEPT_CHECKING
106 // Begin concept checking
108 itkConceptMacro(OutputAdditiveOperatorsCheck, (Concept::AdditiveOperators<PixelType>));
109 itkConceptMacro(OutputAdditiveAndAssignOperatorsCheck, (Concept::AdditiveAndAssignOperators<PixelType>));
111 // End concept checking
112#endif
113
114protected:
117 void
118 PrintSelf(std::ostream & os, Indent indent) const override;
119
123 void
125
129 void
130 ApplyUpdate(const TimeStepType & dt) override;
131
134 virtual UpdateBufferType *
136 {
137 return m_UpdateBuffer;
138 }
139
143 TimeStepType
144 CalculateChange() override;
145
148 void
150
153
158 virtual void
159 ThreadedApplyUpdate(const TimeStepType & dt, const ThreadRegionType & regionToProcess, ThreadIdType threadId);
160
165 virtual TimeStepType
166 ThreadedCalculateChange(const ThreadRegionType & regionToProcess, ThreadIdType threadId);
167
168private:
172 {
175 std::vector<TimeStepType> TimeStepList;
176
178 };
179
184
189
191 typename UpdateBufferType::Pointer m_UpdateBuffer{};
192};
193} // end namespace itk
194
195#ifndef ITK_MANUAL_INSTANTIATION
196# include "itkDenseFiniteDifferenceImageFilter.hxx"
197#endif
198
199#endif
void ApplyUpdate(const TimeStepType &dt) override
virtual void ThreadedApplyUpdate(const TimeStepType &dt, const ThreadRegionType &regionToProcess, ThreadIdType threadId)
static ITK_THREAD_RETURN_FUNCTION_CALL_CONVENTION ApplyUpdateThreaderCallback(void *arg)
TimeStepType CalculateChange() override
virtual TimeStepType ThreadedCalculateChange(const ThreadRegionType &regionToProcess, ThreadIdType threadId)
typename UpdateBufferType::RegionType ThreadRegionType
void PrintSelf(std::ostream &os, Indent indent) const override
~DenseFiniteDifferenceImageFilter() override=default
static ITK_THREAD_RETURN_FUNCTION_CALL_CONVENTION CalculateChangeThreaderCallback(void *arg)
typename FiniteDifferenceFunctionType::TimeStepType TimeStepType
Base class for all process objects that output image data.
TOutputImage OutputImageType
Control indentation during Print() invocation.
Definition: itkIndent.h:50
The base class for all process objects (source, filters, mappers) in the Insight data processing pipe...
static Pointer New()
SmartPointer< Self > Pointer
#define itkConceptMacro(name, concept)
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....
unsigned int ThreadIdType
Definition: itkIntTypes.h:102
itk::ITK_THREAD_RETURN_TYPE ITK_THREAD_RETURN_FUNCTION_CALL_CONVENTION
std::vector< Boolean > BooleanStdVectorType