go home Home | Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Globals | Related Pages
elxOptimizerBase.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 __elxOptimizerBase_h
00016 #define __elxOptimizerBase_h
00017 
00019 #include "elxMacro.h"
00020 
00021 #include "elxBaseComponentSE.h"
00022 #include "itkOptimizer.h"
00023 
00024 
00025 namespace elastix
00026 {
00027 using namespace itk;
00028 
00050   template <class TElastix>
00051     class OptimizerBase : public BaseComponentSE<TElastix>
00052   {
00053   public:
00054 
00056     typedef OptimizerBase               Self;
00057     typedef BaseComponentSE<TElastix>   Superclass;
00058 
00060     itkTypeMacro( OptimizerBase, BaseComponentSE );
00061 
00063     typedef typename Superclass::ElastixType            ElastixType;
00064     typedef typename Superclass::ElastixPointer         ElastixPointer;
00065     typedef typename Superclass::ConfigurationType      ConfigurationType;
00066     typedef typename Superclass::ConfigurationPointer   ConfigurationPointer;
00067     typedef typename Superclass::RegistrationType       RegistrationType;
00068     typedef typename Superclass::RegistrationPointer    RegistrationPointer;
00069 
00071     typedef itk::Optimizer  ITKBaseType;
00072 
00074     typedef typename ITKBaseType::ParametersType        ParametersType;
00075 
00077     virtual ITKBaseType * GetAsITKBaseType(void)
00078     {
00079       return dynamic_cast<ITKBaseType *>(this);
00080     }
00081 
00083     virtual const ITKBaseType * GetAsITKBaseType(void) const
00084     {
00085       return dynamic_cast<const ITKBaseType *>(this);
00086     }
00087 
00089     virtual void SetCurrentPositionPublic( const ParametersType &param );
00090 
00094     virtual void BeforeEachResolutionBase();
00095 
00099     virtual void SetSinusScales(double amplitude, double frequency,
00100       unsigned long numberOfParameters);
00101 
00102   protected:
00103 
00105     OptimizerBase();
00107     virtual ~OptimizerBase() {}
00108 
00112     virtual void SelectNewSamples(void);
00113 
00115     virtual bool GetNewSamplesEveryIteration( void ) const;
00116 
00117   private:
00118 
00120     OptimizerBase( const Self& );   // purposely not implemented
00122     void operator=( const Self& );  // purposely not implemented
00123 
00127     bool m_NewSamplesEveryIteration;
00128 
00129   }; // end class OptimizerBase
00130 
00131 
00132 } // end namespace elastix
00133 
00134 
00135 #ifndef ITK_MANUAL_INSTANTIATION
00136 #include "elxOptimizerBase.hxx"
00137 #endif
00138 
00139 #endif // end #ifndef __elxOptimizerBase_h
00140 


Generated on 24-10-2011 for elastix by doxygen 1.7.4 elastix logo