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 __itkCenteredTransformInitializer_h
00019 #define __itkCenteredTransformInitializer_h
00020
00021 #include "itkObject.h"
00022 #include "itkObjectFactory.h"
00023 #include "itkImageMomentsCalculator.h"
00024
00025 #include <iostream>
00026
00027 namespace itk
00028 {
00029
00060 template < class TTransform,
00061 class TFixedImage,
00062 class TMovingImage >
00063 class ITK_EXPORT CenteredTransformInitializer : public Object
00064 {
00065 public:
00067 typedef CenteredTransformInitializer Self;
00068 typedef Object Superclass;
00069 typedef SmartPointer<Self> Pointer;
00070 typedef SmartPointer<const Self> ConstPointer;
00071
00073 itkNewMacro( Self );
00074
00076 itkTypeMacro( CenteredTransformInitializer, Object );
00077
00079 typedef TTransform TransformType;
00080 typedef typename TransformType::Pointer TransformPointer;
00081
00083 itkStaticConstMacro(InputSpaceDimension, unsigned int,
00084 TransformType::InputSpaceDimension);
00085 itkStaticConstMacro(OutputSpaceDimension, unsigned int,
00086 TransformType::OutputSpaceDimension);
00088
00090 typedef TFixedImage FixedImageType;
00091 typedef TMovingImage MovingImageType;
00092
00093 typedef typename FixedImageType::ConstPointer FixedImagePointer;
00094 typedef typename MovingImageType::ConstPointer MovingImagePointer;
00095
00097 typedef ImageMomentsCalculator< FixedImageType > FixedImageCalculatorType;
00098 typedef ImageMomentsCalculator< MovingImageType > MovingImageCalculatorType;
00099
00100 typedef typename FixedImageCalculatorType::Pointer
00101 FixedImageCalculatorPointer;
00102 typedef typename MovingImageCalculatorType::Pointer
00103 MovingImageCalculatorPointer;
00104
00105
00107 typedef typename TransformType::OffsetType OffsetType;
00108
00110 typedef typename TransformType::InputPointType InputPointType;
00111
00113 typedef typename TransformType::OutputVectorType OutputVectorType;
00114
00116 itkSetObjectMacro( Transform, TransformType );
00117
00119 itkSetConstObjectMacro( FixedImage, FixedImageType );
00120
00122 itkSetConstObjectMacro( MovingImage, MovingImageType );
00123
00124
00126 virtual void InitializeTransform();
00127
00130 void GeometryOn() { m_UseMoments = false; }
00131 void MomentsOn() { m_UseMoments = true; }
00133
00135 itkGetConstObjectMacro( FixedCalculator, FixedImageCalculatorType );
00136 itkGetConstObjectMacro( MovingCalculator, MovingImageCalculatorType );
00138
00139 protected:
00140 CenteredTransformInitializer();
00141 ~CenteredTransformInitializer(){};
00142
00143 void PrintSelf(std::ostream &os, Indent indent) const;
00144
00145 itkGetObjectMacro( Transform, TransformType );
00146
00147 private:
00148 CenteredTransformInitializer(const Self&);
00149 void operator=(const Self&);
00150
00151 TransformPointer m_Transform;
00152
00153 FixedImagePointer m_FixedImage;
00154
00155 MovingImagePointer m_MovingImage;
00156
00157 bool m_UseMoments;
00158
00159 FixedImageCalculatorPointer m_FixedCalculator;
00160 MovingImageCalculatorPointer m_MovingCalculator;
00161
00162 };
00163
00164
00165 }
00166
00167
00168 #ifndef ITK_MANUAL_INSTANTIATION
00169 #include "itkCenteredTransformInitializer.txx"
00170 #endif
00171
00172 #endif
00173