Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #ifndef __itkDeformationFieldRegulizer_H__
00016 #define __itkDeformationFieldRegulizer_H__
00017
00018 #include "itkDeformationVectorFieldTransform.h"
00019 #include "itkImageRegionIterator.h"
00020
00021 namespace itk
00022 {
00023
00036 template <class TAnyITKTransform>
00037 class DeformationFieldRegulizer :
00038 public TAnyITKTransform
00039 {
00040 public:
00041
00043 typedef DeformationFieldRegulizer Self;
00044 typedef TAnyITKTransform Superclass;
00045 typedef SmartPointer< Self > Pointer;
00046 typedef SmartPointer< const Self > ConstPointer;
00047
00049 itkNewMacro( Self );
00050
00052 itkTypeMacro( DeformationFieldRegulizer, TAnyITKTransform );
00053
00055 itkStaticConstMacro( InputSpaceDimension, unsigned int, Superclass::InputSpaceDimension );
00057 itkStaticConstMacro( OutputSpaceDimension, unsigned int, Superclass::OutputSpaceDimension );
00058
00060 typedef typename Superclass::ScalarType ScalarType;
00061 typedef typename Superclass::ParametersType ParametersType;
00062 typedef typename Superclass::JacobianType JacobianType;
00063 typedef typename Superclass::InputVectorType InputVectorType;
00064 typedef typename Superclass::OutputVectorType OutputVectorType;
00065 typedef typename Superclass::InputCovariantVectorType InputCovariantVectorType;
00066 typedef typename Superclass::OutputCovariantVectorType OutputCovariantVectorType;
00067 typedef typename Superclass::InputVnlVectorType InputVnlVectorType;
00068 typedef typename Superclass::OutputVnlVectorType OutputVnlVectorType;
00069 typedef typename Superclass::InputPointType InputPointType;
00070 typedef typename Superclass::OutputPointType OutputPointType;
00071
00073 typedef DeformationVectorFieldTransform<
00074 ScalarType,
00075 itkGetStaticConstMacro( InputSpaceDimension ) > IntermediaryDFTransformType;
00076 typedef typename IntermediaryDFTransformType
00077 ::CoefficientVectorImageType VectorImageType;
00078 typedef typename VectorImageType::PixelType VectorPixelType;
00079 typedef ImageRegionIterator< VectorImageType > IteratorType;
00080
00082 typedef typename VectorImageType::RegionType RegionType;
00083 typedef typename VectorImageType::SpacingType SpacingType;
00084 typedef typename VectorImageType::PointType OriginType;
00085
00087 void InitializeDeformationFields( void );
00088
00092 virtual void UpdateIntermediaryDeformationFieldTransform(
00093 typename VectorImageType::Pointer vecImage );
00094
00096 itkSetMacro( DeformationFieldRegion, RegionType );
00097
00099 itkSetMacro( DeformationFieldSpacing, SpacingType );
00100
00102 itkSetMacro( DeformationFieldOrigin, OriginType );
00103
00105 itkGetConstObjectMacro( IntermediaryDeformationFieldTransform, IntermediaryDFTransformType );
00106
00108 virtual OutputPointType TransformPoint( const InputPointType & inputPoint ) const;
00109
00110 protected:
00111
00113 DeformationFieldRegulizer();
00115 virtual ~DeformationFieldRegulizer() {};
00116
00117 private:
00118
00120 DeformationFieldRegulizer( const Self& );
00122 void operator=( const Self& );
00123
00125 typename IntermediaryDFTransformType::Pointer m_IntermediaryDeformationFieldTransform;
00126 bool m_Initialized;
00127
00129 RegionType m_DeformationFieldRegion;
00130 OriginType m_DeformationFieldOrigin;
00131 SpacingType m_DeformationFieldSpacing;
00132
00133 };
00134
00135
00136 }
00137
00138
00139 #ifndef ITK_MANUAL_INSTANTIATION
00140 #include "itkDeformationFieldRegulizer.hxx"
00141 #endif
00142
00143 #endif // end #ifndef __itkDeformationFieldRegulizer_H__
00144