go home Home | Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Globals | Related Pages
elxWeightedCombinationTransform.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 __elxWeightedCombinationTransform_H_
00016 #define __elxWeightedCombinationTransform_H_
00017 
00018 #include "itkWeightedCombinationTransform.h"
00019 #include "itkAdvancedCombinationTransform.h"
00020 #include "elxIncludes.h"
00021 
00022 namespace elastix
00023 {
00024   using namespace itk;
00025 
00079   template < class TElastix >
00080     class WeightedCombinationTransformElastix:
00081       public AdvancedCombinationTransform<
00082           ITK_TYPENAME elx::TransformBase<TElastix>::CoordRepType,
00083           elx::TransformBase<TElastix>::FixedImageDimension > ,
00084       public elx::TransformBase<TElastix>
00085   {
00086   public:
00087 
00089     typedef WeightedCombinationTransformElastix                     Self;
00090 
00091     typedef AdvancedCombinationTransform<
00092       typename elx::TransformBase<TElastix>::CoordRepType,
00093       elx::TransformBase<TElastix>::FixedImageDimension >   Superclass1;
00094 
00095     typedef elx::TransformBase<TElastix>                    Superclass2;
00096 
00099     typedef WeightedCombinationTransform<
00100       typename elx::TransformBase<TElastix>::CoordRepType,
00101       elx::TransformBase<TElastix>::FixedImageDimension,
00102       elx::TransformBase<TElastix>::MovingImageDimension >  WeightedCombinationTransformType;
00103 
00104     typedef SmartPointer<Self>                              Pointer;
00105     typedef SmartPointer<const Self>                        ConstPointer;
00106 
00108     itkNewMacro( Self );
00109 
00111     itkTypeMacro( WeightedCombinationTransformElastix, AdvancedCombinationTransform );
00112 
00117     elxClassNameMacro( "WeightedCombinationTransform" );
00118 
00120     itkStaticConstMacro( SpaceDimension, unsigned int, Superclass2::FixedImageDimension );
00121 
00123     typedef typename Superclass1::ScalarType                ScalarType;
00124     typedef typename Superclass1::ParametersType            ParametersType;
00125     typedef typename Superclass1::JacobianType              JacobianType;
00126     typedef typename Superclass1::InputVectorType           InputVectorType;
00127     typedef typename Superclass1::OutputVectorType          OutputVectorType;
00128     typedef typename Superclass1::InputCovariantVectorType  InputCovariantVectorType;
00129     typedef typename Superclass1::OutputCovariantVectorType OutputCovariantVectorType;
00130     typedef typename Superclass1::InputVnlVectorType        InputVnlVectorType;
00131     typedef typename Superclass1::OutputVnlVectorType       OutputVnlVectorType;
00132     typedef typename Superclass1::InputPointType            InputPointType;
00133     typedef typename Superclass1::OutputPointType           OutputPointType;
00134 
00136     typedef typename Superclass2::ElastixType               ElastixType;
00137     typedef typename Superclass2::ElastixPointer            ElastixPointer;
00138     typedef typename Superclass2::ConfigurationType         ConfigurationType;
00139     typedef typename Superclass2::ConfigurationPointer      ConfigurationPointer;
00140     typedef typename Superclass2::RegistrationType          RegistrationType;
00141     typedef typename Superclass2::RegistrationPointer       RegistrationPointer;
00142     typedef typename Superclass2::CoordRepType              CoordRepType;
00143     typedef typename Superclass2::FixedImageType            FixedImageType;
00144     typedef typename Superclass2::MovingImageType           MovingImageType;
00145     typedef typename Superclass2::ITKBaseType               ITKBaseType;
00146     typedef typename Superclass2::CombinationTransformType  CombinationTransformType;
00147     typedef typename Superclass2::CommandLineArgumentMapType CommandLineArgumentMapType;
00148     typedef typename Superclass2::CommandLineEntryType      CommandLineEntryType;
00149 
00151     typedef typename WeightedCombinationTransformType::Pointer      WeightedCombinationTransformPointer;
00152     typedef typename
00153       WeightedCombinationTransformType::TransformContainerType      TransformContainerType;
00154     typedef typename
00155       WeightedCombinationTransformType::TransformType               SubTransformType;
00156     typedef typename
00157       WeightedCombinationTransformType::TransformPointer            SubTransformPointer;
00158 
00160     typedef typename Superclass2::ScalesType                ScalesType;
00161 
00166     virtual void BeforeRegistration(void);
00167 
00175     virtual void InitializeTransform(void);
00176 
00184     virtual void SetScales( void );
00185 
00191     virtual void ReadFromFile( void );
00192 
00197     virtual void WriteToFile( const ParametersType & param ) const;
00198 
00201     virtual void LoadSubTransforms(void);
00202 
00203   protected:
00204 
00206     WeightedCombinationTransformElastix();
00208     virtual ~WeightedCombinationTransformElastix() {};
00209 
00210     WeightedCombinationTransformPointer m_WeightedCombinationTransform;
00211     std::vector< std::string > m_SubTransformFileNames;
00212 
00213   private:
00214 
00216     WeightedCombinationTransformElastix( const Self& ); // purposely not implemented
00218     void operator=( const Self& );              // purposely not implemented
00219 
00220   }; // end class WeightedCombinationTransformElastix
00221 
00222 
00223 } // end namespace elastix
00224 
00225 #ifndef ITK_MANUAL_INSTANTIATION
00226 #include "elxWeightedCombinationTransform.hxx"
00227 #endif
00228 
00229 #endif // end #ifndef __elxWeightedCombinationTransform_H_


Generated on 24-05-2012 for elastix by doxygen 1.7.6.1 elastix logo