freDemonRegistrationProcessor.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: freDemonRegistrationProcessor.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 __freDemonRegistrationProcessor_h
00023 #define __freDemonRegistrationProcessor_h
00024 
00025 #include "freImageRegistrationProcessorBase.h"
00026 #include "freControllerCentral.h"
00027 #include "freRegistrationObserver.h"
00028 
00029 #include "itkDemonsRegistrationFilter.h"
00030 #include "itkHistogramMatchingImageFilter.h"
00031 
00032 namespace FREE
00033 {
00034 
00035 template <unsigned int VImageDimension>
00036 class DemonRegistrationProcessor
00037             : public ImageRegistrationProcessorBase<VImageDimension>
00038 {
00039 public:
00041     typedef DemonRegistrationProcessor<VImageDimension> Self;
00042     typedef ImageRegistrationProcessorBase<VImageDimension> Superclass;
00043     typedef itk::SmartPointer<Self>        Pointer;
00044     typedef itk::SmartPointer<const Self>  ConstPointer;
00045 
00046     typedef typename Superclass::ImageType              ImageType;
00047     typedef typename Superclass::RegionType             RegionType;
00048     typedef typename Superclass::SpacingType            SpacingType;
00049     typedef typename Superclass::ImagePointer           ImagePointer;
00050     typedef typename Superclass::PointType              PointType;
00051     typedef typename Superclass::TransformFieldType     TransformFieldType;
00052     typedef typename Superclass::TransformFieldPointer  TransformFieldPointer;
00053 
00055     itkTypeMacro( DemonRegistrationProcessor, ImageRegistrationProcessorBase );
00056     itkNewMacro(Self);
00057 
00058 
00060     typedef itk::InterpolateImageFunction< ImageType, ScalarType > InterpolateType;
00062     typedef typename InterpolateType::Pointer InterpolatePointer;
00064     typedef itk::DemonsRegistrationFilter< ImageType, ImageType, TransformFieldType > RegistrationType;
00066     typedef typename RegistrationType::Pointer RegistrationPointer;
00068     typedef itk::HistogramMatchingImageFilter<ImageType, ImageType > HistoMatchFilterType;
00069 
00070 
00074     InterpolatePointer smpInterpolate;
00075 
00081     RegistrationPointer smpRegistration;
00082 
00085     IterationObserver::Pointer m_IterationObserver;
00086     typename NotificationEvent<Self>::Pointer m_IterationNotificationEvent;
00087 
00088 protected:
00089     DemonRegistrationProcessor();
00090 
00091     virtual ~DemonRegistrationProcessor();
00092 
00098     virtual void ComputeRegistration();
00099 
00100     virtual TransformFieldPointer ComputeTransformationField(const PointType& origin,
00101                                                              const RegionType& region,
00102                                                              const SpacingType& spacing);
00103 
00105     void OnNewIteration(void* pSender, long threadID);
00106 };
00107 
00111 typedef DemonRegistrationProcessor<2> DemonRegistrationProcessor2D;
00113 typedef DemonRegistrationProcessor<3> DemonRegistrationProcessor3D;
00114 
00115 
00116 }//End of Namespace free
00117 
00118 #ifndef ITK_MANUAL_INSTANTIATION
00119 #include "freDemonRegistrationProcessor.txx"
00120 #endif
00121 
00122 #endif

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