00001 /*========================================================================= 00002 00003 Library : Image Registration Toolkit (IRTK) 00004 Module : $Id: irtkPointRegistration.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 _IRTKPOINTREGISTRATION_H 00014 00015 #define _IRTKPOINTREGISTRATION_H 00016 00017 #include <irtkRegistration.h> 00018 00019 #ifdef HAS_VTK 00020 #include <vtkPolyData.h> 00021 #endif 00022 00031 class irtkPointRegistration : public irtkRegistration 00032 { 00033 00034 protected: 00035 00037 irtkPointSet *_target; 00038 00040 irtkPointSet *_source; 00041 00043 irtkTransformation *_transformation; 00044 00046 irtkOptimizer *_optimizer; 00047 00049 irtkOptimizationMethod _OptimizationMethod; 00050 00052 virtual void Initialize(); 00053 00055 virtual void Finalize(); 00056 00057 public: 00058 00060 irtkPointRegistration(); 00061 00063 virtual ~irtkPointRegistration(); 00064 00066 virtual void SetInput (irtkPointSet *, irtkPointSet *); 00067 00069 virtual void SetOutput(irtkTransformation *); 00070 00072 virtual double Evaluate(); 00073 00075 virtual double EvaluateGradient(float, float *); 00076 00078 virtual void Run() = 0; 00079 00081 virtual const char *NameOfClass(); 00082 00083 // Access optimizer parameters 00084 virtual SetMacro(OptimizationMethod, irtkOptimizationMethod); 00085 virtual GetMacro(OptimizationMethod, irtkOptimizationMethod); 00086 }; 00087 00088 #include <irtkPointRigidRegistration.h> 00089 #include <irtkPointAffineRegistration.h> 00090 #include <irtkPointFreeFormRegistration.h> 00091 00092 #endif