18 #ifndef sitkScalarChanAndVeseDenseLevelSetImageFilter_h
19 #define sitkScalarChanAndVeseDenseLevelSetImageFilter_h
76 SITK_RETURN_SELF_TYPE_HEADER
SetMaximumRMSError (
double MaximumRMSError ) { this->m_MaximumRMSError = MaximumRMSError;
return *
this; }
84 SITK_RETURN_SELF_TYPE_HEADER
SetNumberOfIterations ( uint32_t NumberOfIterations ) { this->m_NumberOfIterations = NumberOfIterations;
return *
this; }
92 SITK_RETURN_SELF_TYPE_HEADER
SetLambda1 (
double Lambda1 ) { this->m_Lambda1 = Lambda1;
return *
this; }
100 SITK_RETURN_SELF_TYPE_HEADER
SetLambda2 (
double Lambda2 ) { this->m_Lambda2 = Lambda2;
return *
this; }
108 SITK_RETURN_SELF_TYPE_HEADER
SetEpsilon (
double Epsilon ) { this->m_Epsilon = Epsilon;
return *
this; }
116 SITK_RETURN_SELF_TYPE_HEADER
SetCurvatureWeight (
double CurvatureWeight ) { this->m_CurvatureWeight = CurvatureWeight;
return *
this; }
124 SITK_RETURN_SELF_TYPE_HEADER
SetAreaWeight (
double AreaWeight ) { this->m_AreaWeight = AreaWeight;
return *
this; }
132 SITK_RETURN_SELF_TYPE_HEADER
SetReinitializationSmoothingWeight (
double ReinitializationSmoothingWeight ) { this->m_ReinitializationSmoothingWeight = ReinitializationSmoothingWeight;
return *
this; }
140 SITK_RETURN_SELF_TYPE_HEADER
SetVolume (
double Volume ) { this->m_Volume = Volume;
return *
this; }
148 SITK_RETURN_SELF_TYPE_HEADER
SetVolumeMatchingWeight (
double VolumeMatchingWeight ) { this->m_VolumeMatchingWeight = VolumeMatchingWeight;
return *
this; }
168 SITK_RETURN_SELF_TYPE_HEADER
SetUseImageSpacing (
bool UseImageSpacing ) { this->m_UseImageSpacing = UseImageSpacing;
return *
this; }
197 std::string
GetName()
const {
return std::string (
"ScalarChanAndVeseDenseLevelSetImageFilter"); }
200 std::string ToString()
const;
205 Image Execute (
const Image & initialImage,
const Image & featureImage );
212 template <
class TImageType>
Image ExecuteInternal (
const Image * initialImage,
const Image * featureImage );
221 double m_MaximumRMSError{0.02};
224 uint32_t m_NumberOfIterations{1000u};
227 double m_Lambda1{1.0};
230 double m_Lambda2{1.0};
233 double m_Epsilon{1.0};
236 double m_CurvatureWeight{1.0};
239 double m_AreaWeight{0.0};
242 double m_ReinitializationSmoothingWeight{0.0};
245 double m_Volume{0.0};
248 double m_VolumeMatchingWeight{0.0};
253 bool m_UseImageSpacing{
true};
256 uint32_t m_ElapsedIterations{0};
258 double m_RMSChange{0.0};
273 SITKBasicFilters_EXPORT Image ScalarChanAndVeseDenseLevelSet (
const Image & initialImage,
const Image & featureImage,
double maximumRMSError = 0.02, uint32_t numberOfIterations = 1000u,
double lambda1 = 1.0,
double lambda2 = 1.0,
double epsilon = 1.0,
double curvatureWeight = 1.0,
double areaWeight = 0.0,
double reinitializationSmoothingWeight = 0.0,
double volume = 0.0,
double volumeMatchingWeight = 0.0,
ScalarChanAndVeseDenseLevelSetImageFilter::HeavisideStepFunctionType heavisideStepFunction =
itk::simple::ScalarChanAndVeseDenseLevelSetImageFilter::AtanRegularizedHeaviside,
bool useImageSpacing =
true );