00001 /*========================================================================= 00002 00003 Program: Medical Imaging & Interaction Toolkit 00004 Language: C++ 00005 Date: $Date$ 00006 Version: $Revision$ 00007 00008 Copyright (c) German Cancer Research Center, Division of Medical and 00009 Biological Informatics. All rights reserved. 00010 See MITKCopyright.txt or https://www.mitk.org/copyright.html for details. 00011 00012 This software is distributed WITHOUT ANY WARRANTY; without even 00013 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00014 PURPOSE. See the above copyright notices for more information. 00015 00016 =========================================================================*/ 00017 00018 #ifndef MITKIMAGEREGISTRATIONMETHOD_H 00019 #define MITKIMAGEREGISTRATIONMETHOD_H 00020 00021 #include "itkImageRegistrationMethod.h" 00022 #include "MitkRigidRegistrationExports.h" 00023 #include "itkSingleValuedNonLinearOptimizer.h" 00024 00025 #include "mitkImageToImageFilter.h" 00026 #include "mitkImageAccessByItk.h" 00027 #include "mitkRigidRegistrationObserver.h" 00028 #include "mitkCommon.h" 00029 00030 #include "itkImageMaskSpatialObject.h" 00031 #include "mitkRigidRegistrationPreset.h" 00032 00033 namespace mitk 00034 { 00042 class MITK_RIGIDREGISTRATION_EXPORT ImageRegistrationMethod : public ImageToImageFilter 00043 { 00044 00045 public: 00046 00047 typedef itk::SingleValuedNonLinearOptimizer OptimizerType; 00048 typedef itk::ImageMaskSpatialObject< 3 > MaskType; 00049 00050 mitkClassMacro(ImageRegistrationMethod, ImageToImageFilter); 00051 00052 itkNewMacro(Self); 00053 00054 static const int LINEARINTERPOLATOR = 0; 00055 static const int NEARESTNEIGHBORINTERPOLATOR = 1; 00056 00057 void SetObserver(RigidRegistrationObserver::Pointer observer); 00058 00059 void SetInterpolator(int interpolator); 00060 00061 virtual void GenerateData(); 00062 00063 virtual void SetReferenceImage( Image::Pointer fixedImage); 00064 00065 virtual void SetFixedMask( Image::Pointer fixedMask); 00066 00067 virtual void SetMovingMask( Image::Pointer movingMask); 00068 00069 void SetOptimizerScales(itk::Array<double> scales); 00070 00071 void SetTransform(itk::Object::Pointer transform); 00072 00073 void SetMetric(itk::Object::Pointer metric); 00074 00075 void SetOptimizer(itk::Object::Pointer optimizer); 00076 00077 protected: 00078 ImageRegistrationMethod(); 00079 virtual ~ImageRegistrationMethod(); 00080 00081 template < typename TPixel, unsigned int VImageDimension > 00082 void GenerateData2( itk::Image<TPixel, VImageDimension>* itkImage1); 00083 00084 RigidRegistrationObserver::Pointer m_Observer; 00085 int m_Interpolator; 00086 Image::Pointer m_ReferenceImage; 00087 Image::Pointer m_FixedMask; 00088 Image::Pointer m_MovingMask; 00089 00090 virtual void GenerateOutputInformation(){}; 00091 00092 private: 00093 itk::Object::Pointer m_Transform; 00094 itk::Object::Pointer m_Metric; 00095 itk::Object::Pointer m_Optimizer; 00096 itk::Array<double> m_OptimizerScales; 00097 }; 00098 } 00099 00100 //#include "mitkImageRegistrationMethod.txx" 00101 00102 #endif // MITKIMAGEREGISTRATIONMETHOD_H 00103