00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef __freTransformFunctionMedia_h
00023 #define __freTransformFunctionMedia_h
00024
00025 #include "freImageTypes.h"
00026 #include "itkObject.h"
00027 #include "itkTransform.h"
00028
00029 namespace FREE
00030 {
00031
00038 template <typename TTransformFunctionMedia>
00039 struct GetTransformationFunctionMediaDimension
00040 {
00041 itkStaticConstMacro(MediaDimension, unsigned int, TTransformFunctionMedia::MediaDimension);
00042 };
00043
00053 template <class TScalarType, unsigned int NInputDimensions, unsigned int NOutputDimensions>
00054 class TransformFunctionMedia : public itk::Object
00055 {
00056 public:
00057 typedef TransformFunctionMedia Self;
00058 typedef itk::Object Superclass;
00059 typedef itk::SmartPointer<Self> Pointer;
00060 typedef itk::SmartPointer<const Self> ConstPointer;
00061
00066 itkStaticConstMacro(MediaDimension, unsigned int, NOutputDimensions );
00067
00068 itkTypeMacro(TransformFunctionMedia, itk::Object);
00069 itkNewMacro(Self);
00070
00071 typedef itk::Transform< TScalarType, NInputDimensions, NOutputDimensions > TransformType;
00072 typedef typename TransformType::Pointer TransformPointer;
00073
00074 typedef typename ImageTypes<NOutputDimensions>::TransformationFieldType TransformFieldType;
00075 typedef typename TransformFieldType::Pointer TransformFieldPointer;
00076 typedef typename TransformFieldType::RegionType RegionType;
00077 typedef typename TransformFieldType::SpacingType SpacingType;
00078 typedef typename TransformFieldType::PointType PointType;
00079
00080 itkSetObjectMacro(Transform,TransformType);
00081 itkGetObjectMacro(Transform,TransformType);
00082 itkGetConstObjectMacro(Transform,TransformType);
00083
00084 itkSetMacro(FieldOrigin, PointType);
00085 itkGetConstReferenceMacro(FieldOrigin, PointType);
00086
00087 itkSetMacro(FieldSpacing, SpacingType);
00088 itkGetConstReferenceMacro(FieldSpacing, SpacingType);
00089
00090 virtual void SetFieldRegion(const RegionType ®ion);
00091
00092 virtual const RegionType& GetFieldRegion() const
00093 { return m_FieldRegion;};
00094
00095 virtual TransformFieldPointer GenerateField();
00096 virtual void Reset();
00097
00098 virtual ~TransformFunctionMedia();
00099
00100 protected:
00101 TransformFunctionMedia();
00102
00103 TransformPointer m_Transform;
00104 RegionType m_FieldRegion;
00105 SpacingType m_FieldSpacing;
00106 PointType m_FieldOrigin;
00107 };
00108
00109 }
00110
00111
00112 #if ITK_TEMPLATE_TXX
00113 # include "freTransformFunctionMedia.txx"
00114 #endif
00115
00116 #endif