Medical Imaging Interaction Toolkit  2018.4.99-b585543d
Medical Imaging Interaction Toolkit
itkEnhancedHistogramToSizeZoneFeaturesFilter.h
Go to the documentation of this file.
1 /*============================================================================
2 
3 The Medical Imaging Interaction Toolkit (MITK)
4 
5 Copyright (c) German Cancer Research Center (DKFZ)
6 All rights reserved.
7 
8 Use of this source code is governed by a 3-clause BSD license that can be
9 found in the LICENSE file.
10 
11 ============================================================================*/
12 
13 /*=========================================================================
14 *
15 * Copyright Insight Software Consortium
16 *
17 * Licensed under the Apache License, Version 2.0 (the "License");
18 * you may not use this file except in compliance with the License.
19 * You may obtain a copy of the License at
20 *
21 * http://www.apache.org/licenses/LICENSE-2.0.txt
22 *
23 * Unless required by applicable law or agreed to in writing, software
24 * distributed under the License is distributed on an "AS IS" BASIS,
25 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
26 * See the License for the specific language governing permissions and
27 * limitations under the License.
28 *
29 *=========================================================================*/
30 #ifndef __itkEnhancedHistogramToSizeZoneFeaturesFilter_h
31 #define __itkEnhancedHistogramToSizeZoneFeaturesFilter_h
32 
33 #include "itkHistogram.h"
34 #include "itkMacro.h"
35 #include "itkProcessObject.h"
36 #include "itkSimpleDataObjectDecorator.h"
37 
38 namespace itk {
39  namespace Statistics {
77  template< typename THistogram >
78  class EnhancedHistogramToSizeZoneFeaturesFilter : public ProcessObject
79  {
80  public:
83  typedef ProcessObject Superclass;
86 
88  itkTypeMacro( EnhancedHistogramToSizeZoneFeaturesFilter, ProcessObject );
89 
91  itkNewMacro( Self );
92 
93  typedef THistogram HistogramType;
94  typedef typename HistogramType::Pointer HistogramPointer;
95  typedef typename HistogramType::ConstPointer HistogramConstPointer;
96  typedef typename HistogramType::MeasurementType MeasurementType;
97  typedef typename HistogramType::MeasurementVectorType MeasurementVectorType;
98  typedef typename HistogramType::IndexType IndexType;
99  typedef typename HistogramType::
100  TotalAbsoluteFrequencyType FrequencyType;
101 
103  using Superclass::SetInput;
104  void SetInput ( const HistogramType * histogram );
105  const HistogramType * GetInput() const;
106 
108  typedef DataObject::Pointer DataObjectPointer;
109 
111  typedef SimpleDataObjectDecorator<MeasurementType> MeasurementObjectType;
112 
114  MeasurementType GetSmallZoneEmphasis() const;
115  const MeasurementObjectType* GetSmallZoneEmphasisOutput() const;
116 
118  MeasurementType GetLargeZoneEmphasis() const;
119  const MeasurementObjectType* GetLargeZoneEmphasisOutput() const;
120 
122  MeasurementType GetGreyLevelNonuniformity() const;
123  const MeasurementObjectType* GetGreyLevelNonuniformityOutput() const;
124 
126  MeasurementType GetGreyLevelNonuniformityNormalized() const;
127  const MeasurementObjectType* GetGreyLevelNonuniformityNormalizedOutput() const;
128 
130  MeasurementType GetSizeZoneNonuniformity() const;
131  const MeasurementObjectType* GetSizeZoneNonuniformityOutput() const;
132 
134  MeasurementType GetSizeZoneNonuniformityNormalized() const;
135  const MeasurementObjectType* GetSizeZoneNonuniformityNormalizedOutput() const;
136 
138  MeasurementType GetLowGreyLevelZoneEmphasis() const;
139  const MeasurementObjectType* GetLowGreyLevelZoneEmphasisOutput() const;
140 
142  MeasurementType GetHighGreyLevelZoneEmphasis() const;
143  const MeasurementObjectType* GetHighGreyLevelZoneEmphasisOutput() const;
144 
146  MeasurementType GetSmallZoneLowGreyLevelEmphasis() const;
147  const MeasurementObjectType* GetSmallZoneLowGreyLevelEmphasisOutput() const;
148 
150  MeasurementType GetSmallZoneHighGreyLevelEmphasis() const;
151  const MeasurementObjectType* GetSmallZoneHighGreyLevelEmphasisOutput() const;
152 
154  MeasurementType GetLargeZoneLowGreyLevelEmphasis() const;
155  const MeasurementObjectType* GetLargeZoneLowGreyLevelEmphasisOutput() const;
156 
158  MeasurementType GetLargeZoneHighGreyLevelEmphasis() const;
159  const MeasurementObjectType* GetLargeZoneHighGreyLevelEmphasisOutput() const;
160 
162  MeasurementType GetZonePercentage() const;
163  const MeasurementObjectType* GetZonePercentageOutput() const;
164 
166  MeasurementType GetNumberOfZones() const;
167  const MeasurementObjectType* GetNumberOfZonesOutput() const;
168 
170  MeasurementType GetGreyLevelVariance() const;
171  const MeasurementObjectType* GetGreyLevelVarianceOutput() const;
172 
174  MeasurementType GetSizeZoneVariance() const;
175  const MeasurementObjectType* GetSizeZoneVarianceOutput() const;
176 
178  MeasurementType GetZoneEntropy() const;
179  const MeasurementObjectType* GetZoneEntropyOutput() const;
180 
181  itkGetMacro( TotalNumberOfZones, unsigned long );
182 
183  itkGetConstMacro(NumberOfVoxels, unsigned long);
184  itkSetMacro(NumberOfVoxels, unsigned long);
185 
187  typedef enum
188  {
206 
208  MeasurementType GetFeature( SizeZoneFeatureName name );
209 
210  protected:
213  virtual void PrintSelf(std::ostream& os, Indent indent) const ITK_OVERRIDE;
214 
216  typedef ProcessObject::DataObjectPointerArraySizeType DataObjectPointerArraySizeType;
217  using Superclass::MakeOutput;
218  virtual DataObjectPointer MakeOutput( DataObjectPointerArraySizeType ) ITK_OVERRIDE;
219 
220  virtual void GenerateData() ITK_OVERRIDE;
221 
222  private:
223  EnhancedHistogramToSizeZoneFeaturesFilter(const Self&); //purposely not implemented
224  void operator=(const Self&); //purposely not implemented
225 
226  unsigned long m_TotalNumberOfZones;
227  unsigned long m_NumberOfVoxels;
228  };
229  } // end of namespace Statistics
230 } // end of namespace itk
231 
232 #ifndef ITK_MANUAL_INSTANTIATION
233 #include "itkEnhancedHistogramToSizeZoneFeaturesFilter.hxx"
234 #endif
235 
236 #endif
const MeasurementObjectType * GetZonePercentageOutput() const
const MeasurementObjectType * GetLargeZoneHighGreyLevelEmphasisOutput() const
const MeasurementObjectType * GetLowGreyLevelZoneEmphasisOutput() const
const MeasurementObjectType * GetNumberOfZonesOutput() const
virtual DataObjectPointer MakeOutput(DataObjectPointerArraySizeType) ITK_OVERRIDE
const MeasurementObjectType * GetSizeZoneVarianceOutput() const
const MeasurementObjectType * GetGreyLevelNonuniformityOutput() const
MeasurementType GetFeature(SizeZoneFeatureName name)
const MeasurementObjectType * GetHighGreyLevelZoneEmphasisOutput() const
const MeasurementObjectType * GetSmallZoneHighGreyLevelEmphasisOutput() const
const MeasurementObjectType * GetSmallZoneEmphasisOutput() const
const MeasurementObjectType * GetGreyLevelNonuniformityNormalizedOutput() const
const MeasurementObjectType * GetSizeZoneNonuniformityNormalizedOutput() const
const MeasurementObjectType * GetSmallZoneLowGreyLevelEmphasisOutput() const
This class computes texture feature coefficients from a grey level Zone-length matrix.
const MeasurementObjectType * GetSizeZoneNonuniformityOutput() const
const MeasurementObjectType * GetLargeZoneEmphasisOutput() const
const MeasurementObjectType * GetGreyLevelVarianceOutput() const
const MeasurementObjectType * GetZoneEntropyOutput() const
virtual void PrintSelf(std::ostream &os, Indent indent) const ITK_OVERRIDE
const MeasurementObjectType * GetLargeZoneLowGreyLevelEmphasisOutput() const