NifTK  16.4.1 - 0798f20
CMIC's Translational Medical Imaging Platform
itkShapeBasedAveragingImageFilter.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 itkShapeBasedAveragingImageFilter_h
16 #define itkShapeBasedAveragingImageFilter_h
17 
18 #include <itkImageToImageFilter.h>
19 #include <stdlib.h>
20 #include <time.h>
21 
22 namespace itk
23 {
24 
30 template<class TInputImage, class TOutputImage>
32  public ImageToImageFilter< TInputImage, TOutputImage >
33 {
34 public:
39  typedef ImageToImageFilter<TInputImage,TOutputImage> Superclass;
40  typedef SmartPointer<Self> Pointer;
41  typedef SmartPointer<const Self> ConstPointer;
46  typedef FloatImageType AverageDistanceMapType;
50  typedef enum
51  {
52  // Simple mean.
53  MEAN = 0,
54  // Median.
55  MEDIAN = 1,
56  // Interquartile mean - more robust.
57  INTERQUARTILE_MEAN = 2,
58  CORRECT_INTERQUARTILE_MEAN = 3
59  } MeanModeType;
63  itkNewMacro(Self);
67  itkTypeMacro(ShapeBasedAveragingImageFilter, ImageToImageFilter);
71  void UnsetLabelForUndecidedPixels() { this->m_IsUserDefinedLabelForUndecidedPixels = false; }
77  {
78  this->m_IsUserDefinedLabelForUndecidedPixels = true;
79  this->m_LabelForUndecidedPixels = value;
80  }
84  itkSetMacro(MeanMode, MeanModeType);
88  const FloatImageType* GetAverageDistanceMap() const
89  {
90  return this->m_AverageDistanceMap;
91  }
95  const FloatImageType* GetVariabilityMap() const
96  {
97  return this->m_VariabilityMap;
98  }
102  const FloatImageType* GetProbabilityMap() const
103  {
104  return this->m_ProbabilityMap;
105  }
106  FloatImageType* GetProbabilityMap()
107  {
108  return this->m_ProbabilityMap;
109  }
113  void ComputeMRF(FloatImageType* probabilityMap, double mrf, int numberOfIterations);
114 
115 protected:
119  ShapeBasedAveragingImageFilter() : m_IsUserDefinedLabelForUndecidedPixels(false), m_LabelForUndecidedPixels(0), m_MeanMode(MEAN)
120  {
121  srand(time(NULL));
122  }
130  void GenerateData();
134  void CalculateReliability();
138  double CalculateVariance(typename AverageDistanceMapType::Pointer averageDistanceMap);
139 
140 protected:
156  std::vector<double> m_SegmentationReliability;
160  typename FloatImageType::Pointer m_AverageDistanceMap;
164  typename FloatImageType::Pointer m_VariabilityMap;
168  typename FloatImageType::Pointer m_ProbabilityMap;
169 
170 
171 private:
175  ShapeBasedAveragingImageFilter(const Self&);
176  void operator=(const Self&);
177 
178 
179 };
180 
181 
182 } // end of namespace itk.
183 
184 #ifndef ITK_MANUAL_INSTANTIATION
185 #include "itkShapeBasedAveragingImageFilter.txx"
186 #endif
187 
188 
189 #endif // ITKSHAPEBASEDAVERAGINGIMAGEFILTER_H_
190 
191 
192 
193 
194 
195 
196 
const FloatImageType * GetVariabilityMap() const
Definition: itkShapeBasedAveragingImageFilter.h:95
TOutputImage::PixelType m_LabelForUndecidedPixels
Definition: itkShapeBasedAveragingImageFilter.h:148
Combines several segmentations/shapes into an average shape according to the Shaped-Based Averaging...
Definition: itkShapeBasedAveragingImageFilter.h:31
const FloatImageType * GetAverageDistanceMap() const
Definition: itkShapeBasedAveragingImageFilter.h:88
virtual ~ShapeBasedAveragingImageFilter()
Definition: itkShapeBasedAveragingImageFilter.h:126
FloatImageType AverageDistanceMapType
Definition: itkShapeBasedAveragingImageFilter.h:46
int m_MeanMode
Definition: itkShapeBasedAveragingImageFilter.h:152
Definition: niftkITKAffineResampleImage.cxx:74
FloatImageType::Pointer m_VariabilityMap
Definition: itkShapeBasedAveragingImageFilter.h:164
bool m_IsUserDefinedLabelForUndecidedPixels
Definition: itkShapeBasedAveragingImageFilter.h:144
const FloatImageType * GetProbabilityMap() const
Definition: itkShapeBasedAveragingImageFilter.h:102
std::vector< double > m_SegmentationReliability
Definition: itkShapeBasedAveragingImageFilter.h:156
GLsizei const GLfloat * value
Definition: glew.h:1833
ShapeBasedAveragingImageFilter Self
Definition: itkShapeBasedAveragingImageFilter.h:38
FloatImageType::Pointer m_AverageDistanceMap
Definition: itkShapeBasedAveragingImageFilter.h:160
FloatImageType::Pointer m_ProbabilityMap
Definition: itkShapeBasedAveragingImageFilter.h:168
float PixelType
Definition: niftkBreastDCEandADC.cxx:88
Image< float, TInputImage::ImageDimension > FloatImageType
Definition: itkShapeBasedAveragingImageFilter.h:45
SmartPointer< Self > Pointer
Definition: itkShapeBasedAveragingImageFilter.h:40
ImageToImageFilter< TInputImage, TOutputImage > Superclass
Definition: itkShapeBasedAveragingImageFilter.h:39
ShapeBasedAveragingImageFilter()
Definition: itkShapeBasedAveragingImageFilter.h:119
Simultaneous itk::Image and itk::Array (and hence vnl_vector) class.
FloatImageType * GetProbabilityMap()
Definition: itkShapeBasedAveragingImageFilter.h:106
void SetLabelForUndecidedPixels(typename TOutputImage::PixelType value)
Definition: itkShapeBasedAveragingImageFilter.h:76
void UnsetLabelForUndecidedPixels()
Definition: itkShapeBasedAveragingImageFilter.h:71
SmartPointer< const Self > ConstPointer
Definition: itkShapeBasedAveragingImageFilter.h:41