/vol/vipdata/irtk/packages/registration/include/irtkOptimizer.h

00001 /*=========================================================================
00002 
00003   Library   : Image Registration Toolkit (IRTK)
00004   Module    : $Id: irtkOptimizer.h 2 2008-12-23 12:40:14Z dr $
00005   Copyright : Imperial College, Department of Computing
00006               Visual Information Processing (VIP), 2008 onwards
00007   Date      : $Date: 2008-12-23 12:40:14 +0000 (Tue, 23 Dec 2008) $
00008   Version   : $Revision: 2 $
00009   Changes   : $Author: dr $
00010 
00011 =========================================================================*/
00012 
00013 #ifndef _IRTKOPTIMIZER_H
00014 
00015 #define _IRTKOPTIMIZER_H
00016 
00018 class irtkRegistration;
00019 
00030 class irtkOptimizer : public irtkObject
00031 {
00032 
00033 protected:
00034 
00036   irtkTransformation *_Transformation;
00037 
00039   irtkRegistration *_Registration;
00040 
00042   double _StepSize;
00043 
00045   double _Epsilon;
00046 
00048   double *transformationParams;
00049 
00050 public:
00051 
00053   irtkOptimizer();
00054 
00056   virtual ~irtkOptimizer();
00057 
00059   virtual double Run() = 0;
00060 
00062   virtual void Run(double &, double &);
00063 
00065   virtual const char *NameOfClass() = 0;
00066 
00067   virtual void SetTransformation(irtkTransformation *);
00068 
00069   virtual GetMacro(Transformation, irtkTransformation *);
00070 
00071   virtual SetMacro(Registration, irtkRegistration *)
00072 
00073   virtual GetMacro(Registration, irtkRegistration *);
00074 
00075   virtual SetMacro(StepSize, double);
00076 
00077   virtual GetMacro(StepSize, double);
00078 
00079   virtual SetMacro(Epsilon, double);
00080 
00081   virtual GetMacro(Epsilon, double);
00082 
00083 };
00084 
00085 inline void irtkOptimizer::SetTransformation(irtkTransformation *transformation)
00086 {
00087   int n;
00088   _Transformation = transformation;
00089   n = _Transformation->NumberOfDOFs();
00090   transformationParams = new double[n];
00091 }
00092 
00093 #include <irtkDownhillDescentOptimizer.h>
00094 #include <irtkGradientDescentOptimizer.h>
00095 #include <irtkSteepestGradientDescentOptimizer.h>
00096 #include <irtkConjugateGradientDescentOptimizer.h>
00097 
00098 #endif