18 #ifndef sitkScalarChanAndVeseDenseLevelSetImageFilter_h
19 #define sitkScalarChanAndVeseDenseLevelSetImageFilter_h
78 SITK_RETURN_SELF_TYPE_HEADER
SetMaximumRMSError (
double MaximumRMSError ) { this->m_MaximumRMSError = MaximumRMSError;
return *
this; }
94 SITK_RETURN_SELF_TYPE_HEADER
SetLambda1 (
double Lambda1 ) { this->m_Lambda1 = Lambda1;
return *
this; }
102 SITK_RETURN_SELF_TYPE_HEADER
SetLambda2 (
double Lambda2 ) { this->m_Lambda2 = Lambda2;
return *
this; }
110 SITK_RETURN_SELF_TYPE_HEADER
SetEpsilon (
double Epsilon ) { this->m_Epsilon = Epsilon;
return *
this; }
118 SITK_RETURN_SELF_TYPE_HEADER
SetCurvatureWeight (
double CurvatureWeight ) { this->m_CurvatureWeight = CurvatureWeight;
return *
this; }
126 SITK_RETURN_SELF_TYPE_HEADER
SetAreaWeight (
double AreaWeight ) { this->m_AreaWeight = AreaWeight;
return *
this; }
134 SITK_RETURN_SELF_TYPE_HEADER
SetReinitializationSmoothingWeight (
double ReinitializationSmoothingWeight ) { this->m_ReinitializationSmoothingWeight = ReinitializationSmoothingWeight;
return *
this; }
142 SITK_RETURN_SELF_TYPE_HEADER
SetVolume (
double Volume ) { this->m_Volume = Volume;
return *
this; }
150 SITK_RETURN_SELF_TYPE_HEADER
SetVolumeMatchingWeight (
double VolumeMatchingWeight ) { this->m_VolumeMatchingWeight = VolumeMatchingWeight;
return *
this; }
170 SITK_RETURN_SELF_TYPE_HEADER
SetUseImageSpacing (
bool UseImageSpacing ) { this->m_UseImageSpacing = UseImageSpacing;
return *
this; }
198 std::string
GetName()
const {
return std::string (
"ScalarChanAndVeseDenseLevelSetImageFilter"); }
201 std::string ToString()
const;
209 Image Execute (
const Image& image1,
const Image& image2,
double maximumRMSError,
uint32_t numberOfIterations,
double lambda1,
double lambda2,
double epsilon,
double curvatureWeight,
double areaWeight,
double reinitializationSmoothingWeight,
double volume,
double volumeMatchingWeight,
ScalarChanAndVeseDenseLevelSetImageFilter::HeavisideStepFunctionType heavisideStepFunction,
bool useImageSpacing );
215 typedef Image (Self::*MemberFunctionType)(
const Image& image1,
const Image& image2 );
216 template <
class TImageType>
Image ExecuteInternal (
const Image& image1,
const Image& image2 );
263 SITKBasicFilters_EXPORT Image ScalarChanAndVeseDenseLevelSet (
const Image& image1,
const Image& image2,
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 );
uint32_t GetElapsedIterations() const
Number of iterations run.
Self & UseImageSpacingOn()
Self & SetLambda2(double Lambda2)
double GetReinitializationSmoothingWeight() const
#define SITKBasicFilters_EXPORT
ScalarChanAndVeseDenseLevelSetImageFilter Self
Self & SetHeavisideStepFunction(HeavisideStepFunctionType HeavisideStepFunction)
Self & SetCurvatureWeight(double CurvatureWeight)
HeavisideStepFunctionType m_HeavisideStepFunction
Self & SetReinitializationSmoothingWeight(double ReinitializationSmoothingWeight)
HeavisideStepFunctionType GetHeavisideStepFunction() const
double GetRMSChange() const
The Root Mean Square of the levelset upon termination.
typelist::MakeTypeList< BasicPixelID< float >, BasicPixelID< double > >::Type RealPixelIDTypeList
HeavisideStepFunctionType
double GetLambda1() const
Self & SetMaximumRMSError(double MaximumRMSError)
Dense implementation of the Chan and Vese multiphase level set image filter.
Self & SetVolume(double Volume)
uint32_t m_ElapsedIterations
std::string GetName() const
Self & SetEpsilon(double Epsilon)
double GetVolumeMatchingWeight() const
Self & SetAreaWeight(double AreaWeight)
double m_ReinitializationSmoothingWeight
Self & SetLambda1(double Lambda1)
RealPixelIDTypeList PixelIDTypeList
uint32_t GetNumberOfIterations() const
double GetCurvatureWeight() const
uint32_t m_NumberOfIterations
bool GetUseImageSpacing() const
Self & UseImageSpacingOff()
double GetLambda2() const
The Image class for SimpleITK.
nsstd::auto_ptr< detail::MemberFunctionFactory< MemberFunctionType > > m_MemberFactory
Self & SetVolumeMatchingWeight(double VolumeMatchingWeight)
Image ScalarChanAndVeseDenseLevelSet(const Image &image1, const Image &image2, 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)
Dense implementation of the Chan and Vese multiphase level set image filter.
double GetAreaWeight() const
double m_VolumeMatchingWeight
Self & SetUseImageSpacing(bool UseImageSpacing)
double GetEpsilon() const
The base interface for SimpleITK filters that take one input image.
Self & SetNumberOfIterations(uint32_t NumberOfIterations)
double GetMaximumRMSError() const