Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef __itkCenteredTransformInitializer2_h
00019 #define __itkCenteredTransformInitializer2_h
00020
00021 #include "itkObject.h"
00022 #include "itkObjectFactory.h"
00023 #include "itkImageMomentsCalculator.h"
00024
00025 #include <iostream>
00026
00027 namespace itk
00028 {
00029
00066 template < class TTransform,
00067 class TFixedImage,
00068 class TMovingImage >
00069 class ITK_EXPORT CenteredTransformInitializer2 : public Object
00070 {
00071 public:
00073 typedef CenteredTransformInitializer2 Self;
00074 typedef Object Superclass;
00075 typedef SmartPointer<Self> Pointer;
00076 typedef SmartPointer<const Self> ConstPointer;
00077
00079 itkNewMacro( Self );
00080
00082 itkTypeMacro( CenteredTransformInitializer2, Object );
00083
00085 typedef TTransform TransformType;
00086 typedef typename TransformType::Pointer TransformPointer;
00087
00089 itkStaticConstMacro(InputSpaceDimension, unsigned int,
00090 TransformType::InputSpaceDimension);
00091 itkStaticConstMacro(OutputSpaceDimension, unsigned int,
00092 TransformType::OutputSpaceDimension);
00093
00095 typedef TFixedImage FixedImageType;
00096 typedef TMovingImage MovingImageType;
00097
00098 typedef typename FixedImageType::ConstPointer FixedImagePointer;
00099 typedef typename MovingImageType::ConstPointer MovingImagePointer;
00100
00102 typedef ImageMomentsCalculator< FixedImageType >
00103 FixedImageCalculatorType;
00104 typedef ImageMomentsCalculator< MovingImageType >
00105 MovingImageCalculatorType;
00106
00107 typedef typename FixedImageCalculatorType::Pointer
00108 FixedImageCalculatorPointer;
00109 typedef typename MovingImageCalculatorType::Pointer
00110 MovingImageCalculatorPointer;
00111
00112
00114 typedef typename TransformType::OffsetType OffsetType;
00115
00117 typedef typename TransformType::InputPointType InputPointType;
00118
00120 typedef typename TransformType::OutputVectorType OutputVectorType;
00121
00123 itkSetObjectMacro( Transform, TransformType );
00124
00126 itkSetConstObjectMacro( FixedImage, FixedImageType );
00127
00129 itkSetConstObjectMacro( MovingImage, MovingImageType );
00130
00131
00133 virtual void InitializeTransform();
00134
00137 void GeometryOn() { m_UseMoments = false; m_UseOrigins=false;}
00138 void MomentsOn() { m_UseMoments = true; m_UseOrigins=false;}
00139 void OriginsOn() { m_UseMoments = false; m_UseOrigins=true;}
00140
00142 itkGetConstObjectMacro( FixedCalculator, FixedImageCalculatorType );
00143 itkGetConstObjectMacro( MovingCalculator, MovingImageCalculatorType );
00144
00145 protected:
00146 CenteredTransformInitializer2();
00147 ~CenteredTransformInitializer2(){};
00148
00149 void PrintSelf(std::ostream &os, Indent indent) const;
00150
00151 itkGetObjectMacro( Transform, TransformType );
00152
00153 private:
00154 CenteredTransformInitializer2(const Self&);
00155 void operator=(const Self&);
00156
00157 TransformPointer m_Transform;
00158
00159 FixedImagePointer m_FixedImage;
00160
00161 MovingImagePointer m_MovingImage;
00162
00163 bool m_UseMoments;
00164 bool m_UseOrigins;
00165
00166 FixedImageCalculatorPointer m_FixedCalculator;
00167 MovingImageCalculatorPointer m_MovingCalculator;
00168
00169 };
00170
00171
00172 }
00173
00174
00175 #ifndef ITK_MANUAL_INSTANTIATION
00176 #include "itkCenteredTransformInitializer2.txx"
00177 #endif
00178
00179 #endif