00001 /*========================================================================= 00002 00003 Program: Insight Segmentation & Registration Toolkit 00004 Module: $RCSfile: itkRegistrationMethod.h,v $ 00005 Language: C++ 00006 Date: $Date: 2002/05/10 22:56:16 $ 00007 Version: $Revision: 1.13 $ 00008 00009 Copyright (c) 2002 Insight Consortium. All rights reserved. 00010 See ITKCopyright.txt or http://www.itk.org/HTML/Copyright.htm 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 #ifndef __itkRegistrationMethod_h 00018 #define __itkRegistrationMethod_h 00019 00020 #include "itkProcessObject.h" 00021 00022 namespace itk 00023 { 00024 00034 template <class TTraits> 00035 class ITK_EXPORT RegistrationMethod : public ProcessObject 00036 { 00037 public: 00039 typedef RegistrationMethod Self; 00040 typedef ProcessObject Superclass; 00041 typedef SmartPointer<Self> Pointer; 00042 typedef SmartPointer<const Self> ConstPointer; 00043 00045 itkNewMacro(Self); 00046 00048 itkTypeMacro(RegistrationMethod, Object); 00049 00051 typedef typename TTraits::TargetType TargetType; 00052 typedef typename TargetType::ConstPointer TargetConstPointer; 00053 00055 typedef typename TTraits::MetricType MetricType; 00056 00058 typedef typename TTraits::MapperType MapperType; 00059 00061 typedef typename TTraits::TransformationType TransformationType; 00062 00064 typedef typename TTraits::ReferenceType ReferenceType; 00065 typedef typename ReferenceType::ConstPointer ReferenceConstPointer; 00066 00068 typedef typename TTraits::OptimizerType OptimizerType; 00069 00072 typedef typename TTraits::ParametersType ParametersType; 00073 00075 void StartRegistration(void); 00076 00078 void SetTarget( const TargetType * Target ); 00079 00081 void SetReference( const ReferenceType * Reference ); 00082 00084 itkSetObjectMacro( Optimizer, OptimizerType ); 00085 00087 itkSetObjectMacro( Metric, MetricType ); 00088 00090 const ReferenceType * GetReference( void ); 00091 00093 const TargetType * GetTarget( void ); 00094 00096 itkGetObjectMacro( Optimizer, OptimizerType ); 00097 00099 itkGetObjectMacro( Metric, MetricType ); 00100 00101 protected: 00102 RegistrationMethod(); 00103 virtual ~RegistrationMethod(); 00104 void PrintSelf(std::ostream& os, Indent indent) const; 00105 00106 private: 00107 RegistrationMethod(const Self&); //purposely not implemented 00108 void operator=(const Self&); //purposely not implemented 00109 00110 typename MetricType::Pointer m_Metric; 00111 typename OptimizerType::Pointer m_Optimizer; 00112 00113 }; 00114 00115 00116 } // end namespace itk 00117 00118 00119 #ifndef ITK_MANUAL_INSTANTIATION 00120 #include "itkRegistrationMethod.txx" 00121 #endif 00122 00123 #endif 00124 00125 00126