ITK  5.2.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  * http://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 Traits = typename Superclass::Traits;
69 
71  itkNewMacro(Self);
72 
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 NodeType = typename Superclass::NodeType;
96  using NodePairType = typename Superclass::NodePairType;
97 
98  // using NodeContainerType = typename Superclass::NodeContainerType;
99  // using NodeContainerPointer = typename Superclass::NodeContainerPointer;
100  // using NodeContainerConstIterator = typename Superclass::NodeContainerConstIterator;
101 
102  using NodePairContainerType = typename Superclass::NodePairContainerType;
103  using NodePairContainerPointer = typename Superclass::NodePairContainerPointer;
104  using NodePairContainerConstIterator = typename Superclass::NodePairContainerConstIterator;
105 
106  using OutputImageType = typename Superclass::OutputImageType;
107  using OutputPixelType = typename Superclass::OutputPixelType;
108  using InternalNodeStructure = typename Superclass::InternalNodeStructure;
109 
111  AuxImageType *
112  GetAuxiliaryImage(const unsigned int & idx);
113 
115  itkSetObjectMacro(AuxiliaryAliveValues, AuxValueContainerType);
116  itkGetModifiableObjectMacro(AuxiliaryAliveValues, AuxValueContainerType);
118 
120  itkSetObjectMacro(AuxiliaryTrialValues, AuxValueContainerType);
121  itkGetModifiableObjectMacro(AuxiliaryTrialValues, AuxValueContainerType);
123 
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 & iValue) override;
141 
143  void
144  GenerateOutputInformation() override;
145 
146  void
147  EnlargeOutputRequestedRegion(DataObject * output) override;
148 
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
itk::FastMarchingExtensionImageFilterBase
Extend auxiliary variables smoothly using Fast Marching.
Definition: itkFastMarchingExtensionImageFilterBase.h:58
itk::FastMarchingExtensionImageFilterBase::OutputImageType
typename Superclass::OutputImageType OutputImageType
Definition: itkFastMarchingExtensionImageFilterBase.h:106
itk::Concept::HasNumericTraits
Definition: itkConceptChecking.h:712
itk::FastMarchingBase::NodePairContainerPointer
typename Traits::NodePairContainerPointer NodePairContainerPointer
Definition: itkFastMarchingBase.h:158
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::FastMarchingBase::NodePairType
typename Traits::NodePairType NodePairType
Definition: itkFastMarchingBase.h:156
itk::SmartPointer< Self >
itk::Indent
Control indentation during Print() invocation.
Definition: itkIndent.h:49
itk::FastMarchingExtensionImageFilterBase::m_AuxiliaryAliveValues
AuxValueContainerPointer m_AuxiliaryAliveValues
Definition: itkFastMarchingExtensionImageFilterBase.h:149
itk::FastMarchingExtensionImageFilterBase::InternalNodeStructure
typename Superclass::InternalNodeStructure InternalNodeStructure
Definition: itkFastMarchingExtensionImageFilterBase.h:108
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::FastMarchingExtensionImageFilterBase::m_AuxiliaryTrialValues
AuxValueContainerPointer m_AuxiliaryTrialValues
Definition: itkFastMarchingExtensionImageFilterBase.h:150
itk::FastMarchingTraits
Base class traits to be used by the FastMarchingBase.
Definition: itkFastMarchingTraits.h:110
itk::FastMarchingBase::NodePairContainerType
typename Traits::NodePairContainerType NodePairContainerType
Definition: itkFastMarchingBase.h:157
itk::FastMarchingBase::Superclass
typename FastMarchingTraits< TInput, TOutput >::SuperclassType Superclass
Definition: itkFastMarchingBase.h:135
itk::FastMarchingBase::NodePairContainerConstIterator
typename Traits::NodePairContainerConstIterator NodePairContainerConstIterator
Definition: itkFastMarchingBase.h:159
itk::FastMarchingBase::NodeType
typename Traits::NodeType NodeType
Definition: itkFastMarchingBase.h:153
itk::FastMarchingBase::OutputPixelType
typename Traits::OutputPixelType OutputPixelType
Definition: itkFastMarchingBase.h:150
itkVectorContainer.h
itk::FastMarchingExtensionImageFilterBase::AuxValueContainerConstIterator
typename AuxValueContainerType::ConstIterator AuxValueContainerConstIterator
Definition: itkFastMarchingExtensionImageFilterBase.h:88
itkConceptMacro
#define itkConceptMacro(name, concept)
Definition: itkConceptChecking.h:64
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:86
itk::VectorContainer::ConstIterator
Definition: itkVectorContainer.h:310
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::DataObject
Base class for all data objects in ITK.
Definition: itkDataObject.h:293