18 #ifndef sitkScalarChanAndVeseDenseLevelSetImageFilter_h
19 #define sitkScalarChanAndVeseDenseLevelSetImageFilter_h
72 SITK_RETURN_SELF_TYPE_HEADER
SetMaximumRMSError (
double MaximumRMSError ) { this->m_MaximumRMSError = MaximumRMSError;
return *
this; }
80 SITK_RETURN_SELF_TYPE_HEADER
SetNumberOfIterations ( uint32_t NumberOfIterations ) { this->m_NumberOfIterations = NumberOfIterations;
return *
this; }
88 SITK_RETURN_SELF_TYPE_HEADER
SetLambda1 (
double Lambda1 ) { this->m_Lambda1 = Lambda1;
return *
this; }
96 SITK_RETURN_SELF_TYPE_HEADER
SetLambda2 (
double Lambda2 ) { this->m_Lambda2 = Lambda2;
return *
this; }
104 SITK_RETURN_SELF_TYPE_HEADER
SetEpsilon (
double Epsilon ) { this->m_Epsilon = Epsilon;
return *
this; }
112 SITK_RETURN_SELF_TYPE_HEADER
SetCurvatureWeight (
double CurvatureWeight ) { this->m_CurvatureWeight = CurvatureWeight;
return *
this; }
120 SITK_RETURN_SELF_TYPE_HEADER
SetAreaWeight (
double AreaWeight ) { this->m_AreaWeight = AreaWeight;
return *
this; }
128 SITK_RETURN_SELF_TYPE_HEADER
SetReinitializationSmoothingWeight (
double ReinitializationSmoothingWeight ) { this->m_ReinitializationSmoothingWeight = ReinitializationSmoothingWeight;
return *
this; }
136 SITK_RETURN_SELF_TYPE_HEADER
SetVolume (
double Volume ) { this->m_Volume = Volume;
return *
this; }
144 SITK_RETURN_SELF_TYPE_HEADER
SetVolumeMatchingWeight (
double VolumeMatchingWeight ) { this->m_VolumeMatchingWeight = VolumeMatchingWeight;
return *
this; }
164 SITK_RETURN_SELF_TYPE_HEADER
SetUseImageSpacing (
bool UseImageSpacing ) { this->m_UseImageSpacing = UseImageSpacing;
return *
this; }
193 std::string
GetName()
const {
return std::string (
"ScalarChanAndVeseDenseLevelSetImageFilter"); }
196 std::string ToString()
const;
201 Image Execute (
const Image & initialImage,
const Image & featureImage );
208 template <
class TImageType>
Image ExecuteInternal (
const Image * initialImage,
const Image * featureImage );
217 double m_MaximumRMSError{0.02};
220 uint32_t m_NumberOfIterations{1000u};
223 double m_Lambda1{1.0};
226 double m_Lambda2{1.0};
229 double m_Epsilon{1.0};
232 double m_CurvatureWeight{1.0};
235 double m_AreaWeight{0.0};
238 double m_ReinitializationSmoothingWeight{0.0};
241 double m_Volume{0.0};
244 double m_VolumeMatchingWeight{0.0};
249 bool m_UseImageSpacing{
true};
252 uint32_t m_ElapsedIterations{0};
254 double m_RMSChange{0.0};
269 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 );