go home Home | Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Globals | Related Pages
elxSimplex.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 __elxSimplex_h
00016 #define __elxSimplex_h
00017 
00018 #include "itkAmoebaOptimizer.h"
00019 #include "elxIncludes.h"
00020 
00021 namespace elastix
00022 {
00023 using namespace itk;
00024 
00038   template <class TElastix>
00039     class Simplex :
00040     public
00041       itk::AmoebaOptimizer,
00042     public
00043       OptimizerBase<TElastix>
00044   {
00045   public:
00046 
00048     typedef Simplex                  Self;
00049     typedef AmoebaOptimizer Superclass1;
00050     typedef OptimizerBase<TElastix>                     Superclass2;
00051     typedef SmartPointer<Self>                  Pointer;
00052     typedef SmartPointer<const Self>            ConstPointer;
00053 
00055     itkNewMacro( Self );
00056 
00058     itkTypeMacro( Simplex, AmoebaOptimizer );
00059 
00064     elxClassNameMacro( "Simplex" );
00065 
00067     typedef Superclass1::CostFunctionType     CostFunctionType;
00068     typedef Superclass1::CostFunctionPointer  CostFunctionPointer;
00069 
00071     typedef typename Superclass2::ElastixType           ElastixType;
00072     typedef typename Superclass2::ElastixPointer        ElastixPointer;
00073     typedef typename Superclass2::ConfigurationType     ConfigurationType;
00074     typedef typename Superclass2::ConfigurationPointer  ConfigurationPointer;
00075     typedef typename Superclass2::RegistrationType      RegistrationType;
00076     typedef typename Superclass2::RegistrationPointer   RegistrationPointer;
00077     typedef typename Superclass2::ITKBaseType           ITKBaseType;
00078 
00080     typedef typename Superclass1::ParametersType        ParametersType;
00081 
00084     virtual void BeforeRegistration(void);
00085     virtual void BeforeEachResolution(void);
00086     virtual void AfterEachResolution(void);
00087     virtual void AfterEachIteration(void);
00088     virtual void AfterRegistration(void);
00089 
00094     virtual void SetInitialPosition( const ParametersType & param );
00095 
00096   protected:
00097 
00098     Simplex(){};
00099     virtual ~Simplex() {};
00100 
00101   private:
00102 
00103     Simplex( const Self& );  // purposely not implemented
00104     void operator=( const Self& );              // purposely not implemented
00105 
00106   }; // end class Simplex
00107 
00108 
00109 } // end namespace elastix
00110 
00111 #ifndef ITK_MANUAL_INSTANTIATION
00112 #include "elxSimplex.hxx"
00113 #endif
00114 
00115 #endif // end #ifndef __elxSimplex_h


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