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


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