15 #ifndef __elxAdaptiveStochasticGradientDescent_h
16 #define __elxAdaptiveStochasticGradientDescent_h
24 #include "itkMersenneTwisterRandomVariateGenerator.h"
168 template <
class TElastix>
215 virtual void BeforeRegistration(
void );
216 virtual void BeforeEachResolution(
void );
217 virtual void AfterEachResolution(
void );
218 virtual void AfterEachIteration(
void );
219 virtual void AfterRegistration(
void );
224 virtual void StartOptimization(
void );
230 virtual void ResumeOptimization(
void );
233 virtual void MetricErrorResponse( ExceptionObject & err );
244 itkSetMacro( AutomaticParameterEstimation,
bool );
245 itkGetConstMacro( AutomaticParameterEstimation,
bool );
248 itkSetMacro( MaximumStepLength,
double );
249 itkGetConstMacro( MaximumStepLength,
double );
252 itkSetMacro( MaximumNumberOfSamplingAttempts,
unsigned long );
255 itkGetConstReferenceMacro( MaximumNumberOfSamplingAttempts,
unsigned long );
269 struct SettingsType {
double a, A, alpha, fmax, fmin, omega; };
295 itkStaticConstMacro( FixedImageDimension,
unsigned int, FixedImageType::ImageDimension );
296 itkStaticConstMacro( MovingImageDimension,
unsigned int, MovingImageType::ImageDimension );
300 itkGetStaticConstMacro(FixedImageDimension),
309 SettingsVectorType m_SettingsVector;
325 virtual void CheckForAdvancedTransform(
void );
334 virtual void AutomaticParameterEstimation(
void );
344 double perturbationSigma,
double & gg,
double & ee );
354 virtual void SampleFixedImageForJacobianTerms(
360 virtual void ComputeJacobianTerms(
double & TrC,
double & TrCC,
361 double & maxJJ,
double & maxJCJ );
366 virtual void GetScaledDerivativeWithExceptionHandling(
372 virtual void AddRandomPerturbation(
ParametersType & parameters,
double sigma );
377 void operator=(
const Self& );
397 #ifndef ITK_MANUAL_INSTANTIATION
398 #include "elxAdaptiveStochasticGradientDescent.hxx"
401 #endif // end #ifndef __elxAdaptiveStochasticGradientDescent_h