go home Home | Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Globals | Related Pages
elxRegularStepGradientDescent.h
Go to the documentation of this file.
00001 /*======================================================================
00002 
00003   This file is part of the elastix software.
00004 
00005   Copyright (c) University Medical Center Utrecht. All rights reserved.
00006   See src/CopyrightElastix.txt or http://elastix.isi.uu.nl/legal.php for
00007   details.
00008 
00009      This software is distributed WITHOUT ANY WARRANTY; without even
00010      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
00011      PURPOSE. See the above copyright notices for more information.
00012 
00013 ======================================================================*/
00014 
00015 #ifndef __elxRegularStepGradientDescent_h
00016 #define __elxRegularStepGradientDescent_h
00017 
00018 #include "itkRegularStepGradientDescentOptimizer.h"
00019 #include "elxIncludes.h"
00020 
00021 namespace elastix
00022 {
00023 using namespace itk;
00024 
00062   template <class TElastix>
00063     class RegularStepGradientDescent :
00064     public
00065       itk::RegularStepGradientDescentOptimizer,
00066     public
00067       OptimizerBase<TElastix>
00068   {
00069   public:
00070 
00072     typedef RegularStepGradientDescent                  Self;
00073     typedef RegularStepGradientDescentOptimizer Superclass1;
00074     typedef OptimizerBase<TElastix>                     Superclass2;
00075     typedef SmartPointer<Self>                  Pointer;
00076     typedef SmartPointer<const Self>            ConstPointer;
00077 
00079     itkNewMacro( Self );
00080 
00082     itkTypeMacro( RegularStepGradientDescent, RegularStepGradientDescentOptimizer );
00083 
00088     elxClassNameMacro( "RegularStepGradientDescent" );
00089 
00091     typedef Superclass1::CostFunctionType     CostFunctionType;
00092     typedef Superclass1::CostFunctionPointer  CostFunctionPointer;
00093 
00095     typedef typename Superclass2::ElastixType           ElastixType;
00096     typedef typename Superclass2::ElastixPointer        ElastixPointer;
00097     typedef typename Superclass2::ConfigurationType     ConfigurationType;
00098     typedef typename Superclass2::ConfigurationPointer  ConfigurationPointer;
00099     typedef typename Superclass2::RegistrationType      RegistrationType;
00100     typedef typename Superclass2::RegistrationPointer   RegistrationPointer;
00101     typedef typename Superclass2::ITKBaseType           ITKBaseType;
00102 
00104     typedef typename Superclass1::ParametersType        ParametersType;
00105 
00108     virtual void BeforeRegistration(void);
00109     virtual void BeforeEachResolution(void);
00110     virtual void AfterEachResolution(void);
00111     virtual void AfterEachIteration(void);
00112     virtual void AfterRegistration(void);
00113 
00118     virtual void SetInitialPosition( const ParametersType & param );
00119 
00120 
00121   protected:
00122 
00123     RegularStepGradientDescent(){};
00124       virtual ~RegularStepGradientDescent() {};
00125 
00126   private:
00127 
00128       RegularStepGradientDescent( const Self& );  // purposely not implemented
00129       void operator=( const Self& );              // purposely not implemented
00130 
00131   }; // end class RegularStepGradientDescent
00132 
00133 
00134 } // end namespace elastix
00135 
00136 #ifndef ITK_MANUAL_INSTANTIATION
00137 #include "elxRegularStepGradientDescent.hxx"
00138 #endif
00139 
00140 #endif // end #ifndef __elxRegularStepGradientDescent_h


Generated on 11-05-2012 for elastix by doxygen 1.7.6.1 elastix logo