ITK  5.2.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  * 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 itkDiscreteLevelSetImage_h
20 #define itkDiscreteLevelSetImage_h
21 
22 #include "itkLevelSetImage.h"
23 
24 namespace itk
25 {
35 template <typename TOutput, unsigned int VDimension>
36 class ITK_TEMPLATE_EXPORT DiscreteLevelSetImage : public LevelSetImage<Index<VDimension>, VDimension, TOutput>
37 {
38 public:
39  ITK_DISALLOW_COPY_AND_ASSIGN(DiscreteLevelSetImage);
40 
42 
47 
49  itkTypeMacro(DiscreteLevelSetImage, LevelSetImage);
50 
51  static constexpr unsigned int Dimension = Superclass::Dimension;
52 
53  using InputType = typename Superclass::InputType;
54  using OutputType = typename Superclass::OutputType;
55  using OutputRealType = typename Superclass::OutputRealType;
56  using GradientType = typename Superclass::GradientType;
57  using HessianType = typename Superclass::HessianType;
58  using LevelSetDataType = 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 
120 protected:
121  DiscreteLevelSetImage() = default;
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 
137 private:
138 };
139 } // namespace itk
140 
141 #ifndef ITK_MANUAL_INSTANTIATION
142 # include "itkDiscreteLevelSetImage.hxx"
143 #endif
144 
145 #endif // itkDiscreteLevelSetImage_h
itk::Index
Represent a n-dimensional index in a n-dimensional image.
Definition: itkIndex.h:66
itk::LevelSetImage
Abstract class for a level-set function on one Image.
Definition: itkLevelSetImage.h:39
itk::DiscreteLevelSetImage< TImage::PixelType, TImage::ImageDimension >::HessianType
typename Superclass::HessianType HessianType
Definition: itkDiscreteLevelSetImage.h:57
itk::SmartPointer< Self >
itk::DiscreteLevelSetImage< TImage::PixelType, TImage::ImageDimension >::OutputRealType
typename Superclass::OutputRealType OutputRealType
Definition: itkDiscreteLevelSetImage.h:55
itk::DiscreteLevelSetImage< TImage::PixelType, TImage::ImageDimension >::InputType
typename Superclass::InputType InputType
Definition: itkDiscreteLevelSetImage.h:53
itk::DiscreteLevelSetImage< TImage::PixelType, TImage::ImageDimension >::OutputType
typename Superclass::OutputType OutputType
Definition: itkDiscreteLevelSetImage.h:54
itk::DiscreteLevelSetImage< TImage::PixelType, TImage::ImageDimension >::LevelSetDataType
typename Superclass::LevelSetDataType LevelSetDataType
Definition: itkDiscreteLevelSetImage.h:58
itk::DiscreteLevelSetImage
Abstract class for a level-set function on one Image.
Definition: itkDiscreteLevelSetImage.h:36
itk
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....
Definition: itkAnnulusOperator.h:24
itkLevelSetImage.h
itk::DiscreteLevelSetImage< TImage::PixelType, TImage::ImageDimension >::GradientType
typename Superclass::GradientType GradientType
Definition: itkDiscreteLevelSetImage.h:56
itk::Object
Base class for most ITK classes.
Definition: itkObject.h:62
itk::GTest::TypedefsAndConstructors::Dimension2::Dimension
constexpr unsigned int Dimension
Definition: itkGTestTypedefsAndConstructors.h:44
itk::DataObject
Base class for all data objects in ITK.
Definition: itkDataObject.h:293