18 #ifndef __itkVariationalRegistrationStopCriterion_h
19 #define __itkVariationalRegistrationStopCriterion_h
67 template<
class TRegistrationFilter,
class TMRFilter >
89 itkSetMacro( IterationModulus,
int );
92 itkGetMacro( IterationModulus,
int );
95 itkSetMacro( PerformIncreaseCountCheck,
bool );
96 itkGetMacro( PerformIncreaseCountCheck,
bool );
97 itkBooleanMacro( PerformIncreaseCountCheck );
101 itkSetMacro( MaximumIncreaseCount,
int );
104 itkGetMacro( MaximumIncreaseCount,
int );
107 itkSetMacro( PerformLineFittingCheck,
bool );
108 itkGetMacro( PerformLineFittingCheck,
bool );
109 itkBooleanMacro( PerformLineFittingCheck );
115 itkSetMacro( PerformLineFittingMaxDistanceCheck,
bool );
116 itkGetMacro( PerformLineFittingMaxDistanceCheck,
bool );
117 itkBooleanMacro( PerformLineFittingMaxDistanceCheck );
123 itkSetMacro( LineFittingUseAbsoluteValues,
bool );
124 itkGetMacro( LineFittingUseAbsoluteValues,
bool );
125 itkBooleanMacro( LineFittingUseAbsoluteValues );
135 virtual void SetNumberOfFittingIterations(
const int it );
138 itkGetMacro( NumberOfFittingIterations,
int );
141 itkSetMacro( RegressionLineSlopeThreshold,
double );
144 itkGetMacro( RegressionLineSlopeThreshold,
double );
147 itkSetMacro( MaxDistanceToRegressionLine,
double );
150 itkGetMacro( MaxDistanceToRegressionLine,
double );
154 LINE_FITTING_MODE_ORIGINAL = 0,
155 LINE_FITTING_MODE_NORMALIZED = 1,
156 LINE_FITTING_MODE_SCALED = 2
164 itkSetEnumMacro( LineFittingMode, LineFittingMode );
167 itkGetEnumMacro( LineFittingMode, LineFittingMode );
171 { this->SetLineFittingMode( LINE_FITTING_MODE_ORIGINAL ); }
175 { this->SetLineFittingMode( LINE_FITTING_MODE_NORMALIZED ); }
179 { this->SetLineFittingMode( LINE_FITTING_MODE_SCALED ); }
183 MULTI_RESOLUTION_POLICY_DEFAULT = 0,
184 MULTI_RESOLUTION_POLICY_SIMPLE_GRADUATED = 1,
185 MULTI_RESOLUTION_POLICY_GRADUATED = 2
196 itkSetEnumMacro( MultiResolutionPolicy, MultiResolutionPolicy );
199 itkGetEnumMacro( MultiResolutionPolicy, MultiResolutionPolicy );
203 { this->SetMultiResolutionPolicy( MULTI_RESOLUTION_POLICY_DEFAULT ); }
209 { this->SetMultiResolutionPolicy( MULTI_RESOLUTION_POLICY_SIMPLE_GRADUATED ); }
217 { this->SetMultiResolutionPolicy( MULTI_RESOLUTION_POLICY_GRADUATED ); }
228 virtual void PrintSelf(std::ostream& os,
Indent indent)
const;
232 virtual void SetModeForNextLevel(
233 const unsigned int nextLevel,
const unsigned int numberOfLevels );
237 virtual void SetNextMetricValue(
const double value );
240 virtual void ResetFittingData();
244 virtual bool CheckStopRegistration();
247 virtual void FitLine(
const double *
const x,
const double *
const y,
248 const int n,
double *m,
double *b);
252 void operator=(
const Self&);
289 #ifndef ITK_MANUAL_INSTANTIATION
290 #include "itkVariationalRegistrationStopCriterion.hxx"
virtual void SetLineFittingModeToNormalizedValues()
MultiResolutionPolicy m_MultiResolutionPolicy
int m_MaximumIncreaseCount
SmartPointer< Self > Pointer
double * m_IterationArray
LineFittingMode m_LineFittingMode
int m_NumberOfFittingIterations
VariationalRegistrationStopCriterion Self
SmartPointer< const Self > ConstPointer
TRegistrationFilter RegistrationFilterType
bool m_PerformLineFittingMaxDistanceCheck
bool m_PerformLineFittingCheck
double m_MaxDistanceToRegressionLine
virtual void SetLineFittingModeToOriginalValues()
Abstraction of the Events used to communicating among filters and with GUIs.
bool m_LineFittingUseAbsoluteValues
double m_RegressionLineSlopeThreshold
virtual void SetMultiResolutionPolicyToDefault()
virtual void SetMultiResolutionPolicyToSimpleGraduated()
double * m_DistanceArrayForFitting
Control indentation during Print() invocation.
virtual void SetMultiResolutionPolicyToGraduated()
virtual void SetLineFittingModeToScaledValues()
Base class for most ITK classes.
Superclass for callback/observer methods.
bool m_PerformIncreaseCountCheck
int m_CurrentIncreaseCount
A flexible stop criterion for the variational registration framework.