Skip to content

itk::ParticleConstrainedModifiedCotangentEntropyGradientFunction

More...

#include <itkParticleConstrainedModifiedCotangentEntropyGradientFunction.h>

Inherits from itk::ParticleEntropyGradientFunction< TGradientNumericType, VDimension >, itk::ParticleVectorFunction< VDimension >, LightObject

Public Types

Name
typedef ParticleConstrainedModifiedCotangentEntropyGradientFunction Self
typedef SmartPointer< Self > Pointer
typedef SmartPointer< const Self > ConstPointer
typedef ParticleEntropyGradientFunction< TGradientNumericType, VDimension > Superclass
typedef Superclass::GradientNumericType GradientNumericType
typedef Superclass::ParticleSystemType ParticleSystemType
typedef Superclass::VectorType VectorType
typedef Superclass::PointType PointType
typedef Superclass::GradientVectorType GradientVectorType
typedef shapeworks::ParticleImageDomainWithCurvature< TGradientNumericType >::VnlMatrixType VnlMatrixType

Public Functions

Name
itkTypeMacro(ParticleConstrainedModifiedCotangentEntropyGradientFunction , ParticleEntropyGradientFunction )
itkNewMacro(Self )
itkStaticConstMacro(Dimension , unsigned int , VDimension )
virtual VectorType Evaluate(unsigned int a, unsigned int b, const ParticleSystemType * c, double & d) const
virtual VectorType Evaluate(unsigned int , unsigned int , const ParticleSystemType * , double & , double & ) const
virtual void BeforeEvaluate(unsigned int , unsigned int , const ParticleSystemType * )
virtual double Energy(unsigned int a, unsigned int b, const ParticleSystemType * c) const
virtual void AfterIteration()
virtual void BeforeIteration()
void EstimateGlobalSigma(const ParticleSystemType * system)
double ComputeModifiedCotangent(double rij) const
double ComputeModifiedCotangentDerivative(double rij) const
void SetDomainsPerShape(int i)
int GetDomainsPerShape() const
void SetRunStatus(int i)
int GetRunStatus() const
void SetDiagnosticsOutputPrefix(const std::string s)
virtual ParticleVectorFunction< VDimension >::Pointer Clone()

Protected Functions

Name
ParticleConstrainedModifiedCotangentEntropyGradientFunction()
virtual ~ParticleConstrainedModifiedCotangentEntropyGradientFunction()
void operator=(const ParticleConstrainedModifiedCotangentEntropyGradientFunction & )
ParticleConstrainedModifiedCotangentEntropyGradientFunction(const ParticleConstrainedModifiedCotangentEntropyGradientFunction & )

Protected Attributes

Name
unsigned int m_Counter
ParticleSystemType::PointVectorType m_CurrentNeighborhood
std::vector< double > m_CurrentWeights
std::string m_diagnostics_prefix
int m_DomainsPerShape
int m_RunStatus
double m_GlobalSigma
float m_MaxMoveFactor

Additional inherited members

Public Types inherited from itk::ParticleEntropyGradientFunction< TGradientNumericType, VDimension >

Name
typedef ParticleContainerArrayAttribute< double, VDimension > SigmaCacheType

Public Functions inherited from itk::ParticleEntropyGradientFunction< TGradientNumericType, VDimension >

Name
virtual void ResetBuffers()
virtual double EstimateSigma(unsigned int idx, const typename ParticleSystemType::PointVectorType & neighborhood, const shapeworks::ParticleDomain * domain, const std::vector< double > & weights, const PointType & pos, double initial_sigma, double precision, int & err) const
TGradientNumericType AngleCoefficient(const GradientVectorType & , const GradientVectorType & ) const
void SetMinimumNeighborhoodRadius(double s)
double GetMinimumNeighborhoodRadius() const
void SetMaximumNeighborhoodRadius(double s)
double GetMaximumNeighborhoodRadius() const
void SetFlatCutoff(double s)
double GetFlatCutoff() const
void SetNeighborhoodToSigmaRatio(double s)
double GetNeighborhoodToSigmaRatio() const
void SetSpatialSigmaCache(SigmaCacheType * s)
SigmaCacheType * GetSpatialSigmaCache()
const SigmaCacheType * GetSpatialSigmaCache() const
void ComputeAngularWeights(const PointType & , int , const typename ParticleSystemType::PointVectorType & , const shapeworks::ParticleDomain * , std::vector< double > & ) const

