00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef __mitkRegistrationFilter_h
00012 #define __mitkRegistrationFilter_h
00013
00014 #include "mitkVolumeToVolumeFilter.h"
00015 #include "mitkTransform.h"
00016 #include "mitkMetric.h"
00017 #include "mitkInterpolateFilter.h"
00018 #include "mitkOptimizer.h"
00019 #include "mitkRCPtr.h"
00020
00049
00050 class MITK_REGISTRATION_API mitkRegistrationFilter : public mitkVolumeToVolumeFilter
00051 {
00052 public:
00053 MITK_TYPE(mitkRegistrationFilter,mitkVolumeToVolumeFilter)
00054 virtual void PrintSelf(ostream& os);
00055
00060 void SetFixedVolume(mitkVolume *fixedVolume);
00061
00062 mitkVolume* GetFixedVolume() { return this->GetInput(); }
00063
00068 void SetMovingVolume(mitkVolume *movingVolume);
00069
00074 mitkVolume* GetMovingVolume() { return m_MovingVolume; }
00075
00080 void SetOptimizer(mitkOptimizer *optimizer);
00081
00086 virtual mitkOptimizer* GetOptimizer();
00087
00092 void SetMetric(mitkMetric *metric) {m_Metric = metric;}
00093
00098 virtual mitkMetric* GetMetric();
00099
00104 void SetInterpolator(mitkInterpolateFilter *interpolator) {m_Interpolator = interpolator;}
00105
00110 mitkInterpolateFilter* GetInterpolator();
00111
00116 void SetTransform(mitkTransform *transform);
00117
00122 virtual mitkTransform* GetTransform();
00123
00128 void SetInitialParameters(VectorParameterType & parameters);
00129
00135 void SetInitialParameters(double* parameters, unsigned int num);
00136
00141 VectorParameterType & GetInitialParameters();
00142
00147 VectorParameterType & GetLastParameters();
00148
00153 void GetLastParameters(double* parameters);
00154
00164 void SetRegisrationRegion(int r[6]);
00165
00166 void SetRegisrationRegion(VectorIndexType& r);
00167
00172 bool IsOptimizationFinished() {return m_FlagRegistrationFinished;}
00173
00177 mitkRegistrationFilter();
00178
00183 mitkVolume* GetOutput();
00184
00185 protected:
00186 virtual ~mitkRegistrationFilter();
00187 bool Update();
00188 virtual bool Execute();
00189 virtual bool ProcessBeforeRegistration();
00190 virtual bool ProcessAfterRegistration();
00191
00192 mitkRCPtr<mitkOptimizer> m_Optimizer;
00193 mitkRCPtr<mitkMetric> m_Metric;
00194 mitkRCPtr<mitkInterpolateFilter> m_Interpolator;
00195 mitkRCPtr<mitkTransform> m_Transform;
00196
00197
00198 mitkRCPtr<mitkVolume> m_MovingVolume;
00199
00200 VectorParameterType m_InitialTransformParameters;
00201 VectorParameterType m_LastTransformParameters;
00202 VectorIndexType m_RegistrationRegion;
00203
00204 bool m_FlagRegistrationFinished;
00205 bool m_FlagUserDefinedRegion;
00206 bool m_FlagModified;
00207
00208 private:
00209 mitkRegistrationFilter(const mitkRegistrationFilter&);
00210 void operator=(const mitkRegistrationFilter&);
00211 };
00212
00213
00214
00215
00216
00217
00218 #endif
00219
00220