NifTK  16.4.1 - 0798f20
CMIC's Translational Medical Imaging Platform
itkGroupwiseRegistrationMethod.h
Go to the documentation of this file.
1 /*=============================================================================
2 
3  NifTK: A software platform for medical image computing.
4 
5  Copyright (c) University College London (UCL). All rights reserved.
6 
7  This software is distributed WITHOUT ANY WARRANTY; without even
8  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
9  PURPOSE.
10 
11  See LICENSE.txt in the top level directory for details.
12 
13 =============================================================================*/
14 
15 #ifndef itkGroupwiseRegistrationMethod_h
16 #define itkGroupwiseRegistrationMethod_h
17 
18 #include <itkProcessObject.h>
19 #include <itkImage.h>
22 
23 namespace itk
24 {
25 
37 template <typename TImageType,
38  unsigned int Dimension,
39  class TScalarType,
40  typename TDeformationScalar >
41 class ITK_EXPORT GroupwiseRegistrationMethod : public ImageSource< TImageType >
42 {
43 public:
46  typedef ProcessObject Superclass;
47  typedef SmartPointer<Self> Pointer;
48  typedef SmartPointer<const Self> ConstPointer;
49 
51  itkNewMacro(Self);
52 
54  itkTypeMacro(GroupwiseRegistrationMethod, ProcessObject);
55 
57  itkStaticConstMacro(ImageDimension, unsigned int, TImageType::ImageDimension);
58 
59  // Some convenient typedefs.
60  typedef TImageType ImageType;
61  typedef typename ImageType::Pointer ImagePointer;
62  typedef typename ImageType::ConstPointer ImageConstPointer;
65  typedef typename ImageType::SpacingType ImageSpacingType;
67  typedef typename ImageType::PointType ImagePointType;
68 
70 
72  virtual void SetInput( const ImageType *image);
73  virtual void SetInput( unsigned int, const TImageType * image);
74 
75  const ImageType * GetInput(void);
76  const ImageType * GetInput(unsigned int idx);
77 
80  Dimension, TScalarType, TDeformationScalar> ImageRegistrationFilterType;
81 
83 
86 
87  itkSetObjectMacro( SumImagesFilter, MeanVoxelwiseIntensityOfMultipleImagesType );
88  itkGetObjectMacro( SumImagesFilter, MeanVoxelwiseIntensityOfMultipleImagesType );
89 
90  itkSetMacro( NumberOfIterations, unsigned int );
91  itkGetMacro( NumberOfIterations, unsigned int );
92 
94  void SetRegistrationFilters( std::vector< ImageRegistrationFilterPointerType > &regnFilters ) {
95  m_RegistrationFilters = regnFilters;
96  this->Modified();
97  }
98 
100  virtual void Initialise() throw (ExceptionObject);
101 
102 protected:
104  virtual ~GroupwiseRegistrationMethod() {};
105  void PrintSelf(std::ostream& os, Indent indent) const;
106 
107  void ComputeInitialSumOfInputImages();
108 
109  virtual void GenerateInputRequestedRegion();
110  void GenerateOutputInformation();
111 
116  void StartOptimization(void);
117 
120  void GenerateData ();
121 
122 
123 private:
124  GroupwiseRegistrationMethod(const Self&); // purposely not implemented
125  void operator=(const Self&); // purposely not implemented
126 
128  bool m_FlagInitialSumComputed;
129 
131  bool m_FlagInitialised;
132 
134  unsigned int m_NumberOfIterations;
135 
136  ImageRegionType m_OutRegion;
137  ImageSizeType m_OutSize;
138  ImageSpacingType m_OutSpacing;
139  ImagePointType m_OutOrigin;
140 
142  typename MeanVoxelwiseIntensityOfMultipleImagesType::Pointer m_SumImagesFilter;
143 
145  std::vector< ImageRegistrationFilterPointerType > m_RegistrationFilters;
146 
147 };
148 
149 
150 } // end namespace itk
151 
152 #ifndef ITK_MANUAL_INSTANTIATION
153 #include "itkGroupwiseRegistrationMethod.txx"
154 #endif
155 
156 #endif
157 
158 
159 
160 
SmartPointer< const Self > ConstPointer
Definition: itkGroupwiseRegistrationMethod.h:48
ImageType::SpacingType ImageSpacingType
Definition: itkGroupwiseRegistrationMethod.h:65
GroupwiseRegistrationMethod Self
Definition: itkGroupwiseRegistrationMethod.h:45
ImageType::SizeType SizeType
Definition: niftkMakeLapUSProbeBasicModel.cxx:31
Used to plug registration methods into a filter based pipeline.
Definition: itkImageRegistrationFilter.h:59
A class to perform a generic group-wise registration.
Definition: itkGroupwiseRegistrationMethod.h:41
ImageType::IndexType ImageIndexType
Definition: itkGroupwiseRegistrationMethod.h:66
GLenum GLsizei GLenum GLenum const GLvoid * image
Definition: glew.h:4052
ImageRegionType::SizeType ImageSizeType
Definition: itkGroupwiseRegistrationMethod.h:69
Definition: niftkITKAffineResampleImage.cxx:74
SmartPointer< Self > Pointer
Definition: itkImageRegistrationFilter.h:66
ImageType::IndexType IndexType
Definition: niftkMakeLapUSProbeBasicModel.cxx:32
ImageRegistrationFilterType::Pointer ImageRegistrationFilterPointerType
Definition: itkGroupwiseRegistrationMethod.h:82
ImageType::RegionType ImageRegionType
Definition: itkGroupwiseRegistrationMethod.h:63
ImageType::ConstPointer ImageConstPointer
Definition: itkGroupwiseRegistrationMethod.h:62
ImageType::Pointer ImagePointer
Definition: itkGroupwiseRegistrationMethod.h:61
float PixelType
Definition: niftkBreastDCEandADC.cxx:88
ImageType::RegionType RegionType
Definition: niftkMakeLapUSProbeBasicModel.cxx:30
TImageType ImageType
Definition: itkGroupwiseRegistrationMethod.h:60
ImageType::PointType ImagePointType
Definition: itkGroupwiseRegistrationMethod.h:67
ProcessObject Superclass
Definition: itkGroupwiseRegistrationMethod.h:46
SmartPointer< Self > Pointer
Definition: itkGroupwiseRegistrationMethod.h:47
Image filter class to calculate the mean image on a voxel by voxel basis of multiple input images...
Definition: itkMeanVoxelwiseIntensityOfMultipleImages.h:31
itk::ImageRegistrationFilter< ImageType, ImageType, Dimension, TScalarType, TDeformationScalar > ImageRegistrationFilterType
The image registration filter type.
Definition: itkGroupwiseRegistrationMethod.h:80
void SetRegistrationFilters(std::vector< ImageRegistrationFilterPointerType > &regnFilters)
Definition: itkGroupwiseRegistrationMethod.h:94
itk::Image< PixelType, Dimension > ImageType
Definition: niftkBreastDCEandADC.cxx:91
const unsigned int Dimension
Definition: niftkBreastDCEandADC.cxx:89
ImageType::PixelType ImagePixelType
Definition: itkGroupwiseRegistrationMethod.h:64
itk::MeanVoxelwiseIntensityOfMultipleImages< ImageType, ImageType > MeanVoxelwiseIntensityOfMultipleImagesType
Definition: itkGroupwiseRegistrationMethod.h:85