Protected Functions inherited from itk::ParticleEntropyGradientFunction< TGradientNumericType, VDimension >

Name
ParticleEntropyGradientFunction()
virtual ~ParticleEntropyGradientFunction()
ParticleEntropyGradientFunction(const ParticleEntropyGradientFunction & )

Protected Attributes inherited from itk::ParticleEntropyGradientFunction< TGradientNumericType, VDimension >

Name
double m_MinimumNeighborhoodRadius
double m_MaximumNeighborhoodRadius
double m_FlatCutoff
double m_NeighborhoodToSigmaRatio
SigmaCacheType::Pointer m_SpatialSigmaCache

Public Functions inherited from itk::ParticleVectorFunction< VDimension >

Name
virtual void ResetBuffers()
virtual void SetParticleSystem(ParticleSystemType * p)
virtual ParticleSystemType * GetParticleSystem() const
virtual void SetDomainNumber(unsigned int i)
virtual int GetDomainNumber() const

Protected Functions inherited from itk::ParticleVectorFunction< VDimension >

Name
ParticleVectorFunction()
virtual ~ParticleVectorFunction()
ParticleVectorFunction(const ParticleVectorFunction & )

Protected Attributes inherited from itk::ParticleVectorFunction< VDimension >

Name
ParticleSystemType * m_ParticleSystem
unsigned int m_DomainNumber

Detailed Description

template <class TGradientNumericType ,
unsigned int VDimension>
class itk::ParticleConstrainedModifiedCotangentEntropyGradientFunction;

This function returns an estimate of the gradient of the entropy of a particle distribution with respect to change in position of a specific particle in that distribution. The change in normals associated with the position is also taken into account, providing an adaptive sampling of the surface with respect to both position and extrinsic surface curvature.

This function depend on modified cotangent potential as defined in Meyer's thesis rather than Gaussian potential (Cates's thesis).

Modified potential only depend on a global sigma which defined the neighborhood of each particle compared to a sigma per particle in case of Gaussian potential.

This class also constrains the particle distribution according to the provided spheres (in or out) ?!!!

Public Types Documentation

typedef Self

typedef ParticleConstrainedModifiedCotangentEntropyGradientFunction itk::ParticleConstrainedModifiedCotangentEntropyGradientFunction< TGradientNumericType, VDimension >::Self;

Standard class typedefs.

typedef Pointer

typedef SmartPointer<Self> itk::ParticleConstrainedModifiedCotangentEntropyGradientFunction< TGradientNumericType, VDimension >::Pointer;

typedef ConstPointer

typedef SmartPointer<const Self> itk::ParticleConstrainedModifiedCotangentEntropyGradientFunction< TGradientNumericType, VDimension >::ConstPointer;

typedef Superclass

typedef ParticleEntropyGradientFunction<TGradientNumericType, VDimension> itk::ParticleConstrainedModifiedCotangentEntropyGradientFunction< TGradientNumericType, VDimension >::Superclass;

typedef GradientNumericType

typedef Superclass::GradientNumericType itk::ParticleConstrainedModifiedCotangentEntropyGradientFunction< TGradientNumericType, VDimension >::GradientNumericType;

Inherit some parent typedefs.

typedef ParticleSystemType

typedef Superclass::ParticleSystemType itk::ParticleConstrainedModifiedCotangentEntropyGradientFunction< TGradientNumericType, VDimension >::ParticleSystemType;

typedef VectorType

typedef Superclass::VectorType itk::ParticleConstrainedModifiedCotangentEntropyGradientFunction< TGradientNumericType, VDimension >::VectorType;

typedef PointType

typedef Superclass::PointType itk::ParticleConstrainedModifiedCotangentEntropyGradientFunction< TGradientNumericType, VDimension >::PointType;

typedef GradientVectorType

typedef Superclass::GradientVectorType itk::ParticleConstrainedModifiedCotangentEntropyGradientFunction< TGradientNumericType, VDimension >::GradientVectorType;

typedef VnlMatrixType

