ITK  4.13.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:
68  typedef typename Superclass::Traits Traits;
69 
71  itkNewMacro(Self);
72 
76 
78  itkStaticConstMacro(ImageDimension, unsigned int,
79  Superclass::ImageDimension );
80 
82  itkStaticConstMacro(AuxDimension, unsigned int, VAuxDimension);
83 
85  typedef TAuxValue AuxValueType;
88 
91 
94 
95 
97  typedef typename Superclass::NodeType NodeType;
98  typedef typename Superclass::NodePairType NodePairType;
99 
100 // typedef typename Superclass::NodeContainerType NodeContainerType;
101 // typedef typename Superclass::NodeContainerPointer NodeContainerPointer;
102 // typedef typename Superclass::NodeContainerConstIterator NodeContainerConstIterator;
103 
104  typedef typename Superclass::NodePairContainerType NodePairContainerType;
105  typedef typename Superclass::NodePairContainerPointer NodePairContainerPointer;
106  typedef typename Superclass::NodePairContainerConstIterator
108 
109  typedef typename Superclass::OutputImageType OutputImageType;
110  typedef typename Superclass::OutputPixelType OutputPixelType;
111  typedef typename Superclass::InternalNodeStructure 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:
136  void PrintSelf(std::ostream & os, Indent indent) const ITK_OVERRIDE;
137 
138  virtual void InitializeOutput(OutputImageType *) ITK_OVERRIDE;
139 
140  virtual void UpdateValue( OutputImageType* oImage, const NodeType& iValue ) ITK_OVERRIDE;
141 
143  virtual void GenerateOutputInformation() ITK_OVERRIDE;
144 
145  virtual void EnlargeOutputRequestedRegion(DataObject *output) ITK_OVERRIDE;
146 
147  AuxValueContainerPointer m_AuxiliaryAliveValues;
148  AuxValueContainerPointer m_AuxiliaryTrialValues;
149 
150 private:
151  ITK_DISALLOW_COPY_AND_ASSIGN(FastMarchingExtensionImageFilterBase);
152  AuxImageType * m_AuxImages[VAuxDimension];
153 };
154 } // namespace itk
155 
156 #ifndef ITK_MANUAL_INSTANTIATION
157 #include "itkFastMarchingExtensionImageFilterBase.hxx"
158 #endif
159 
160 #endif
Apply the Fast Marching method to solve an Eikonal equation on an image.
AuxValueContainerType::ConstIterator AuxValueContainerConstIterator
FastMarchingImageFilterBase< TInput, TOutput > Superclass
VectorContainer< IdentifierType, AuxValueVectorType > AuxValueContainerType
Abstract class to solve an Eikonal based-equation using Fast Marching Method.
A templated class holding a n-Dimensional vector.
Definition: itkVector.h:62
Superclass::NodePairContainerConstIterator NodePairContainerConstIterator
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
#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.