17 #ifndef __itkFiniteDifferenceImageFilter_h
18 #define __itkFiniteDifferenceImageFilter_h
121 template <
class TInputImage,
class TOutputImage>
140 itkStaticConstMacro(ImageDimension,
unsigned int, OutputImageType::ImageDimension);
160 typedef enum { UNINITIALIZED = 0, INITIALIZED = 1 } FilterStateType;
163 itkGetConstReferenceMacro(ElapsedIterations,
unsigned int);
168 itkGetConstReferenceObjectMacro(DifferenceFunction,
169 FiniteDifferenceFunctionType );
174 itkSetObjectMacro(DifferenceFunction, FiniteDifferenceFunctionType );
178 itkSetMacro(NumberOfIterations,
unsigned int);
179 itkGetConstReferenceMacro(NumberOfIterations,
unsigned int);
183 itkSetMacro(UseImageSpacing,
bool);
184 itkBooleanMacro(UseImageSpacing);
185 itkGetConstReferenceMacro(UseImageSpacing,
bool);
189 itkSetMacro(MaximumRMSError,
double);
190 itkGetConstReferenceMacro(MaximumRMSError,
double);
194 itkSetMacro(RMSChange,
double);
195 itkGetConstReferenceMacro(RMSChange,
double);
198 void SetStateToInitialized()
200 this->SetState(INITIALIZED);
204 void SetStateToUninitialized()
206 this->SetState(UNINITIALIZED);
210 #if !defined(CABLE_CONFIGURATION)
211 itkSetMacro(State, FilterStateType);
212 itkGetConstReferenceMacro(State, FilterStateType);
217 itkSetMacro(ManualReinitialization,
bool);
218 itkGetConstReferenceMacro(ManualReinitialization,
bool);
219 itkBooleanMacro(ManualReinitialization);
221 #ifdef ITK_USE_STRICT_CONCEPT_CHECKING
231 void PrintSelf(std::ostream& os,
Indent indent)
const;
234 virtual void AllocateUpdateBuffer() = 0;
239 virtual void ApplyUpdate(TimeStepType dt) = 0;
246 virtual TimeStepType CalculateChange() = 0;
251 virtual void CopyInputToOutput() = 0;
256 virtual void GenerateData();
269 virtual void GenerateInputRequestedRegion();
284 virtual bool ThreadedHalt(
void *itkNotUsed(threadInfo)) {
return this->Halt(); }
299 virtual void InitializeIteration()
300 { m_DifferenceFunction->InitializeIteration(); }
315 virtual TimeStepType ResolveTimeStep(
const TimeStepType* timeStepList,
316 const bool* valid,
int size);
319 itkSetMacro(ElapsedIterations,
unsigned int);
341 void operator=(
const Self&);
346 void InitializeFunctionCoefficients();
362 #define ITK_TEMPLATE_FiniteDifferenceImageFilter(_, EXPORT, x, y) namespace itk { \
363 _(2(class EXPORT FiniteDifferenceImageFilter< ITK_TEMPLATE_2 x >)) \
364 namespace Templates { typedef FiniteDifferenceImageFilter< ITK_TEMPLATE_2 x > \
365 FiniteDifferenceImageFilter##y; } \
368 #if ITK_TEMPLATE_EXPLICIT
369 # include "Templates/itkFiniteDifferenceImageFilter+-.h"