NifTK  16.4.1 - 0798f20
CMIC's Translational Medical Imaging Platform
itkDBCImageFilter.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 itkDBCImageFilter_h
16 #define itkDBCImageFilter_h
17 
18 #include <itkImageToImageFilter.h>
19 #include <vector>
20 
21 namespace itk
22 {
27 template <class TImageType, class TMaskType>
28 class ITK_EXPORT DBCImageFilter :
29  public ImageToImageFilter<TImageType, TImageType>
30 {
31 public:
36  typedef ImageToImageFilter<TImageType,TImageType> Superclass;
37  typedef SmartPointer<Self> Pointer;
38  typedef SmartPointer<const Self> ConstPointer;
39  itkNewMacro(Self);
40  itkTypeMacro(DBCImageFilter, ImageToImageFilter);
44  void AddImage(typename TImageType::ConstPointer inputImage, typename TMaskType::ConstPointer inputMask)
45  {
46  this->m_InputImages.push_back(inputImage);
47  this->m_InputImageMasks.push_back(inputMask);
48  }
52  void ClearImage()
53  {
54  this->m_InputImages.clear();
55  this->m_InputImageMasks.clear();
56  }
60  void CalculateBiasFields();
64  void ApplyBiasFields();
68  TImageType* GetOutputImage(unsigned int i)
69  {
70  return this->m_OutputImages[i];
71  }
72 
73 protected:
81  virtual ~DBCImageFilter() {}
85  void GenerateData();
90  {
91  if (this->m_InputImages.size() != this->m_InputImageMasks.size())
92  {
93  itkExceptionMacro("Errr... you must supply the same number of images and masks.");
94  }
95  if (this->m_InputImages.size() < 2)
96  {
97  itkExceptionMacro("Errr... you must supply at least two images. Hello? We are doing DBC.");
98  }
99  }
103  std::vector<typename TImageType::ConstPointer> m_InputImages;
107  std::vector<typename TMaskType::ConstPointer> m_InputImageMasks;
111  std::vector<typename TImageType::Pointer> m_BiasFields;
115  std::vector<typename TImageType::Pointer> m_OutputImages;
129 
130 private:
134  DBCImageFilter(const Self&);
135  void operator=(const Self&);
136 
137 };
138 
139 }
140 
141 #ifndef ITK_MANUAL_INSTANTIATION
142 #include "itkDBCImageFilter.txx"
143 #endif
144 
145 
146 
147 
148 #endif /*ITKDBCImageFilter_H_*/
std::vector< typename TImageType::Pointer > m_OutputImages
Definition: itkDBCImageFilter.h:115
SmartPointer< const Self > ConstPointer
Definition: itkDBCImageFilter.h:38
ImageToImageFilter< TImageType, TImageType > Superclass
Definition: itkDBCImageFilter.h:36
int m_InputRegionExpansion
Definition: itkDBCImageFilter.h:119
int m_InputMode
Definition: itkDBCImageFilter.h:128
void InputSanityCheck()
Definition: itkDBCImageFilter.h:89
Definition: niftkITKAffineResampleImage.cxx:74
virtual ~DBCImageFilter()
Definition: itkDBCImageFilter.h:81
std::vector< typename TImageType::ConstPointer > m_InputImages
Definition: itkDBCImageFilter.h:103
SmartPointer< Self > Pointer
Definition: itkDBCImageFilter.h:37
std::vector< typename TImageType::Pointer > m_BiasFields
Definition: itkDBCImageFilter.h:111
std::vector< typename TMaskType::ConstPointer > m_InputImageMasks
Definition: itkDBCImageFilter.h:107
void ClearImage()
Definition: itkDBCImageFilter.h:52
void AddImage(typename TImageType::ConstPointer inputImage, typename TMaskType::ConstPointer inputMask)
Definition: itkDBCImageFilter.h:44
int m_InputRadius
Definition: itkDBCImageFilter.h:123
DBCImageFilter Self
Definition: itkDBCImageFilter.h:35
Definition: itkDBCImageFilter.h:28
TImageType * GetOutputImage(unsigned int i)
Definition: itkDBCImageFilter.h:68