ITK 6.0.0
Insight Toolkit
 
Loading...
Searching...
No Matches
itkCurvesLevelSetFunction.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#ifndef itkCurvesLevelSetFunction_h
19#define itkCurvesLevelSetFunction_h
20
22
23namespace itk
24{
59template <typename TImageType, typename TFeatureImageType = TImageType>
60class ITK_TEMPLATE_EXPORT CurvesLevelSetFunction : public SegmentationLevelSetFunction<TImageType, TFeatureImageType>
61{
62public:
63 ITK_DISALLOW_COPY_AND_MOVE(CurvesLevelSetFunction);
64
71 using FeatureImageType = TFeatureImageType;
72
74 itkNewMacro(Self);
75
77 itkOverrideGetNameOfClassMacro(CurvesLevelSetFunction);
78
81 using typename Superclass::ImageType;
82 using typename Superclass::NeighborhoodType;
83 using typename Superclass::ScalarValueType;
84 using typename Superclass::FeatureScalarType;
85 using typename Superclass::RadiusType;
88 using typename Superclass::VectorImageType;
89
91 static constexpr unsigned int ImageDimension = Superclass::ImageDimension;
92
94 void
96
98 void
100
103 CurvatureSpeed(const NeighborhoodType & neighborhood,
104 const FloatOffsetType & offset,
105 GlobalDataStruct * gd) const override
106 {
107 return this->PropagationSpeed(neighborhood, offset, gd);
108 }
109
112 void
113 SetDerivativeSigma(const double v)
114 {
116 }
117 double
119 {
120 return m_DerivativeSigma;
121 }
122
123
124 void
125 Initialize(const RadiusType & r) override;
126
127protected:
137
138 ~CurvesLevelSetFunction() override = default;
139
140 void
141 PrintSelf(std::ostream & os, Indent indent) const override
142 {
143 Superclass::PrintSelf(os, indent);
144 os << indent << "DerivativeSigma: " << m_DerivativeSigma << std::endl;
145 }
146
147private:
150
153
156
157 double m_DerivativeSigma{ 1.0 };
158};
159} // end namespace itk
160
161#ifndef ITK_MANUAL_INSTANTIATION
162# include "itkCurvesLevelSetFunction.hxx"
163#endif
164
165#endif
SmartPointer< const Self > ConstPointer
void CalculateAdvectionImage() override
LevelSetFunction< TImageType > SuperSuperclass
SegmentationLevelSetFunction< TImageType, TFeatureImageType > Superclass
~CurvesLevelSetFunction() override=default
typename SuperSuperclass::GlobalDataStruct GlobalDataStruct
void Initialize(const RadiusType &r) override
ScalarValueType CurvatureSpeed(const NeighborhoodType &neighborhood, const FloatOffsetType &offset, GlobalDataStruct *gd) const override
void PrintSelf(std::ostream &os, Indent indent) const override
void CalculateSpeedImage() override
typename SuperSuperclass::FloatOffsetType FloatOffsetType
typename SuperSuperclass::PixelType PixelType
Control indentation during Print() invocation.
Definition itkIndent.h:50
The LevelSetFunction class is a generic function object which can be used to create a level set metho...
virtual void SetAdvectionWeight(const ScalarValueType a)
Vector< float, Self::ImageDimension > FloatOffsetType
typename ImageType::PixelType PixelType
virtual void SetPropagationWeight(const ScalarValueType p)
virtual void SetCurvatureWeight(const ScalarValueType c)
virtual void PrintSelf(std::ostream &os, Indent indent) const
ConstNeighborhoodIterator< TImageType, DefaultBoundaryConditionType > NeighborhoodType
ScalarValueType PropagationSpeed(const NeighborhoodType &, const FloatOffsetType &, GlobalDataStruct *gd) const override
typename ConstNeighborhoodIterator< TImageType >::RadiusType RadiusType
Implements transparent reference counting.
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....
long OffsetValueType
Definition itkIntTypes.h:97