ITK  6.0.0
Insight Toolkit
itkMalcolmSparseLevelSetImage.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
19#ifndef itkMalcolmSparseLevelSetImage_h
20#define itkMalcolmSparseLevelSetImage_h
21
22#include "itkImage.h"
24
25#include "itkLabelObject.h"
26#include "itkLabelMap.h"
27
28namespace itk
29{
40template <unsigned int VDimension>
41class ITK_TEMPLATE_EXPORT MalcolmSparseLevelSetImage : public LevelSetSparseImage<int8_t, VDimension>
42{
43public:
44 ITK_DISALLOW_COPY_AND_MOVE(MalcolmSparseLevelSetImage);
45
50
52 itkNewMacro(Self);
53
55 itkOverrideGetNameOfClassMacro(MalcolmSparseLevelSetImage);
56
57 static constexpr unsigned int Dimension = VDimension;
58
59 using typename Superclass::InputType;
60 using typename Superclass::OutputType;
61 using typename Superclass::OutputRealType;
62 using typename Superclass::GradientType;
63 using typename Superclass::HessianType;
64 using typename Superclass::LevelSetDataType;
65
66 using typename Superclass::LayerIdType;
67 using typename Superclass::LabelObjectType;
68 using typename Superclass::LabelObjectPointer;
69 using typename Superclass::LabelObjectLengthType;
70 using typename Superclass::LabelObjectLineType;
71
72 using typename Superclass::LabelMapType;
73 using typename Superclass::LabelMapPointer;
74 using typename Superclass::RegionType;
75
76 using typename Superclass::LayerType;
77 using typename Superclass::LayerIterator;
78 using typename Superclass::LayerConstIterator;
79
80 using typename Superclass::LayerMapType;
81 using typename Superclass::LayerMapIterator;
82 using typename Superclass::LayerMapConstIterator;
83
85 using Superclass::Evaluate;
87 Evaluate(const InputType & inputPixel) const override;
88
91 EvaluateHessian(const InputType & inputPixel) const override;
92
95 EvaluateLaplacian(const InputType & inputPixel) const override;
96
99 EvaluateMeanCurvature(const InputType & inputPixel) const override;
100
101 void
102 EvaluateHessian(const InputType & inputPixel, LevelSetDataType & data) const override;
103 void
104 EvaluateLaplacian(const InputType & inputPixel, LevelSetDataType & data) const override;
105 void
106 EvaluateMeanCurvature(const InputType & inputPixel, LevelSetDataType & data) const override;
107
108 static inline LayerIdType
110 {
111 return -1;
112 }
113 static inline LayerIdType
115 {
116 return 0;
117 }
118 static inline LayerIdType
120 {
121 return 1;
122 }
123
124protected:
126
127 ~MalcolmSparseLevelSetImage() override = default;
128
130 void
132
133 void
135};
136} // namespace itk
137#ifndef ITK_MANUAL_INSTANTIATION
138# include "itkMalcolmSparseLevelSetImage.hxx"
139#endif
140
141#endif // itkMalcolmSparseLevelSetImage_h
Base class for all data objects in ITK.
Base class for the sparse representation of a level-set function on one Image.
Derived class for the Malcolm representation of level-set function.
void EvaluateLaplacian(const InputType &inputPixel, LevelSetDataType &data) const override
OutputRealType EvaluateMeanCurvature(const InputType &inputPixel) const override
OutputType Evaluate(const InputType &inputPixel) const override
HessianType EvaluateHessian(const InputType &inputPixel) const override
~MalcolmSparseLevelSetImage() override=default
void InitializeInternalLabelList() override
void EvaluateMeanCurvature(const InputType &inputPixel, LevelSetDataType &data) const override
void EvaluateHessian(const InputType &inputPixel, LevelSetDataType &data) const override
OutputRealType EvaluateLaplacian(const InputType &inputPixel) const override
A templated class holding a M x N size Matrix.
Definition: itkMatrix.h:53
Base class for most ITK classes.
Definition: itkObject.h:62
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....