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
24namespace itk
25{
57template <typename TInput, typename TOutput, typename TAuxValue, unsigned int VAuxDimension>
58class ITK_TEMPLATE_EXPORT FastMarchingExtensionImageFilterBase : public FastMarchingImageFilterBase<TInput, TOutput>
59{
60public:
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
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
130protected:
133 void
134 PrintSelf(std::ostream & os, Indent indent) const override;
135
136 void
138
139 void
140 UpdateValue(OutputImageType * oImage, const NodeType & iNode) override;
141
143 void
145
146 void
148
149 AuxValueContainerPointer m_AuxiliaryAliveValues{};
150 AuxValueContainerPointer m_AuxiliaryTrialValues{};
151
152private:
153 AuxImageType * m_AuxImages[VAuxDimension]{};
154};
155} // namespace itk
156
157#ifndef ITK_MANUAL_INSTANTIATION
158# include "itkFastMarchingExtensionImageFilterBase.hxx"
159#endif
160
161#endif
Base class for all data objects in ITK.
Abstract class to solve an Eikonal based-equation using Fast Marching Method.
typename FastMarchingTraits< TInput, TOutput >::SuperclassType Superclass
typename Traits::NodeType NodeType
Extend auxiliary variables smoothly using Fast Marching.
typename AuxValueContainerType::ConstIterator AuxValueContainerConstIterator
typename AuxValueContainerType::Pointer AuxValueContainerPointer
~FastMarchingExtensionImageFilterBase() override=default
void InitializeOutput(OutputImageType *) override
void EnlargeOutputRequestedRegion(DataObject *output) override
void PrintSelf(std::ostream &os, Indent indent) const override
void UpdateValue(OutputImageType *oImage, const NodeType &iNode) override
AuxImageType * GetAuxiliaryImage(const unsigned int idx)
Apply the Fast Marching method to solve an Eikonal equation on an image.
typename Superclass::OutputDomainType OutputImageType
Templated n-dimensional image class.
Definition: itkImage.h:89
Control indentation during Print() invocation.
Definition: itkIndent.h:50
Define a front-end to the STL "vector" container that conforms to the IndexedContainerInterface.
A templated class holding a n-Dimensional vector.
Definition: itkVector.h:63
SmartPointer< Self > Pointer
#define itkConceptMacro(name, concept)
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....