go home Home | Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Globals | Related Pages
elxFiniteDifferenceGradientDescent.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 __elxFiniteDifferenceGradientDescent_h
00016 #define __elxFiniteDifferenceGradientDescent_h
00017 
00018 #include "itkFiniteDifferenceGradientDescentOptimizer.h"
00019 #include "elxIncludes.h"
00020 
00021 namespace elastix
00022 {
00023 using namespace itk;
00024 
00077   template <class TElastix>
00078     class FiniteDifferenceGradientDescent :
00079     public
00080       itk::FiniteDifferenceGradientDescentOptimizer,
00081     public
00082       OptimizerBase<TElastix>
00083   {
00084   public:
00085 
00087     typedef FiniteDifferenceGradientDescent           Self;
00088     typedef FiniteDifferenceGradientDescentOptimizer  Superclass1;
00089     typedef OptimizerBase<TElastix>                   Superclass2;
00090     typedef SmartPointer<Self>                        Pointer;
00091     typedef SmartPointer<const Self>                  ConstPointer;
00092 
00094     itkNewMacro( Self );
00095 
00097     itkTypeMacro( FiniteDifferenceGradientDescent, FiniteDifferenceGradientDescentOptimizer );
00098 
00103     elxClassNameMacro( "FiniteDifferenceGradientDescent" );
00104 
00106     typedef Superclass1::CostFunctionType     CostFunctionType;
00107     typedef Superclass1::CostFunctionPointer  CostFunctionPointer;
00108     typedef Superclass1::StopConditionType    StopConditionType;
00109 
00111     typedef typename Superclass2::ElastixType           ElastixType;
00112     typedef typename Superclass2::ElastixPointer        ElastixPointer;
00113     typedef typename Superclass2::ConfigurationType     ConfigurationType;
00114     typedef typename Superclass2::ConfigurationPointer  ConfigurationPointer;
00115     typedef typename Superclass2::RegistrationType      RegistrationType;
00116     typedef typename Superclass2::RegistrationPointer   RegistrationPointer;
00117     typedef typename Superclass2::ITKBaseType           ITKBaseType;
00118 
00120     typedef typename Superclass1::ParametersType        ParametersType;
00121 
00123     virtual void BeforeRegistration(void);
00124     virtual void BeforeEachResolution(void);
00125     virtual void AfterEachResolution(void);
00126     virtual void AfterEachIteration(void);
00127     virtual void AfterRegistration(void);
00128 
00131     virtual void StartOptimization(void);
00132 
00133   protected:
00134 
00135       FiniteDifferenceGradientDescent();
00136       virtual ~FiniteDifferenceGradientDescent() {};
00137 
00138       bool m_ShowMetricValues;
00139 
00140   private:
00141 
00142       FiniteDifferenceGradientDescent( const Self& ); // purposely not implemented
00143       void operator=( const Self& );              // purposely not implemented
00144 
00145   }; // end class FiniteDifferenceGradientDescent
00146 
00147 
00148 } // end namespace elastix
00149 
00150 #ifndef ITK_MANUAL_INSTANTIATION
00151 #include "elxFiniteDifferenceGradientDescent.hxx"
00152 #endif
00153 
00154 #endif // end #ifndef __elxFiniteDifferenceGradientDescent_h
00155 


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