ITK  5.0.0
Insight Segmentation and Registration Toolkit
itkFastMarchingTraits.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 
19 #ifndef itkFastMarchingTraits_h
20 #define itkFastMarchingTraits_h
21 
22 #include "itkIntTypes.h"
23 #include "itkVectorContainer.h"
24 #include "itkConceptChecking.h"
25 #include "itkImage.h"
26 #include "itkQuadEdgeMesh.h"
28 #include "itkImageToImageFilter.h"
29 #include "itkNodePair.h"
30 
31 namespace itk
32 {
45 template< typename TInputDomain,
46  typename TNode,
47  typename TOutputDomain,
48  typename TSuperclass >
50  {
51 public:
53  using InputDomainType = TInputDomain;
56 
58  using NodeType = TNode;
59 
61  using OutputDomainType = TOutputDomain;
64 
70 
71  /*
72  using NodeContainerType = VectorContainer< IdentifierType, NodeType >;
73  using NodeContainerPointer = typename NodeContainerType::Pointer;
74  using NodeContainerIterator = typename NodeContainerType::Iterator;
75  using NodeContainerConstIterator = typename NodeContainerType::ConstIterator;
76  */
77 
78  using SuperclassType = TSuperclass;
79 
81  enum LabelType {
82 
84  Far = 0,
85 
88 
91 
94 
97 
101 
102 #ifdef ITK_USE_CONCEPT_CHECKING
103  itkConceptMacro( DoubleConvertibleOutputCheck,
105 
106  itkConceptMacro( OutputOStreamWritableCheck,
108 #endif
109  };
110 
111 
112 template< typename TInput, typename TOutput >
114 {
115 };
116 
117 template<unsigned int VDimension,
118  typename TInputPixel,
119  typename TOutputPixel > // = TInputPixel >
120 class FastMarchingTraits<Image<TInputPixel, VDimension>, Image<TOutputPixel, VDimension> > :
121  public FastMarchingTraitsBase<
122  Image< TInputPixel, VDimension >,
123  Index< VDimension >,
124  Image< TOutputPixel, VDimension >,
125  ImageToImageFilter< Image< TInputPixel, VDimension >,
126  Image< TOutputPixel, VDimension > >
127  >
128  {
129 public:
130  static constexpr unsigned int ImageDimension = VDimension;
131  };
132 
133 
134 template< unsigned int VDimension,
135  typename TInputPixel,
136  typename TInputMeshTraits, //= QuadEdgeMeshTraits< TInputPixel, VDimension, bool, bool >,
137  typename TOutputPixel, //= TInputPixel,
138  class TOutputMeshTraits //= QuadEdgeMeshTraits< TOutputPixel, VDimension, bool, bool >
139  >
140 class FastMarchingTraits<QuadEdgeMesh< TInputPixel, VDimension, TInputMeshTraits >, QuadEdgeMesh< TOutputPixel, VDimension, TOutputMeshTraits > > :
141  public FastMarchingTraitsBase<
142  QuadEdgeMesh< TInputPixel, VDimension, TInputMeshTraits >,
143  typename TInputMeshTraits::PointIdentifier,
144  QuadEdgeMesh< TOutputPixel, VDimension, TOutputMeshTraits >,
145  QuadEdgeMeshToQuadEdgeMeshFilter<
146  QuadEdgeMesh< TInputPixel, VDimension, TInputMeshTraits >,
147  QuadEdgeMesh< TOutputPixel, VDimension, TOutputMeshTraits > >
148  >
149  {
150 public:
151  static constexpr unsigned int PointDimension = VDimension;
152  };
153 
154 }
155 #endif // itkFastMarchingTraits_h
Represents a Node and its associated value (front value)
Definition: itkNodePair.h:33
TPixel PixelType
Definition: itkImage.h:95
Represent a n-dimensional index in a n-dimensional image.
Definition: itkIndex.h:66
SmartPointer< Self > Pointer
Mesh class for 2D manifolds embedded in ND space.
Base class for filters that take an image as input and produce an image as output.
Define a front-end to the STL &quot;vector&quot; container that conforms to the IndexedContainerInterface.
Base class traits to be used by the FastMarchingBase.
#define itkConceptMacro(name, concept)
Templated n-dimensional image class.
Definition: itkImage.h:75