go home Home | Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Globals | Related Pages
elxFullSearchOptimizer.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 
00016 #ifndef __elxFullSearchOptimizer_h
00017 #define __elxFullSearchOptimizer_h
00018 
00019 #include "itkFullSearchOptimizer.h"
00020 #include "elxIncludes.h"
00021 #include <map>
00022 
00023 #include "itkNDImageBase.h"
00024 
00025 
00026 namespace elastix
00027 {
00028 using namespace itk;
00029 
00056   template <class TElastix>
00057     class FullSearch :
00058     public
00059       FullSearchOptimizer,
00060     public
00061       OptimizerBase<TElastix>
00062   {
00063   public:
00064 
00066     typedef FullSearch                          Self;
00067     typedef FullSearchOptimizer                 Superclass1;
00068     typedef OptimizerBase<TElastix>             Superclass2;
00069     typedef SmartPointer<Self>                  Pointer;
00070     typedef SmartPointer<const Self>            ConstPointer;
00071 
00073     itkNewMacro( Self );
00074 
00076     itkTypeMacro( FullSearch, FullSearchOptimizer );
00077 
00082     elxClassNameMacro( "FullSearch" );
00083 
00085     typedef Superclass1::CostFunctionType               CostFunctionType;
00086     typedef Superclass1::CostFunctionPointer            CostFunctionPointer;
00087     typedef Superclass1::ParametersType                 ParametersType;
00088     typedef Superclass1::MeasureType                    MeasureType;
00089     typedef Superclass1::ParameterValueType             ParameterValueType;
00090     typedef Superclass1::RangeValueType                 RangeValueType;
00091     typedef Superclass1::RangeType                      RangeType;
00092     typedef Superclass1::SearchSpaceType                SearchSpaceType;
00093     typedef Superclass1::SearchSpacePointer             SearchSpacePointer;
00094     typedef Superclass1::SearchSpaceIteratorType        SearchSpaceIteratorType;
00095     typedef Superclass1::SearchSpacePointType           SearchSpacePointType;
00096     typedef Superclass1::SearchSpaceIndexType           SearchSpaceIndexType;
00097     typedef Superclass1::SearchSpaceSizeType            SearchSpaceSizeType;
00098 
00100     typedef typename Superclass2::ElastixType           ElastixType;
00101     typedef typename Superclass2::ElastixPointer        ElastixPointer;
00102     typedef typename Superclass2::ConfigurationType     ConfigurationType;
00103     typedef typename Superclass2::ConfigurationPointer  ConfigurationPointer;
00104     typedef typename Superclass2::RegistrationType      RegistrationType;
00105     typedef typename Superclass2::RegistrationPointer   RegistrationPointer;
00106     typedef typename Superclass2::ITKBaseType           ITKBaseType;
00107 
00109     typedef NDImageBase<float>                          NDImageType;
00110     typedef typename NDImageType::Pointer               NDImagePointer;
00111 
00113     typedef std::map<unsigned int, std::string>             DimensionNameMapType;
00114     typedef typename DimensionNameMapType::const_iterator   NameIteratorType;
00115 
00117     virtual void BeforeRegistration(void);
00118     virtual void BeforeEachResolution(void);
00119     virtual void AfterEachResolution(void);
00120     virtual void AfterEachIteration(void);
00121     virtual void AfterRegistration(void);
00125     itkGetObjectMacro(OptimizationSurface, NDImageType);
00126 
00127   protected:
00128 
00129     FullSearch();
00130     virtual ~FullSearch() {};
00131 
00132     NDImagePointer m_OptimizationSurface;
00133 
00134     DimensionNameMapType m_SearchSpaceDimensionNames;
00135 
00140     //virtual int CheckSearchSpaceRangeDefinition(const std::string & fullFieldName, int errorcode, unsigned int entry_nr);
00141     virtual bool CheckSearchSpaceRangeDefinition( const std::string & fullFieldName,
00142       const bool found, const unsigned int entry_nr ) const;
00143 
00144   private:
00145 
00146     FullSearch( const Self& );      // purposely not implemented
00147     void operator=( const Self& );  // purposely not implemented
00148 
00149   }; // end class FullSearch
00150 
00151 } // end namespace elastix
00152 
00153 #ifndef ITK_MANUAL_INSTANTIATION
00154 #include "elxFullSearchOptimizer.hxx"
00155 #endif
00156 
00157 #endif // end #ifndef __elxFullSearchOptimizer_h


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