00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef __freSetupTransform_h
00023 #define __freSetupTransform_h
00024
00025 #include "freElementals.h"
00026 #include "freSetup.h"
00027 #include "freSetupParameterTraits.h"
00028
00029 #include "itkTransformBase.h"
00030
00031 namespace FREE
00032 {
00033
00043 class ITK_EXPORT SetupTransform : public itk::TransformBase
00044 {
00045 public:
00047 typedef SetupTransform Self;
00048 typedef itk::TransformBase Superclass;
00049 typedef itk::SmartPointer< Self > Pointer;
00050 typedef itk::SmartPointer< const Self > ConstPointer;
00051
00053 typedef Superclass::ParametersType ParametersType;
00054
00055 typedef std::vector<SetupParameterTraits> ParameterTraitsList;
00056
00058 itkTypeMacro( SetupTransform, TransformBase );
00059
00060 itkNewMacro(Self);
00061
00063 virtual unsigned int GetNumberOfParameters(void) const;
00064
00066 virtual unsigned int GetInputSpaceDimension(void) const;
00067
00069 virtual unsigned int GetOutputSpaceDimension(void) const;
00070
00072 virtual void SetParameters( const ParametersType & p);
00073
00074 virtual void SetParametersByValue ( const ParametersType & p );
00075
00079 void SetParametersDirectly ( const ParametersType & p );
00080
00082 virtual void SetFixedParameters( const ParametersType & p);
00083
00085 virtual const ParametersType& GetParameters(void) const;
00086
00088 virtual const ParametersType& GetFixedParameters( ) const;
00089
00091 ParameterTraitsList ComputeParametersTraits( const ParametersType & p) const;
00094 virtual ParameterTraitsList ComputeParametersTraits( const ParametersType & p, ParametersType& validP) const;
00095
00097 const ParameterTraitsList& GetParametersTraits(void);
00098
00100 virtual std::string GetTransformTypeAsString() const;
00101
00103 Setup::Pointer GenerateTransformedSetup();
00104
00106 void SetAutoInitialValues(bool bAutoValues);
00107
00109 bool GetAutoInitialValues();
00110
00112 void SetReferenceSetup(Setup* pSetup);
00113
00115 void ResetParameterIDs();
00116
00118 void AddParameterID(const IDPath& idPath);
00119
00120 protected:
00121 SetupTransform();
00122 virtual ~SetupTransform();
00123
00124 Setup* m_pReferenceSetup;
00125 Setup::Pointer m_smpTransformedSetup;
00126
00127 typedef std::vector<IDPath> ParameterIDsType;
00128
00129 ParameterIDsType m_ParameterIDs;
00130
00131 ParametersType m_Parameters;
00132 bool m_bAutoInitialValue;
00133
00134 ParameterTraitsList m_ParameterTraits;
00135 mutable bool m_bTraitsInitialized;
00136
00137 virtual void TransformSetup();
00138 virtual void GetInitialValues();
00139 Parameter::ParameterValueType GetParameterValueType(const IDPath& paramID) const;
00140 };
00141
00142 }
00143
00144 #endif