/vol/vipdata/irtk/packages/registration/include/irtkSymmetricOptimizer.h
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 #ifndef _IRTKSYMMETRICOPTIMIZER_H
00014
00015 #define _IRTKSYMMETRICOPTIMIZER_H
00016
00018 class irtkRegistration;
00019
00030 class irtkSymmetricOptimizer : public irtkObject
00031 {
00032
00033 protected:
00034
00036 irtkTransformation *_Transformation1;
00037
00039 irtkTransformation *_Transformation2;
00040
00042 irtkRegistration *_Registration;
00043
00045 double _StepSize;
00046
00048 double _Epsilon;
00049
00051 double *transformationParams;
00052
00053 public:
00054
00056 irtkSymmetricOptimizer();
00057
00059 virtual ~irtkSymmetricOptimizer();
00060
00062 virtual double Run() = 0;
00063
00065 virtual void Run(double &, double &);
00066
00068 virtual const char *NameOfClass() = 0;
00069
00070 virtual void SetTransformation(irtkTransformation *, irtkTransformation *);
00071
00072 virtual GetMacro(Transformation1, irtkTransformation *);
00073
00074 virtual GetMacro(Transformation2, irtkTransformation *);
00075
00076 virtual SetMacro(Registration, irtkRegistration *)
00077
00078 virtual GetMacro(Registration, irtkRegistration *);
00079
00080 virtual SetMacro(StepSize, double);
00081
00082 virtual GetMacro(StepSize, double);
00083
00084 virtual SetMacro(Epsilon, double);
00085
00086 virtual GetMacro(Epsilon, double);
00087
00088 };
00089
00090 inline void irtkSymmetricOptimizer::SetTransformation(irtkTransformation *transformation1, irtkTransformation *transformation2)
00091 {
00092 int n;
00093
00094 _Transformation1 = transformation1;
00095 n = _Transformation1->NumberOfDOFs();
00096
00097 _Transformation2 = transformation2;
00098 n += _Transformation2->NumberOfDOFs();
00099
00100 transformationParams = new double[n];
00101 }
00102
00103 #include <irtkGradientDescentSymmetricOptimizer.h>
00104
00105 #endif