ITK  6.0.0
Insight Toolkit
itkFastMarchingExtensionImageFilter.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 itkFastMarchingExtensionImageFilter_h
19#define itkFastMarchingExtensionImageFilter_h
20
22
23namespace itk
24{
55template <typename TLevelSet,
56 typename TAuxValue,
57 unsigned int VAuxDimension = 1,
58 typename TSpeedImage = Image<float, TLevelSet::ImageDimension>>
59class ITK_TEMPLATE_EXPORT FastMarchingExtensionImageFilter : public FastMarchingImageFilter<TLevelSet, TSpeedImage>
60{
61public:
62 ITK_DISALLOW_COPY_AND_MOVE(FastMarchingExtensionImageFilter);
63
69
71 itkNewMacro(Self);
72
74 itkOverrideGetNameOfClassMacro(FastMarchingExtensionImageFilter);
75
77 using typename Superclass::LevelSetType;
78 using typename Superclass::SpeedImageType;
79 using typename Superclass::LevelSetImageType;
80
82 static constexpr unsigned int SetDimension = Superclass::SetDimension;
83
85 static constexpr unsigned int AuxDimension = VAuxDimension;
86
94
97
100 GetAuxiliaryImage(unsigned int idx);
101
103 void
105 {
106 m_AuxAliveValues = values;
107 }
108
110 AuxValueContainer *
112 {
113 return m_AuxAliveValues.GetPointer();
114 }
115
117 void
119 {
120 m_AuxTrialValues = values;
121 }
122
126 {
127 return m_AuxTrialValues;
128 }
129
130#ifdef ITK_USE_CONCEPT_CHECKING
131 // Begin concept checking
132 itkConceptMacro(AuxValueHasNumericTraitsCheck, (Concept::HasNumericTraits<TAuxValue>));
133 // End concept checking
134#endif
135
136protected:
139 void
140 PrintSelf(std::ostream & os, Indent indent) const override;
141
142 void
144
145 double
146 UpdateValue(const IndexType & index, const SpeedImageType * speed, LevelSetImageType * output) override;
147
149 void
151
152 void
154
155private:
156 typename AuxValueContainer::Pointer m_AuxAliveValues{};
157 typename AuxValueContainer::Pointer m_AuxTrialValues{};
158
159 AuxImageType * m_AuxImages[AuxDimension]{};
160};
161} // namespace itk
162
163#ifndef ITK_MANUAL_INSTANTIATION
164# include "itkFastMarchingExtensionImageFilter.hxx"
165#endif
166
167#endif
Level set auxiliary variables type information.
Definition: itkLevelSet.h:86
typename AuxImageType::Pointer AuxImagePointer
Definition: itkLevelSet.h:111
Base class for all data objects in ITK.
Extend auxiliary variables smoothly using Fast Marching.
void PrintSelf(std::ostream &os, Indent indent) const override
void EnlargeOutputRequestedRegion(DataObject *output) override
~FastMarchingExtensionImageFilter() override=default
typename AuxVarType::AuxValueContainer AuxValueContainer
typename AuxVarType::AuxValueVectorType AuxValueVectorType
double UpdateValue(const IndexType &index, const SpeedImageType *speed, LevelSetImageType *output) override
void Initialize(LevelSetImageType *) override
typename AuxVarType::AuxImagePointer AuxImagePointer
AuxImageType * GetAuxiliaryImage(unsigned int idx)
Solve an Eikonal equation using Fast Marching.
Templated n-dimensional image class.
Definition: itkImage.h:89
Control indentation during Print() invocation.
Definition: itkIndent.h:50
Light weight base class for most itk classes.
A templated class holding a n-Dimensional vector.
Definition: itkVector.h:63
Define a front-end to the STL "vector" container that conforms to the IndexedContainerInterface.
SmartPointer< Self > Pointer
#define itkConceptMacro(name, concept)
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....
Represent a n-dimensional index in a n-dimensional image.
Definition: itkIndex.h:69