18 #ifndef itkRegionBasedLevelSetFunction_h 19 #define itkRegionBasedLevelSetFunction_h 23 #include "vnl/vnl_matrix_fixed.h" 64 template<
typename TInput,
66 typename TSharedData >
174 #if !defined( ITK_WRAPPING_PARSER ) 191 virtual PixelType
ComputeUpdate(
const NeighborhoodType & neighborhood,
192 void *globalData,
const FloatOffsetType & =
FloatOffsetType(0.0) ) ITK_OVERRIDE;
291 const NeighborhoodType &,
364 const ScalarValueType & imagePixel,
365 const InputIndexType & inputIndex);
372 const FeatureIndexType & iIdx) = 0;
378 const FeatureIndexType & iIdx) = 0;
385 ScalarValueType & pr) = 0;
429 void operator=(const Self &) ITK_DELETE_FUNCTION;
433 #ifndef ITK_MANUAL_INSTANTIATION 434 #include "itkRegionBasedLevelSetFunction.hxx" SharedDataType::Pointer SharedDataPointer
PixelType ScalarValueType
ScalarValueType GetOverlapPenaltyWeight() const
RegionBasedLevelSetFunction Self
virtual ScalarValueType LaplacianSmoothingSpeed(const NeighborhoodType &, const FloatOffsetType &, GlobalDataStruct *=0) const
Laplacian smoothing speed can be used to spatially modify the effects of laplacian smoothing of the l...
ScalarValueType m_MaxAdvectionChange
Superclass::NeighborhoodType NeighborhoodType
FeatureImageType::OffsetType FeatureOffsetType
SmartPointer< const Self > ConstPointer
FeatureImageType::ConstPointer FeatureImageConstPointer
InputImageType::ConstPointer InputImageConstPointer
ScalarValueType GetCurvatureWeight() const
virtual PixelType ComputeUpdate(const NeighborhoodType &neighborhood, void *globalData, const FloatOffsetType &=FloatOffsetType(0.0)) override
SharedDataPointer m_SharedData
static const unsigned int ImageDimension
signed long OffsetValueType
ScalarValueType m_dx[itkGetStaticConstMacro(ImageDimension)]
InputImageType::PixelType InputPixelType
Superclass::PixelType PixelType
void UpdateSharedData(bool forceUpdate)
HeavisideStepFunctionBase< InputPixelType, InputPixelType > HeavisideFunctionType
ScalarValueType m_OverlapPenaltyWeight
ScalarValueType ComputeGlobalTerm(const ScalarValueType &imagePixel, const InputIndexType &inputIndex)
Compute the global term as a combination of the internal, external, overlapping and volume regulariza...
signed long IndexValueType
OffsetValueType m_xStride[itkGetStaticConstMacro(ImageDimension)]
ScalarValueType m_VolumeMatchingWeight
void SetVolume(const ScalarValueType &volume)
InputImageType::SizeType InputSizeType
Vector< PixelRealType, itkGetStaticConstMacro(ImageDimension) > NeighborhoodScalesType
OffsetValueType GetStride(DimensionValueType axis) const
The "itk" namespace contains all Insight Segmentation and Registration Toolkit (ITK) classes...
void SetAreaWeight(const ScalarValueType &nu)
virtual ~RegionBasedLevelSetFunction()
void SetReinitializationSmoothingWeight(const ScalarValueType c)
ConstNeighborhoodIterator< TInput >::RadiusType RadiusType
void * GetGlobalDataPointer() const override
virtual void SetCurvatureWeight(const ScalarValueType c)
virtual const FeatureImageType * GetFeatureImage() const
ScalarValueType m_MaxCurvatureChange
FeatureImageConstPointer m_FeatureImage
unsigned long SizeValueType
void SetInitialImage(InputImageType *f)
SmartPointer< Self > Pointer
void SetAdvectionWeight(const ScalarValueType &iA)
ScalarValueType m_Lambda2
InputImageType::IndexType InputIndexType
ScalarValueType GetLambda1() const
HeavisideFunctionType::ConstPointer HeavisideFunctionConstPointer
ScalarValueType GetLambda2() const
Simulate a standard C array with copy semnatics.
static const unsigned int ImageDimension
ConstNeighborhoodIterator< TInput, DefaultBoundaryConditionType > NeighborhoodType
NeighborIndexType Size() const
FeatureImageType::IndexType FeatureIndexType
virtual void ComputeParameters()=0
Compute Parameters for the inner and outer parts.
TSharedData SharedDataType
unsigned int m_FunctionId
InputImageType::IndexValueType InputIndexValueType
Superclass::NeighborhoodScalesType NeighborhoodScalesType
ScalarValueType m_Lambda1
ScalarValueType m_MaxGlobalChange
Superclass::FloatOffsetType FloatOffsetType
Superclass::ImageType ImageType
void ComputeHessian(const NeighborhoodType &it, GlobalDataStruct *globalData)
Compute Hessian Matrix.
FeatureImageType::PixelType FeaturePixelType
InputImageType::Pointer InputImagePointer
ImageType::PixelType PixelType
std::slice x_slice[itkGetStaticConstMacro(ImageDimension)]
vnl_matrix_fixed< ScalarValueType, itkGetStaticConstMacro(ImageDimension), itkGetStaticConstMacro(ImageDimension) > m_dxy
virtual void CalculateAdvectionImage()
ScalarValueType ComputeLaplacian(GlobalDataStruct *gd)
Compute the laplacian term.
void SetLambda1(const ScalarValueType &lambda1)
ScalarValueType GetAdvectionWeight() const
virtual ScalarValueType CurvatureSpeed(const NeighborhoodType &, const FloatOffsetType &, GlobalDataStruct *=0) const
Curvature speed can be used to spatially modify the effects of curvature . The default implementation...
void SetRadius(const RadiusType &r)
ScalarValueType m_AdvectionWeight
HeavisideFunctionConstPointer m_DomainFunction
void SetSharedData(SharedDataPointer sharedDataIn)
InputImageType::RegionType InputRegionType
ScalarValueType m_AreaWeight
InputImageType::SizeValueType InputSizeValueType
Vector< float, itkGetStaticConstMacro(ImageDimension) > FloatOffsetType
double m_InvSpacing[itkGetStaticConstMacro(ImageDimension)]
RegionBasedLevelSetFunction()
ScalarValueType ComputeVolumeRegularizationTerm()
Compute the overlap term.
virtual void Initialize(const RadiusType &r)
ScalarValueType m_CurvatureWeight
FixedArray< ScalarValueType, itkGetStaticConstMacro(ImageDimension) > VectorType
virtual void UpdateSharedDataParameters()=0
Update and save the inner and outer parameters in the shared data structure.
void SetVolumeMatchingWeight(const ScalarValueType &tau)
virtual void SetFeatureImage(const FeatureImageType *f)
FiniteDifferenceFunction< TInput > Superclass
ScalarValueType GetAreaWeight() const
TFeature FeatureImageType
void SetLambda2(const ScalarValueType &lambda2)
void SetFunctionId(const unsigned int &iFid)
virtual VectorType AdvectionField(const NeighborhoodType &, const FloatOffsetType &, GlobalDataStruct *=0) const
ScalarValueType m_dx_forward[itkGetStaticConstMacro(ImageDimension)]
virtual void ReleaseGlobalDataPointer(void *GlobalData) const override
void SetDomainFunction(const HeavisideFunctionType *f)
TimeStepType ComputeGlobalTimeStep(void *GlobalData) const override
void SetRadius(const SizeType &)
FeatureImageType::SpacingType FeatureSpacingType
ScalarValueType m_ReinitializationSmoothingWeight
ScalarValueType m_GradMag
void SetOverlapPenaltyWeight(const ScalarValueType &gamma)
InputImageConstPointer m_InitialImage
ScalarValueType m_GradMagSqr
virtual ScalarValueType ComputeExternalTerm(const FeaturePixelType &iValue, const FeatureIndexType &iIdx)=0
Compute the external term.
virtual ScalarValueType ComputeCurvature(const NeighborhoodType &, const FloatOffsetType &, GlobalDataStruct *gd)
ScalarValueType GetReinitializationSmoothingWeight() const
virtual ScalarValueType ComputeInternalTerm(const FeaturePixelType &iValue, const FeatureIndexType &iIdx)=0
Compute the internal term.
static VectorType InitializeZeroVectorConstant()
ScalarValueType GetVolumeMatchingWeight() const
LevelSet function that computes a speed image based on regional integrals.
ScalarValueType GetVolume() const
virtual ScalarValueType ComputeOverlapParameters(const FeatureIndexType &featIndex, ScalarValueType &pr)=0
Compute the overlap term.
ScalarValueType m_dx_backward[itkGetStaticConstMacro(ImageDimension)]
InputImageType::PointType InputPointType
static VectorType m_ZeroVectorConstant
Base class of the Heaviside function.
Superclass::RadiusType RadiusType