go home Home | Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Globals | Related Pages
itkDeformationFieldRegulizer.h
Go to the documentation of this file.
00001 /*======================================================================
00002 
00003   This file is part of the elastix software.
00004 
00005   Copyright (c) University Medical Center Utrecht. All rights reserved.
00006   See src/CopyrightElastix.txt or http://elastix.isi.uu.nl/legal.php for
00007   details.
00008 
00009      This software is distributed WITHOUT ANY WARRANTY; without even
00010      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
00011      PURPOSE. See the above copyright notices for more information.
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& ); // purposely not implemented
00122     void operator=( const Self& );            // purposely not implemented
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   }; // end class DeformationFieldRegulizer
00134 
00135 
00136 } // end namespace itk
00137 
00138 
00139 #ifndef ITK_MANUAL_INSTANTIATION
00140 #include "itkDeformationFieldRegulizer.hxx"
00141 #endif
00142 
00143 #endif // end #ifndef __itkDeformationFieldRegulizer_H__
00144 


Generated on 24-10-2011 for elastix by doxygen 1.7.4 elastix logo