NifTK  16.4.1 - 0798f20
CMIC's Translational Medical Imaging Platform
itkSimpleKMeansClusteringImageFilter.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 itkSimpleKMeansClusteringImageFilter_h
16 #define itkSimpleKMeansClusteringImageFilter_h
17 
18 #include <itkImageToImageFilter.h>
19 #include <itkMacro.h>
20 #include <itkWeightedCentroidKdTreeGenerator.h>
21 #include <itkKdTreeBasedKmeansEstimator.h>
22 #include <itkListSample.h>
23 
24 
25 namespace itk
26 {
27 
31 template <class TInputImage, class TInputMask, class TOutputImage>
33  public ImageToImageFilter<TInputImage, TOutputImage>
34 {
35 public:
40  typedef ImageToImageFilter<TInputImage,TOutputImage> Superclass;
41  typedef SmartPointer<Self> Pointer;
42  typedef SmartPointer<const Self> ConstPointer;
46  itkNewMacro(Self);
50  itkTypeMacro(SimpleKMeansClusteringImageFilter, ImageToImageFilter);
54  typedef typename TInputImage::Pointer TInputImagePointer;
55  typedef typename TInputMask::Pointer TInputMaskPointer;
56  typedef itk::Vector< double, 1 > MeasurementVectorType ;
57  typedef typename itk::Statistics::ListSample< MeasurementVectorType > SampleType ;
58  typedef itk::Statistics::WeightedCentroidKdTreeGenerator<SampleType> TreeGeneratorType;
59  typedef typename TreeGeneratorType::KdTreeType TreeType;
60  typedef itk::Statistics::KdTreeBasedKmeansEstimator<TreeType> EstimatorType;
61  typedef typename EstimatorType::ParametersType ParametersType;
65  itkSetMacro(InputMask, TInputMaskPointer);
66  itkGetMacro(InputMask, TInputMaskPointer);
67  itkSetMacro(NumberOfClasses, unsigned int);
68  itkGetMacro(NumberOfClasses, unsigned int);
69  itkSetMacro(InitialMeans, ParametersType);
70  itkGetMacro(InitialMeans, ParametersType);
71  itkGetMacro(FinalMeans, ParametersType);
72  itkGetMacro(FinalStds, ParametersType);
73  itkGetMacro(RSS, double);
74  itkGetMacro(NumberOfSamples, double);
75  itkGetMacro(FinalClassSizes, ParametersType);
76  itkSetMacro(IsEstimateInitValuesUsingMask, bool);
77 
78 protected:
83  {
84  this->m_NumberOfClasses = 3;
85  this->m_RSS = 0.0;
86  this->m_NumberOfSamples = 0.0;
87  this->m_IsEstimateInitValuesUsingMask = false;
88  }
96  void GenerateData();
100  void EstimateIntensityFromDilatedMask(double& csfMean, double& csfSd, double& gmMean, double& wmMean);
101 
102 private:
106  TInputMaskPointer m_InputMask;
110  unsigned int m_NumberOfClasses;
114  ParametersType m_InitialMeans;
118  ParametersType m_FinalMeans;
119  ParametersType m_FinalStds;
120  ParametersType m_FinalClassSizes;
124  double m_RSS;
128  double m_NumberOfSamples;
132  bool m_IsEstimateInitValuesUsingMask;
133 
134 
135 };
136 
137 }
138 
139 #ifndef ITK_MANUAL_INSTANTIATION
140 #include "itkSimpleKMeansClusteringImageFilter.txx"
141 #endif
142 
143 #endif
144 
145 
TreeGeneratorType::KdTreeType TreeType
Definition: itkSimpleKMeansClusteringImageFilter.h:59
EstimatorType::ParametersType ParametersType
Definition: itkSimpleKMeansClusteringImageFilter.h:61
ImageToImageFilter< TInputImage, TOutputImage > Superclass
Definition: itkSimpleKMeansClusteringImageFilter.h:40
SmartPointer< Self > Pointer
Definition: itkSimpleKMeansClusteringImageFilter.h:41
Definition: niftkITKAffineResampleImage.cxx:74
itk::Statistics::ListSample< MeasurementVectorType > SampleType
Definition: itkSimpleKMeansClusteringImageFilter.h:57
SimpleKMeansClusteringImageFilter()
Definition: itkSimpleKMeansClusteringImageFilter.h:82
TInputImage::Pointer TInputImagePointer
Definition: itkSimpleKMeansClusteringImageFilter.h:50
itk::Statistics::WeightedCentroidKdTreeGenerator< SampleType > TreeGeneratorType
Definition: itkSimpleKMeansClusteringImageFilter.h:58
virtual ~SimpleKMeansClusteringImageFilter()
Definition: itkSimpleKMeansClusteringImageFilter.h:92
SmartPointer< const Self > ConstPointer
Definition: itkSimpleKMeansClusteringImageFilter.h:42
Definition: itkSimpleKMeansClusteringImageFilter.h:32
SimpleKMeansClusteringImageFilter Self
Definition: itkSimpleKMeansClusteringImageFilter.h:39
itk::Vector< double, 1 > MeasurementVectorType
Definition: itkSimpleKMeansClusteringImageFilter.h:56
itk::Statistics::KdTreeBasedKmeansEstimator< TreeType > EstimatorType
Definition: itkSimpleKMeansClusteringImageFilter.h:60
TInputMask::Pointer TInputMaskPointer
Definition: itkSimpleKMeansClusteringImageFilter.h:55