/vol/vipdata/irtk/packages/registration/include/irtkOptimizer.h
00001
00002
00003
00004
00005
00006
00007
00008
00009
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