NifTK  16.4.1 - 0798f20
CMIC's Translational Medical Imaging Platform
itkMeanVoxelwiseIntensityOfMultipleImages.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 itkMeanVoxelwiseIntensityOfMultipleImages_h
16 #define itkMeanVoxelwiseIntensityOfMultipleImages_h
17 
18 #include <itkImageToImageFilter.h>
20 
21 
22 namespace itk {
23 
30 template<class TInputImage, class TOutputImage>
32  public ImageToImageFilter< TInputImage, TOutputImage >
33 {
34 public:
37  typedef ImageToImageFilter< TInputImage,TOutputImage > Superclass;
38  typedef SmartPointer< Self > Pointer;
39  typedef SmartPointer< const Self > ConstPointer;
40 
42  itkTypeMacro( MeanVoxelwiseIntensityOfMultipleImages, ImageToImageFilter );
43 
45  itkNewMacro(Self);
46 
48  itkStaticConstMacro(ImageDimension, unsigned int,
49  TInputImage::ImageDimension);
50 
52  typedef TInputImage InputImageType;
53  typedef typename InputImageType::Pointer InputImagePointer;
54  typedef typename InputImageType::ConstPointer InputImageConstPointer;
57  typedef typename InputImageType::SpacingType InputImageSpacingType;
59  typedef typename InputImageType::PointType InputImagePointType;
60 
62 
64  typedef TOutputImage OutputImageType;
65  typedef typename OutputImageType::Pointer OutputImagePointer;
68  typedef typename OutputImageType::SpacingType OutputImageSpacingType;
70  typedef typename OutputImageType::PointType OutputImagePointType;
71 
73 
75 
79 
80  itkSetMacro( SubtractMinima, bool );
81  itkGetMacro( SubtractMinima, bool );
82 
83  itkSetMacro( ExpandOutputRegion, double );
84  itkGetMacro( ExpandOutputRegion, double );
85 
87  void SetTranslations( std::vector< TranslationType > &translations ) {
88  m_TranslationVectors = translations;
89  this->Modified();
90  }
92  void SetCenters( std::vector< CenterType > &centers ) {
93  m_CenterVectors = centers;
94  this->Modified();
95  }
97  void SetScales( std::vector< ScaleType > &scales ) {
98  m_ScaleVectors = scales;
99  this->Modified();
100  }
102  void ClearTransformation( void ) {
103  m_TranslationVectors.clear();
104  m_CenterVectors.clear();
105  m_ScaleVectors.clear();
106  this->Modified();
107  }
108 
109 #ifdef ITK_USE_CONCEPT_CHECKING
110 
111  itkConceptMacro(InputHasNumericTraitsCheck,
112  (Concept::HasNumericTraits<InputImagePixelType>));
113  itkConceptMacro(OutputHasPixelTraitsCheck,
114  (Concept::HasPixelTraits<OutputImagePixelType>));
116 #endif
117 
118 protected:
121  void PrintSelf(std::ostream& os, Indent indent) const;
122 
123  void GenerateOutputInformation();
124  virtual void GenerateInputRequestedRegion();
125 
126  void GenerateData();
127 
129  std::vector< TranslationType > m_TranslationVectors;
131  std::vector< CenterType > m_CenterVectors;
133  std::vector< ScaleType > m_ScaleVectors;
134 
135  // Create a border around the mean image
137 
139 
140  OutputImageRegionType m_OutRegion;
141  OutputImageSizeType m_OutSize;
142  OutputImageSpacingType m_OutSpacing;
143  OutputImagePointType m_OutOrigin;
144 
145 
146 private:
147  MeanVoxelwiseIntensityOfMultipleImages(const Self&); //purposely not implemented
148  void operator=(const Self&); //purposely not implemented
149 };
150 
151 } // end namespace itk
152 
153 #ifndef ITK_MANUAL_INSTANTIATION
154 #include "itkMeanVoxelwiseIntensityOfMultipleImages.txx"
155 #endif
156 
157 #endif
itk::EulerAffineTransform< double, ImageDimension, ImageDimension > TransformType
Definition: itkMeanVoxelwiseIntensityOfMultipleImages.h:74
InputImageType::SpacingType InputImageSpacingType
Definition: itkMeanVoxelwiseIntensityOfMultipleImages.h:57
ImageType::SizeType SizeType
Definition: niftkMakeLapUSProbeBasicModel.cxx:31
InputImageType::ConstPointer InputImageConstPointer
Definition: itkMeanVoxelwiseIntensityOfMultipleImages.h:54
TOutputImage OutputImageType
Definition: itkMeanVoxelwiseIntensityOfMultipleImages.h:64
OutputImageType::PointType OutputImagePointType
Definition: itkMeanVoxelwiseIntensityOfMultipleImages.h:70
SmartPointer< Self > Pointer
Definition: itkMeanVoxelwiseIntensityOfMultipleImages.h:38
InputImageType::PointType InputImagePointType
Definition: itkMeanVoxelwiseIntensityOfMultipleImages.h:59
OutputImageType::Pointer OutputImagePointer
Definition: itkMeanVoxelwiseIntensityOfMultipleImages.h:65
OutputImageSpacingType m_OutSpacing
Definition: itkMeanVoxelwiseIntensityOfMultipleImages.h:142
TransformType::InputPointType CenterType
Definition: itkMeanVoxelwiseIntensityOfMultipleImages.h:77
Definition: niftkITKAffineResampleImage.cxx:74
Superclass::TranslationType TranslationType
Definition: itkEulerAffineTransform.h:52
ImageType::IndexType IndexType
Definition: niftkMakeLapUSProbeBasicModel.cxx:32
InputImageType::RegionType InputImageRegionType
Definition: itkMeanVoxelwiseIntensityOfMultipleImages.h:55
InputImageType::Pointer InputImagePointer
Definition: itkMeanVoxelwiseIntensityOfMultipleImages.h:53
OutputImageType::RegionType OutputImageRegionType
Definition: itkMeanVoxelwiseIntensityOfMultipleImages.h:66
std::vector< ScaleType > m_ScaleVectors
An optional array of scale vectors.
Definition: itkMeanVoxelwiseIntensityOfMultipleImages.h:133
void SetScales(std::vector< ScaleType > &scales)
Definition: itkMeanVoxelwiseIntensityOfMultipleImages.h:97
Euler Affine transform.
Definition: itkEulerAffineTransform.h:38
ImageToImageFilter< TInputImage, TOutputImage > Superclass
Definition: itkMeanVoxelwiseIntensityOfMultipleImages.h:37
OutputImageRegionType::SizeType OutputImageSizeType
Definition: itkMeanVoxelwiseIntensityOfMultipleImages.h:72
OutputImageRegionType m_OutRegion
Definition: itkMeanVoxelwiseIntensityOfMultipleImages.h:140
double m_ExpandOutputRegion
Definition: itkMeanVoxelwiseIntensityOfMultipleImages.h:136
InputImageType::IndexType InputImageIndexType
Definition: itkMeanVoxelwiseIntensityOfMultipleImages.h:58
void ClearTransformation(void)
Definition: itkMeanVoxelwiseIntensityOfMultipleImages.h:102
std::vector< TranslationType > m_TranslationVectors
An optional array of translation vectors.
Definition: itkMeanVoxelwiseIntensityOfMultipleImages.h:129
SmartPointer< const Self > ConstPointer
Definition: itkMeanVoxelwiseIntensityOfMultipleImages.h:39
OutputImageSizeType m_OutSize
Definition: itkMeanVoxelwiseIntensityOfMultipleImages.h:141
std::vector< CenterType > m_CenterVectors
An optional array of centers vectors.
Definition: itkMeanVoxelwiseIntensityOfMultipleImages.h:131
float PixelType
Definition: niftkBreastDCEandADC.cxx:88
OutputImagePointType m_OutOrigin
Definition: itkMeanVoxelwiseIntensityOfMultipleImages.h:143
ImageType::RegionType RegionType
Definition: niftkMakeLapUSProbeBasicModel.cxx:30
OutputImageType::IndexType OutputImageIndexType
Definition: itkMeanVoxelwiseIntensityOfMultipleImages.h:69
void SetCenters(std::vector< CenterType > &centers)
Definition: itkMeanVoxelwiseIntensityOfMultipleImages.h:92
OutputImageType::PixelType OutputImagePixelType
Definition: itkMeanVoxelwiseIntensityOfMultipleImages.h:67
Image filter class to calculate the mean image on a voxel by voxel basis of multiple input images...
Definition: itkMeanVoxelwiseIntensityOfMultipleImages.h:31
OutputImageType::SpacingType OutputImageSpacingType
Definition: itkMeanVoxelwiseIntensityOfMultipleImages.h:68
TransformType::ScaleType ScaleType
Definition: itkMeanVoxelwiseIntensityOfMultipleImages.h:78
InputImageRegionType::SizeType InputImageSizeType
Definition: itkMeanVoxelwiseIntensityOfMultipleImages.h:61
bool m_SubtractMinima
Definition: itkMeanVoxelwiseIntensityOfMultipleImages.h:138
TransformType::TranslationType TranslationType
Definition: itkMeanVoxelwiseIntensityOfMultipleImages.h:76
void SetTranslations(std::vector< TranslationType > &translations)
Definition: itkMeanVoxelwiseIntensityOfMultipleImages.h:87
virtual ~MeanVoxelwiseIntensityOfMultipleImages()
Definition: itkMeanVoxelwiseIntensityOfMultipleImages.h:120
Superclass::ScaleType ScaleType
Definition: itkEulerAffineTransform.h:97
TInputImage InputImageType
Definition: itkMeanVoxelwiseIntensityOfMultipleImages.h:52
MeanVoxelwiseIntensityOfMultipleImages Self
Definition: itkMeanVoxelwiseIntensityOfMultipleImages.h:36
Superclass::InputPointType InputPointType
Definition: itkEulerAffineTransform.h:87
InputImageType::PixelType InputImagePixelType
Definition: itkMeanVoxelwiseIntensityOfMultipleImages.h:56