ITK  6.0.0
Insight Toolkit
itkDiscreteLevelSetImage.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 itkDiscreteLevelSetImage_h
20#define itkDiscreteLevelSetImage_h
21
22#include "itkLevelSetImage.h"
23
24namespace itk
25{
35template <typename TOutput, unsigned int VDimension>
36class ITK_TEMPLATE_EXPORT DiscreteLevelSetImage : public LevelSetImage<Index<VDimension>, VDimension, TOutput>
37{
38public:
39 ITK_DISALLOW_COPY_AND_MOVE(DiscreteLevelSetImage);
40
42
47
49 itkOverrideGetNameOfClassMacro(DiscreteLevelSetImage);
50
51 static constexpr unsigned int Dimension = Superclass::Dimension;
52
53 using typename Superclass::InputType;
54 using typename Superclass::OutputType;
55 using typename Superclass::OutputRealType;
56 using typename Superclass::GradientType;
57 using typename Superclass::HessianType;
58 using typename Superclass::LevelSetDataType;
59
62 Evaluate(const InputType & inputIndex) const override = 0;
63
66 EvaluateGradient(const InputType & inputIndex) const override;
67
70 EvaluateHessian(const InputType & inputIndex) const override;
71
74 EvaluateLaplacian(const InputType & inputIndex) const override;
75
78 EvaluateMeanCurvature(const InputType & inputIndex) const override;
79
80 virtual GradientType
81 EvaluateForwardGradient(const InputType & inputIndex) const;
82
83 virtual GradientType
84 EvaluateBackwardGradient(const InputType & inputIndex) const;
85
87 void
88 Evaluate(const InputType & inputIndex, LevelSetDataType & data) const override;
89
92 void
93 EvaluateGradient(const InputType & inputIndex, LevelSetDataType & data) const override;
94
97 void
98 EvaluateHessian(const InputType & inputIndex, LevelSetDataType & data) const override;
99
102 void
103 EvaluateMeanCurvature(const InputType & inputIndex, LevelSetDataType & data) const override;
104
107 void
108 EvaluateLaplacian(const InputType & inputIndex, LevelSetDataType & data) const override;
109
112 void
113 EvaluateForwardGradient(const InputType & inputIndex, LevelSetDataType & data) const override;
114
117 void
118 EvaluateBackwardGradient(const InputType & inputIndex, LevelSetDataType & data) const override;
119
120protected:
122
123 ~DiscreteLevelSetImage() override = default;
124
126 void
127 Initialize() override;
128
130 void
131 CopyInformation(const DataObject * data) override;
132
134 void
135 Graft(const DataObject * data) override;
136
137private:
138};
139} // namespace itk
140
141#ifndef ITK_MANUAL_INSTANTIATION
142# include "itkDiscreteLevelSetImage.hxx"
143#endif
144
145#endif // itkDiscreteLevelSetImage_h
A templated class holding a n-Dimensional covariant vector.
Base class for all data objects in ITK.
Abstract class for a level-set function on one Image.
GradientType EvaluateGradient(const InputType &inputIndex) const override
OutputRealType EvaluateMeanCurvature(const InputType &inputIndex) const override
void EvaluateLaplacian(const InputType &inputIndex, LevelSetDataType &data) const override
void EvaluateBackwardGradient(const InputType &inputIndex, LevelSetDataType &data) const override
virtual GradientType EvaluateForwardGradient(const InputType &inputIndex) const
void Evaluate(const InputType &inputIndex, LevelSetDataType &data) const override
void EvaluateGradient(const InputType &inputIndex, LevelSetDataType &data) const override
OutputRealType EvaluateLaplacian(const InputType &inputIndex) const override
~DiscreteLevelSetImage() override=default
void CopyInformation(const DataObject *data) override
void Graft(const DataObject *data) override
void EvaluateMeanCurvature(const InputType &inputIndex, LevelSetDataType &data) const override
virtual GradientType EvaluateBackwardGradient(const InputType &inputIndex) const
void Initialize() override
OutputType Evaluate(const InputType &inputIndex) const override=0
void EvaluateForwardGradient(const InputType &inputIndex, LevelSetDataType &data) const override
HessianType EvaluateHessian(const InputType &inputIndex) const override
void EvaluateHessian(const InputType &inputIndex, LevelSetDataType &data) const override
Abstract class for a level-set function on one Image.
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....