ITK  5.0.0
Insight Segmentation and Registration Toolkit
itkFastMarchingExtensionImageFilterBase.h
Go to the documentation of this file.
1 /*=========================================================================
2  *
3  * Copyright Insight Software Consortium
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 {
56 template< typename TInput, typename TOutput,
57  typename TAuxValue,
58  unsigned int VAuxDimension >
59 class ITK_TEMPLATE_EXPORT FastMarchingExtensionImageFilterBase:
60  public FastMarchingImageFilterBase< TInput, TOutput >
61 {
62 public:
63  ITK_DISALLOW_COPY_AND_ASSIGN(FastMarchingExtensionImageFilterBase);
64 
70  using Traits = typename Superclass::Traits;
71 
73  itkNewMacro(Self);
74 
78 
80  static constexpr unsigned int ImageDimension = Superclass::ImageDimension;
81 
83  static constexpr unsigned int AuxDimension = VAuxDimension;
84 
86  using AuxValueType = TAuxValue;
89 
92 
95 
96 
98  using NodeType = typename Superclass::NodeType;
99  using NodePairType = typename Superclass::NodePairType;
100 
101 // using NodeContainerType = typename Superclass::NodeContainerType;
102 // using NodeContainerPointer = typename Superclass::NodeContainerPointer;
103 // using NodeContainerConstIterator = typename Superclass::NodeContainerConstIterator;
104 
105  using NodePairContainerType = typename Superclass::NodePairContainerType;
106  using NodePairContainerPointer = typename Superclass::NodePairContainerPointer;
107  using NodePairContainerConstIterator = typename Superclass::NodePairContainerConstIterator;
108 
109  using OutputImageType = typename Superclass::OutputImageType;
110  using OutputPixelType = typename Superclass::OutputPixelType;
111  using InternalNodeStructure = typename Superclass::InternalNodeStructure;
112 
114  AuxImageType * GetAuxiliaryImage( const unsigned int& idx );
115 
117  itkSetObjectMacro(AuxiliaryAliveValues, AuxValueContainerType );
118  itkGetModifiableObjectMacro(AuxiliaryAliveValues, AuxValueContainerType );
120 
122  itkSetObjectMacro(AuxiliaryTrialValues, AuxValueContainerType );
123  itkGetModifiableObjectMacro(AuxiliaryTrialValues, AuxValueContainerType );
125 
126 #ifdef ITK_USE_CONCEPT_CHECKING
127  // Begin concept checking
128  itkConceptMacro( AuxValueHasNumericTraitsCheck,
130  // End concept checking
131 #endif
132 
133 protected:
135  ~FastMarchingExtensionImageFilterBase() override = default;
136  void PrintSelf(std::ostream & os, Indent indent) const override;
137 
138  void InitializeOutput(OutputImageType *) override;
139 
140  void UpdateValue( OutputImageType* oImage, const NodeType& iValue ) override;
141 
143  void GenerateOutputInformation() override;
144 
145  void EnlargeOutputRequestedRegion(DataObject *output) override;
146 
149 
150 private:
151  AuxImageType * m_AuxImages[VAuxDimension];
152 };
153 } // namespace itk
154 
155 #ifndef ITK_MANUAL_INSTANTIATION
156 #include "itkFastMarchingExtensionImageFilterBase.hxx"
157 #endif
158 
159 #endif
typename Traits::NodeType NodeType
typename Traits::NodePairContainerConstIterator NodePairContainerConstIterator
Apply the Fast Marching method to solve an Eikonal equation on an image.
typename Traits::OutputPixelType OutputPixelType
typename Traits::NodePairType NodePairType
typename AuxValueContainerType::ConstIterator AuxValueContainerConstIterator
Abstract class to solve an Eikonal based-equation using Fast Marching Method.
typename FastMarchingTraits< TInput, TOutput >::SuperclassType Superclass
A templated class holding a n-Dimensional vector.
Definition: itkVector.h:62
typename Traits::NodePairContainerType NodePairContainerType
typename AuxValueContainerType::Pointer AuxValueContainerPointer
Define a front-end to the STL &quot;vector&quot; container that conforms to the IndexedContainerInterface.
Control indentation during Print() invocation.
Definition: itkIndent.h:49
typename Superclass::InternalNodeStructure InternalNodeStructure
Base class traits to be used by the FastMarchingBase.
#define itkConceptMacro(name, concept)
Base class for all data objects in ITK.
Templated n-dimensional image class.
Definition: itkImage.h:75
Extend auxiliary variables smoothly using Fast Marching.
typename Traits::NodePairContainerPointer NodePairContainerPointer