ITK  6.0.0
Insight Toolkit
itkFastMarchingExtensionImageFilterBase.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 itkFastMarchingExtensionImageFilterBase_h
19 #define itkFastMarchingExtensionImageFilterBase_h
20 
22 #include "itkVectorContainer.h"
23 
24 namespace itk
25 {
57 template <typename TInput, typename TOutput, typename TAuxValue, unsigned int VAuxDimension>
58 class ITK_TEMPLATE_EXPORT FastMarchingExtensionImageFilterBase : public FastMarchingImageFilterBase<TInput, TOutput>
59 {
60 public:
61  ITK_DISALLOW_COPY_AND_MOVE(FastMarchingExtensionImageFilterBase);
62 
68  using typename Superclass::Traits;
69 
71  itkNewMacro(Self);
72 
74  itkOverrideGetNameOfClassMacro(FastMarchingExtensionImageFilterBase);
75 
77  static constexpr unsigned int ImageDimension = Superclass::ImageDimension;
78 
80  static constexpr unsigned int AuxDimension = VAuxDimension;
81 
83  using AuxValueType = TAuxValue;
86 
89 
92 
93 
95  using typename Superclass::NodeType;
96  using typename Superclass::NodePairType;
97 
98  // using typename Superclass::NodeContainerType;
99  // using typename Superclass::NodeContainerPointer;
100  // using typename Superclass::NodeContainerConstIterator;
101 
102  using typename Superclass::NodePairContainerType;
103  using typename Superclass::NodePairContainerPointer;
104  using typename Superclass::NodePairContainerConstIterator;
105 
106  using typename Superclass::OutputImageType;
107  using typename Superclass::OutputPixelType;
108  using typename Superclass::InternalNodeStructure;
109 
111  AuxImageType *
112  GetAuxiliaryImage(const unsigned int idx);
113 
115  itkSetObjectMacro(AuxiliaryAliveValues, AuxValueContainerType);
116  itkGetModifiableObjectMacro(AuxiliaryAliveValues, AuxValueContainerType);
120  itkSetObjectMacro(AuxiliaryTrialValues, AuxValueContainerType);
121  itkGetModifiableObjectMacro(AuxiliaryTrialValues, AuxValueContainerType);
124 #ifdef ITK_USE_CONCEPT_CHECKING
125  // Begin concept checking
126  itkConceptMacro(AuxValueHasNumericTraitsCheck, (Concept::HasNumericTraits<TAuxValue>));
127  // End concept checking
128 #endif
129 
130 protected:
132  ~FastMarchingExtensionImageFilterBase() override = default;
133  void
134  PrintSelf(std::ostream & os, Indent indent) const override;
135 
136  void
137  InitializeOutput(OutputImageType *) override;
138 
139  void
140  UpdateValue(OutputImageType * oImage, const NodeType & iNode) override;
141 
143  void
144  GenerateOutputInformation() override;
145 
146  void
147  EnlargeOutputRequestedRegion(DataObject * output) override;
148 
149  AuxValueContainerPointer m_AuxiliaryAliveValues{};
150  AuxValueContainerPointer m_AuxiliaryTrialValues{};
151 
152 private:
153  AuxImageType * m_AuxImages[VAuxDimension]{};
154 };
155 } // namespace itk
156 
157 #ifndef ITK_MANUAL_INSTANTIATION
158 # include "itkFastMarchingExtensionImageFilterBase.hxx"
159 #endif
160 
161 #endif
Pointer
SmartPointer< Self > Pointer
Definition: itkAddImageFilter.h:93
itk::FastMarchingExtensionImageFilterBase
Extend auxiliary variables smoothly using Fast Marching.
Definition: itkFastMarchingExtensionImageFilterBase.h:58
itk::Concept::HasNumericTraits
Definition: itkConceptChecking.h:716
itk::FastMarchingExtensionImageFilterBase::AuxValueType
TAuxValue AuxValueType
Definition: itkFastMarchingExtensionImageFilterBase.h:83
itk::FastMarchingExtensionImageFilterBase::AuxImagePointer
typename AuxImageType::Pointer AuxImagePointer
Definition: itkFastMarchingExtensionImageFilterBase.h:91
itk::Vector
A templated class holding a n-Dimensional vector.
Definition: itkVector.h:62
itk::SmartPointer< Self >
itk::Indent
Control indentation during Print() invocation.
Definition: itkIndent.h:49
itk::FastMarchingExtensionImageFilterBase::AuxValueContainerPointer
typename AuxValueContainerType::Pointer AuxValueContainerPointer
Definition: itkFastMarchingExtensionImageFilterBase.h:87
itk::FastMarchingImageFilterBase
Apply the Fast Marching method to solve an Eikonal equation on an image.
Definition: itkFastMarchingImageFilterBase.h:75
itk::FastMarchingBase::Superclass
typename FastMarchingTraits< TInput, TOutput >::SuperclassType Superclass
Definition: itkFastMarchingBase.h:135
itk::FastMarchingBase::NodeType
typename Traits::NodeType NodeType
Definition: itkFastMarchingBase.h:153
itkVectorContainer.h
itk::FastMarchingExtensionImageFilterBase::AuxValueContainerConstIterator
typename AuxValueContainerType::ConstIterator AuxValueContainerConstIterator
Definition: itkFastMarchingExtensionImageFilterBase.h:88
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
itkFastMarchingImageFilterBase.h
itk::Image
Templated n-dimensional image class.
Definition: itkImage.h:88
itk::VectorContainer::ConstIterator
Definition: itkVectorContainer.h:275
itk::FastMarchingBase
Abstract class to solve an Eikonal based-equation using Fast Marching Method.
Definition: itkFastMarchingBase.h:126
itk::VectorContainer
Define a front-end to the STL "vector" container that conforms to the IndexedContainerInterface.
Definition: itkVectorContainer.h:48
itk::FastMarchingImageFilterBase::OutputImageType
typename Superclass::OutputDomainType OutputImageType
Definition: itkFastMarchingImageFilterBase.h:97
itk::DataObject
Base class for all data objects in ITK.
Definition: itkDataObject.h:293