00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef __freTransformBasedRegistrationProcessorInterface_h
00023 #define __freTransformBasedRegistrationProcessorInterface_h
00024
00025 #include "freTransformFunctionMedia.h"
00026
00027 namespace FREE
00028 {
00029
00030
00044 template <class TTransformBase,unsigned int VImageDimension>
00045 class TransformBasedRegistrationProcessorInterface
00046 {
00047 public:
00049 typedef TransformBasedRegistrationProcessorInterface Self;
00050
00052 itkTypeMacro( TransformBasedRegistrationProcessorInterface, none );
00053
00055 typedef TTransformBase TransformType;
00056 typedef typename TransformType::Pointer TransformPointer;
00057
00058 typedef typename ImageTypes<VImageDimension>::InternalImageType ImageType;
00059 typedef typename ImageType::RegionType RegionType;
00060 typedef typename ImageType::SpacingType SpacingType;
00061 typedef typename ImageType::Pointer ImagePointer;
00062 typedef typename ImageTypes<VImageDimension>::PointType PointType;
00063
00064 typedef typename ImageTypes<VImageDimension>::TransformationFieldType TransformFieldType;
00065 typedef typename TransformFieldType::Pointer TransformFieldPointer;
00066
00067 typedef typename TransformType::ParametersType TransformParametersType;
00068
00069 typedef TransformFunctionMedia< typename TransformType::ScalarType,
00070 TransformType::InputSpaceDimension,
00071 TransformType::OutputSpaceDimension> TransformFunctionMediaType;
00072 typedef typename TransformFunctionMediaType::Pointer TransformFunctionMediaPointer;
00073
00074 virtual void SetTransform(TransformType* pTransform);
00075 TransformType* GetTransform() {return m_Transform;};
00076
00079 const TransformParametersType& GetCurrentTransformParameters() const {return m_CurrentTransformParameters;};
00080
00089 virtual TransformFunctionMediaPointer GetTransformationFunction(const PointType& origin, const RegionType& region, const SpacingType& spacing);
00090
00101 virtual TransformFunctionMediaPointer GetInverseTransformationFunction(const PointType& origin, const RegionType& region, const SpacingType& spacing);
00102
00103 protected:
00104 TransformBasedRegistrationProcessorInterface();
00105
00112 virtual TransformFieldPointer ComputeTransformationField(const PointType& origin,
00113 const RegionType& region,
00114 const SpacingType& spacing);
00115
00119 virtual bool TransformationIsValid () const = 0;
00120
00124 virtual void NotifyProgress(const RegistrationStatusType status, const std::string& sComment) = 0;
00125
00128 TransformPointer m_Transform;
00129
00131 TransformParametersType m_CurrentTransformParameters;
00132 };
00133
00134 }
00135
00136 #ifndef ITK_MANUAL_INSTANTIATION
00137 #include "freTransformBasedRegistrationProcessorInterface.txx"
00138 #endif
00139
00140 #endif