ITK  5.4.0
Insight Toolkit
itkEigenAnalysis2DImageFilter.h
Go to the documentation of this file.
1 /*=========================================================================
2  *
3  * Copyright NumFOCUS
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * https://www.apache.org/licenses/LICENSE-2.0.txt
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  *=========================================================================*/
18 #ifndef itkEigenAnalysis2DImageFilter_h
19 #define itkEigenAnalysis2DImageFilter_h
20 
21 #include "itkImageToImageFilter.h"
22 
23 namespace itk
24 {
43 template <typename TInputImage, typename TEigenValueImage, typename TEigenVectorImage>
44 class ITK_TEMPLATE_EXPORT EigenAnalysis2DImageFilter : public ImageToImageFilter<TInputImage, TEigenValueImage>
45 {
46 public:
47  ITK_DISALLOW_COPY_AND_MOVE(EigenAnalysis2DImageFilter);
48 
54 
56  itkOverrideGetNameOfClassMacro(EigenAnalysis2DImageFilter);
57 
59  itkNewMacro(Self);
60 
62  using EigenVectorType = typename TEigenVectorImage::PixelType;
63  using VectorComponentType = typename EigenVectorType::ValueType;
64 
66  using typename Superclass::OutputImageRegionType;
67 
69  using EigenValueImageType = TEigenValueImage;
72  using EigenValueImagePixelType = typename EigenValueImageType::PixelType;
73  using EigenVectorImageType = TEigenVectorImage;
76  using EigenVectorImagePixelType = typename EigenVectorImageType::PixelType;
77 
79  static constexpr unsigned int ImageDimension = TInputImage::ImageDimension;
80 
83  void
84  SetInput1(TInputImage * image);
85 
90  void
91  SetInput2(TInputImage * image);
92 
95  void
96  SetInput3(TInputImage * image);
97 
103  GetMaxEigenValue();
104 
110  GetMinEigenValue();
111 
118  GetMaxEigenVector();
119 
126  using Superclass::MakeOutput;
128  MakeOutput(DataObjectPointerArraySizeType idx) override;
129 
130 #ifdef ITK_USE_CONCEPT_CHECKING
131  // Begin concept checking
132  itkConceptMacro(VectorComponentHasNumericTraitsCheck, (Concept::HasNumericTraits<VectorComponentType>));
133  // End concept checking
134 #endif
135 
136 protected:
138  ~EigenAnalysis2DImageFilter() override = default;
139 
140  void
141  GenerateData() override;
142 };
143 } // end namespace itk
144 
145 #ifndef ITK_MANUAL_INSTANTIATION
146 # include "itkEigenAnalysis2DImageFilter.hxx"
147 #endif
148 
149 #endif
Pointer
SmartPointer< Self > Pointer
Definition: itkAddImageFilter.h:93
itk::EigenAnalysis2DImageFilter::EigenVectorImagePixelType
typename EigenVectorImageType::PixelType EigenVectorImagePixelType
Definition: itkEigenAnalysis2DImageFilter.h:76
itk::EigenAnalysis2DImageFilter::EigenVectorImageType
TEigenVectorImage EigenVectorImageType
Definition: itkEigenAnalysis2DImageFilter.h:73
itk::Concept::HasNumericTraits
Definition: itkConceptChecking.h:714
itk::EigenAnalysis2DImageFilter::EigenVectorType
typename TEigenVectorImage::PixelType EigenVectorType
Definition: itkEigenAnalysis2DImageFilter.h:62
itk::EigenAnalysis2DImageFilter::VectorComponentType
typename EigenVectorType::ValueType VectorComponentType
Definition: itkEigenAnalysis2DImageFilter.h:63
itk::SmartPointer< Self >
itk::ProcessObject::DataObjectPointerArraySizeType
DataObjectPointerArray::size_type DataObjectPointerArraySizeType
Definition: itkProcessObject.h:194
itk::EigenAnalysis2DImageFilter::EigenValueImageRegionType
typename EigenValueImageType::RegionType EigenValueImageRegionType
Definition: itkEigenAnalysis2DImageFilter.h:71
itk::EigenAnalysis2DImageFilter::EigenValueImageType
TEigenValueImage EigenValueImageType
Definition: itkEigenAnalysis2DImageFilter.h:69
itk::ImageToImageFilter
Base class for filters that take an image as input and produce an image as output.
Definition: itkImageToImageFilter.h:108
itk::LightObject
Light weight base class for most itk classes.
Definition: itkLightObject.h:55
itk::EigenAnalysis2DImageFilter::EigenVectorImagePointer
typename EigenVectorImageType::Pointer EigenVectorImagePointer
Definition: itkEigenAnalysis2DImageFilter.h:74
itk::GTest::TypedefsAndConstructors::Dimension2::RegionType
ImageBaseType::RegionType RegionType
Definition: itkGTestTypedefsAndConstructors.h:54
itk::EigenAnalysis2DImageFilter::EigenValueImagePixelType
typename EigenValueImageType::PixelType EigenValueImagePixelType
Definition: itkEigenAnalysis2DImageFilter.h:72
itk::EigenAnalysis2DImageFilter::EigenVectorImageRegionType
typename EigenVectorImageType::RegionType EigenVectorImageRegionType
Definition: itkEigenAnalysis2DImageFilter.h:75
itkImageToImageFilter.h
itkConceptMacro
#define itkConceptMacro(name, concept)
Definition: itkConceptChecking.h:65
itk
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....
Definition: itkAnnulusOperator.h:24
itk::EigenAnalysis2DImageFilter
Computes pixel-wise the eigen values and eigen vectors of a 2D symmetrical matrix.
Definition: itkEigenAnalysis2DImageFilter.h:44
itk::EigenAnalysis2DImageFilter::EigenValueImagePointer
typename EigenValueImageType::Pointer EigenValueImagePointer
Definition: itkEigenAnalysis2DImageFilter.h:70