freTransformBasedRegistrationProcessorInterface.h

Go to the documentation of this file.
00001 /*=========================================================================
00002  
00003   Program:   F.R.E.E. - flexible registration evaluation engine
00004   Version:   v.1.0.0
00005   Date:      $Date: 2006/09/01 12:00:00 $
00006   Module:    $RCSfile: freTransformBasedRegistrationProcessorInterface.h,v $
00007   Language:  C++
00008  
00009  
00010  
00011   Copyright (c) 2007 Ralf o Floca (Department of Medical Informatics,
00012   Institute for Medical Biometry and Informatics, University of Heidelberg,
00013   Germany). All rights reserved.
00014   See FREECopyright.txt or http://www.mi.med.uni-hd.de/free/copyright.htm
00015   for details.
00016  
00017      This software is distributed WITHOUT ANY WARRANTY; without even 
00018      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
00019      PURPOSE.  See the above copyright notices for more information.
00020  
00021 =========================================================================*/
00022 #ifndef __freTransformBasedRegistrationProcessorInterface_h
00023 #define __freTransformBasedRegistrationProcessorInterface_h
00024 
00025 #include "freTransformFunctionMedia.h"
00026 
00027 namespace FREE
00028 {
00029 
00030 
00044 template <class TTransformBase,unsigned int VImageDimension>
00045 class TransformBasedRegistrationProcessorInterface
00046 {
00047 public:
00049     typedef TransformBasedRegistrationProcessorInterface Self;
00050 
00052     itkTypeMacro( TransformBasedRegistrationProcessorInterface, none );
00053 
00055     typedef TTransformBase TransformType;
00056     typedef typename TransformType::Pointer TransformPointer;
00057 
00058     typedef typename ImageTypes<VImageDimension>::InternalImageType ImageType;
00059     typedef typename ImageType::RegionType                          RegionType;
00060     typedef typename ImageType::SpacingType                         SpacingType;
00061     typedef typename ImageType::Pointer                             ImagePointer;
00062     typedef typename ImageTypes<VImageDimension>::PointType         PointType;
00063 
00064     typedef typename ImageTypes<VImageDimension>::TransformationFieldType TransformFieldType;
00065     typedef typename TransformFieldType::Pointer TransformFieldPointer;
00066 
00067     typedef typename TransformType::ParametersType TransformParametersType;
00068 
00069     typedef TransformFunctionMedia< typename TransformType::ScalarType,
00070                                     TransformType::InputSpaceDimension,
00071                                     TransformType::OutputSpaceDimension>  TransformFunctionMediaType;
00072     typedef typename TransformFunctionMediaType::Pointer                  TransformFunctionMediaPointer;
00073 
00074     virtual void SetTransform(TransformType* pTransform);
00075     TransformType* GetTransform() {return m_Transform;};
00076 
00079     const TransformParametersType& GetCurrentTransformParameters() const {return m_CurrentTransformParameters;};
00080 
00089     virtual TransformFunctionMediaPointer GetTransformationFunction(const PointType& origin, const RegionType& region, const SpacingType& spacing);
00090 
00101     virtual TransformFunctionMediaPointer GetInverseTransformationFunction(const PointType& origin, const RegionType& region, const SpacingType& spacing);
00102 
00103 protected:
00104     TransformBasedRegistrationProcessorInterface();
00105 
00112     virtual TransformFieldPointer ComputeTransformationField(const PointType& origin,
00113                                                              const RegionType& region,
00114                                                              const SpacingType& spacing);
00115 
00119     virtual bool TransformationIsValid () const = 0;
00120 
00124     virtual void NotifyProgress(const RegistrationStatusType status, const std::string& sComment) = 0;
00125 
00128     TransformPointer m_Transform;
00129 
00131     TransformParametersType m_CurrentTransformParameters;
00132 };
00133 
00134 }//End of Namespace free
00135 
00136 #ifndef ITK_MANUAL_INSTANTIATION
00137 #include "freTransformBasedRegistrationProcessorInterface.txx"
00138 #endif
00139 
00140 #endif

Generated at Sat Oct 13 17:53:23 2007 for f.r.e.e. - Flexible Registration and Evaluation Engine by doxygen 1.5.3 written by Dimitri van Heesch, © 1997-2000