![]() |
Home | Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Globals | Related Pages |
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-10-2011 for elastix by ![]() |
![]() |