typedef shapeworks::ParticleImageDomainWithCurvature<TGradientNumericType>::VnlMatrixType itk::ParticleConstrainedModifiedCotangentEntropyGradientFunction< TGradientNumericType, VDimension >::VnlMatrixType;

Public Functions Documentation

function itkTypeMacro

itkTypeMacro(
    ParticleConstrainedModifiedCotangentEntropyGradientFunction ,
    ParticleEntropyGradientFunction 
)

function itkNewMacro

itkNewMacro(
    Self 
)

Method for creation through the object factory.

function itkStaticConstMacro

itkStaticConstMacro(
    Dimension ,
    unsigned int ,
    VDimension 
)

Dimensionality of the domain of the particle system.

function Evaluate

inline virtual VectorType Evaluate(
    unsigned int a,
    unsigned int b,
    const ParticleSystemType * c,
    double & d
) const

The first argument is a pointer to the particle system. The second argument is the index of the domain within that particle system. The third argument is the index of the particle location within the given domain.

function Evaluate

virtual VectorType Evaluate(
    unsigned int ,
    unsigned int ,
    const ParticleSystemType * ,
    double & ,
    double & 
) const

function BeforeEvaluate

virtual void BeforeEvaluate(
    unsigned int ,
    unsigned int ,
    const ParticleSystemType * 
)

function Energy

inline virtual double Energy(
    unsigned int a,
    unsigned int b,
    const ParticleSystemType * c
) const

function AfterIteration

inline virtual void AfterIteration()

Reimplements: itk::ParticleVectorFunction::AfterIteration

This method is called by a solver after each iteration. Subclasses may or may not implement this method.

function BeforeIteration

inline virtual void BeforeIteration()

Reimplements: itk::ParticleVectorFunction::BeforeIteration

This method is called by a solver before each iteration. Subclasses may or may not implement this method.

function EstimateGlobalSigma

void EstimateGlobalSigma(
    const ParticleSystemType * system
)

Estimate the best sigma for Parzen windowing. This is almost twice the average distance to the nearest 6 neigbhors (hexagonal packing)

function ComputeModifiedCotangent

inline double ComputeModifiedCotangent(
    double rij
) const

function ComputeModifiedCotangentDerivative

inline double ComputeModifiedCotangentDerivative(
    double rij
) const

function SetDomainsPerShape

inline void SetDomainsPerShape(
    int i
)

function GetDomainsPerShape

inline int GetDomainsPerShape() const

function SetRunStatus

inline void SetRunStatus(
    int i
)

function GetRunStatus

inline int GetRunStatus() const

function SetDiagnosticsOutputPrefix

inline void SetDiagnosticsOutputPrefix(
    const std::string s
)

function Clone

inline virtual ParticleVectorFunction< VDimension >::Pointer Clone()

Reimplements: itk::ParticleEntropyGradientFunction::Clone

Protected Functions Documentation

function ParticleConstrainedModifiedCotangentEntropyGradientFunction

inline ParticleConstrainedModifiedCotangentEntropyGradientFunction()

function ~ParticleConstrainedModifiedCotangentEntropyGradientFunction

inline virtual ~ParticleConstrainedModifiedCotangentEntropyGradientFunction()

function operator=

void operator=(
    const ParticleConstrainedModifiedCotangentEntropyGradientFunction & 
)

function ParticleConstrainedModifiedCotangentEntropyGradientFunction

ParticleConstrainedModifiedCotangentEntropyGradientFunction(
    const ParticleConstrainedModifiedCotangentEntropyGradientFunction & 
)

Protected Attributes Documentation

variable m_Counter

unsigned int m_Counter;

variable m_CurrentNeighborhood

ParticleSystemType::PointVectorType m_CurrentNeighborhood;

variable m_CurrentWeights

std::vector< double > m_CurrentWeights;

variable m_diagnostics_prefix

std::string m_diagnostics_prefix;

variable m_DomainsPerShape

int m_DomainsPerShape;

variable m_RunStatus

int m_RunStatus;

variable m_GlobalSigma

double m_GlobalSigma;

variable m_MaxMoveFactor

float m_MaxMoveFactor;

Updated on 2022-07-23 at 16:40:05 -0600