Medical Imaging Interaction Toolkit  2018.4.99-389bf124
Medical Imaging Interaction Toolkit
itkLocalIntensityFilter.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 #ifndef itkLocalIntensityFilter_h
14 #define itkLocalIntensityFilter_h
15 
16 #include "itkImageToImageFilter.h"
17 #include "itkNumericTraits.h"
18 #include "itkArray.h"
19 #include "itkSimpleDataObjectDecorator.h"
20 
21 namespace itk
22 {
23 
24  template< typename TInputImage >
25  class ITK_TEMPLATE_EXPORT LocalIntensityFilter :
26  public ImageToImageFilter< TInputImage, TInputImage >
27  {
28  public:
31  typedef ImageToImageFilter< TInputImage, TInputImage > Superclass;
34 
36  itkNewMacro(Self);
37 
39  itkTypeMacro(LocalIntensityFilter, ImageToImageFilter);
40 
42  typedef typename TInputImage::Pointer InputImagePointer;
43 
44  typedef typename TInputImage::RegionType RegionType;
45  typedef typename TInputImage::SizeType SizeType;
46  typedef typename TInputImage::IndexType IndexType;
47  typedef typename TInputImage::PixelType PixelType;
48 
49  typedef Image<unsigned short, TInputImage::ImageDimension> MaskImageType;
50 
52  itkStaticConstMacro(ImageDimension, unsigned int,
53  TInputImage::ImageDimension);
54 
56  typedef typename NumericTraits< PixelType >::RealType RealType;
57 
59  typedef typename DataObject::Pointer DataObjectPointer;
60 
62  typedef SimpleDataObjectDecorator< RealType > RealObjectType;
63  typedef SimpleDataObjectDecorator< PixelType > PixelObjectType;
64 
66  RealType GetLocalPeak() const
67  {
68  return this->GetLocalPeakOutput()->Get();
69  }
70  RealObjectType * GetLocalPeakOutput();
71 
72  const RealObjectType * GetLocalPeakOutput() const;
73 
75  RealType GetGlobalPeak() const
76  {
77  return this->GetGlobalPeakOutput()->Get();
78  }
79  RealObjectType * GetGlobalPeakOutput();
80 
81  const RealObjectType * GetGlobalPeakOutput() const;
82 
84  RealType GetLocalMaximum() const
85  {
86  return this->GetLocalMaximumOutput()->Get();
87  }
88  RealObjectType * GetLocalMaximumOutput();
89 
90  const RealObjectType * GetLocalMaximumOutput() const;
91 
92  void SetMask(typename MaskImageType::Pointer mask)
93  {
94  m_Mask = mask;
95  }
96 
97  itkSetMacro(Range, double);
98  itkGetMacro(Range, double);
99  itkGetConstMacro(Range, double);
100 
103  typedef ProcessObject::DataObjectPointerArraySizeType DataObjectPointerArraySizeType;
104  using Superclass::MakeOutput;
105  DataObjectPointer MakeOutput(DataObjectPointerArraySizeType idx) ITK_OVERRIDE;
106 
107 #ifdef ITK_USE_CONCEPT_CHECKING
108  // Begin concept checking
109  itkConceptMacro(InputHasNumericTraitsCheck,
110  (Concept::HasNumericTraits< PixelType >));
111  // End concept checking
112 #endif
113 
114  protected:
116  ~LocalIntensityFilter() ITK_OVERRIDE {}
117  void PrintSelf(std::ostream & os, Indent indent) const ITK_OVERRIDE;
118 
122  void AllocateOutputs() ITK_OVERRIDE;
123 
125  void BeforeThreadedGenerateData() ITK_OVERRIDE;
126 
129  void AfterThreadedGenerateData() ITK_OVERRIDE;
130 
132  void ThreadedGenerateData(const RegionType &
133  outputRegionForThread,
134  ThreadIdType threadId) ITK_OVERRIDE;
135 
136  // Override since the filter needs all the data for the algorithm
137  void GenerateInputRequestedRegion() ITK_OVERRIDE;
138 
139  // Override since the filter produces all of its output
140  void EnlargeOutputRequestedRegion(DataObject *data) ITK_OVERRIDE;
141 
142  private:
143  ITK_DISALLOW_COPY_AND_ASSIGN(LocalIntensityFilter);
144 
145  Array< RealType > m_ThreadLocalMaximum;
146  Array< RealType > m_ThreadLocalPeakValue;
147  Array< RealType > m_ThreadGlobalPeakValue;
148  typename MaskImageType::Pointer m_Mask;
149  double m_Range;
150  }; // end of class
151 } // end namespace itk
152 
153 #ifndef ITK_MANUAL_INSTANTIATION
154 #include "itkLocalIntensityFilter.hxx"
155 #endif
156 
157 #endif
158 
TInputImage::PixelType PixelType
NumericTraits< PixelType >::RealType RealType
DataObject::Pointer DataObjectPointer
TInputImage::SizeType SizeType
void SetMask(typename MaskImageType::Pointer mask)
TInputImage::IndexType IndexType
TInputImage::Pointer InputImagePointer
SimpleDataObjectDecorator< PixelType > PixelObjectType
TInputImage::RegionType RegionType
SimpleDataObjectDecorator< RealType > RealObjectType
mitk::Image::Pointer mask
SmartPointer< const Self > ConstPointer
Image< unsigned short, TInputImage::ImageDimension > MaskImageType
ProcessObject::DataObjectPointerArraySizeType DataObjectPointerArraySizeType
ImageToImageFilter< TInputImage, TInputImage > Superclass