ITK  6.0.0
Insight Toolkit
itkGeodesicActiveContourShapePriorLevelSetFunction.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 itkGeodesicActiveContourShapePriorLevelSetFunction_h
19#define itkGeodesicActiveContourShapePriorLevelSetFunction_h
20
22
23namespace itk
24{
92template <typename TImageType, typename TFeatureImageType = TImageType>
94 : public ShapePriorSegmentationLevelSetFunction<TImageType, TFeatureImageType>
95{
96public:
97 ITK_DISALLOW_COPY_AND_MOVE(GeodesicActiveContourShapePriorLevelSetFunction);
98
104 using FeatureImageType = TFeatureImageType;
105
107 itkNewMacro(Self);
108
110 itkOverrideGetNameOfClassMacro(GeodesicActiveContourShapePriorLevelSetFunction);
111
113 using typename Superclass::ImageType;
114 using typename Superclass::NeighborhoodType;
115 using typename Superclass::ScalarValueType;
116 using typename Superclass::FeatureScalarType;
117 using typename Superclass::RadiusType;
118 using typename Superclass::FloatOffsetType;
119 using typename Superclass::VectorImageType;
120 using typename Superclass::GlobalDataStruct;
121
123 static constexpr unsigned int ImageDimension = Superclass::ImageDimension;
124
126 void
128
130 void
132
135 CurvatureSpeed(const NeighborhoodType & neighborhood,
136 const FloatOffsetType & offset,
137 GlobalDataStruct * gd) const override
138 {
139 return this->PropagationSpeed(neighborhood, offset, gd);
140 }
141
144 void
145 SetDerivativeSigma(const double v)
146 {
147 m_DerivativeSigma = v;
148 }
149 double
151 {
152 return m_DerivativeSigma;
153 }
156 void
157 Initialize(const RadiusType & r) override
158 {
159 Superclass::Initialize(r);
160
161 this->SetAdvectionWeight(NumericTraits<ScalarValueType>::OneValue());
162 this->SetPropagationWeight(NumericTraits<ScalarValueType>::OneValue());
163 this->SetCurvatureWeight(NumericTraits<ScalarValueType>::OneValue());
164 this->SetShapePriorWeight(NumericTraits<ScalarValueType>::OneValue());
165 }
166
167protected:
169 {
170 this->SetAdvectionWeight(NumericTraits<ScalarValueType>::OneValue());
171 this->SetPropagationWeight(NumericTraits<ScalarValueType>::OneValue());
172 this->SetCurvatureWeight(NumericTraits<ScalarValueType>::OneValue());
173 this->SetShapePriorWeight(NumericTraits<ScalarValueType>::OneValue());
174
175 m_DerivativeSigma = 1.0;
176 }
177
179
180 void
181 PrintSelf(std::ostream & os, Indent indent) const override;
182
183private:
184 double m_DerivativeSigma{};
185};
186} // end namespace itk
187
188#ifndef ITK_MANUAL_INSTANTIATION
189# include "itkGeodesicActiveContourShapePriorLevelSetFunction.hxx"
190#endif
191
192#endif
Const version of NeighborhoodIterator, defining iteration of a local N-dimensional neighborhood of pi...
typename ConstNeighborhoodIterator< TImageType >::RadiusType RadiusType
This function is used in GeodesicActiveContourShapePriorSegmentationLevelSetFilter to segment structu...
void PrintSelf(std::ostream &os, Indent indent) const override
ScalarValueType CurvatureSpeed(const NeighborhoodType &neighborhood, const FloatOffsetType &offset, GlobalDataStruct *gd) const override
Control indentation during Print() invocation.
Definition: itkIndent.h:50
Light weight base class for most itk classes.
Define additional traits for native types such as int or float.
This function is used in ShapePriorSegmentationLevelSetFilter to segment structures in an image based...
A templated class holding a n-Dimensional vector.
Definition: itkVector.h:63
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes....