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
1.5.3 written by Dimitri van Heesch,
© 1997-2000