Skip to content

shapeworks::CorrespondenceFunction

Correspondence term.

#include <CorrespondenceFunction.h>

Inherits from shapeworks::VectorFunction

Public Types

Name
typedef shapeworks::ShapeMatrix ShapeDataType
typedef shapeworks::ShapeGradientMatrix ShapeGradientType
typedef ShapeDataType::DataType DataType
typedef VectorFunction::VectorType VectorType
typedef ParticleSystem::PointType PointType
typedef vnl_vector< DataType > vnl_vector_type
typedef vnl_matrix< DataType > vnl_matrix_type

Public Functions

Name
std::shared_ptr< CorrespondenceFunction > New()
Factory method for creating instances.
void SetShapeData(ShapeDataType * s)
Access the shape matrix.
ShapeDataType * GetShapeData()
const ShapeDataType * GetShapeData() const
void SetShapeGradient(ShapeGradientType * s)
Access the shape gradient matrix.
ShapeGradientType * GetShapeGradient()
const ShapeGradientType * GetShapeGradient() const
virtual VectorType evaluate(unsigned int , unsigned int , const ParticleSystem * , double & , double & ) const
virtual VectorType evaluate(unsigned int , unsigned int , const ParticleSystem * , double & maxtimestep) const
virtual double energy(unsigned int a, unsigned int b, const ParticleSystem * c) const
virtual void before_iteration()
virtual void after_iteration()
void SetMinimumVarianceDecay(double initial_value, double final_value, double time_period)
void SetMinimumVariance(double d)
double GetMinimumVariance() const
bool GetHoldMinimumVariance() const
void SetHoldMinimumVariance(bool b)
void SetRecomputeCovarianceInterval(int i)
int GetRecomputeCovarianceInterval() const
void SetAttributeScales(const std::vector< double > & s)
void SetDomainsPerShape(int i)
int GetDomainsPerShape() const
void SetAttributesPerDomain(const std::vector< int > & i)
void UseMeanenergy()
void UseEntropy()
void SetXYZ(int i, bool val)
void SetNormals(int i, bool val)
bool CheckForNans(vnl_matrix_type mat)
virtual std::shared_ptr< VectorFunction > clone() override
CorrespondenceFunction()
~CorrespondenceFunction() override =default

Protected Functions

Name
CorrespondenceFunction(const CorrespondenceFunction & ) =delete
CorrespondenceFunction & operator=(const CorrespondenceFunction & ) =delete
virtual void ComputeUpdates(const ParticleSystem * c)

Public Attributes

Name
constexpr static int VDimension
constexpr static unsigned int Dimension

Protected Attributes

Name
ShapeDataType::Pointer m_ShapeData
ShapeGradientType::Pointer m_ShapeGradient
std::shared_ptr< vnl_matrix_type > m_PointsUpdate
double m_MinimumVariance
double m_MinimumEigenValue
bool m_HoldMinimumVariance
int m_RecomputeCovarianceInterval
double m_MinimumVarianceDecayConstant
int m_Counter
std::vector< double > m_AttributeScales
int m_DomainsPerShape
std::vector< int > m_AttributesPerDomain
double m_CurrentEnergy
bool m_UseMeanEnergy
std::vector< bool > m_UseXYZ
std::vector< bool > m_UseNormals
std::shared_ptr< vnl_matrix_type > m_points_mean
std::shared_ptr< Eigen::MatrixXd > m_InverseCovMatrix
int num_dims
int num_samples

Additional inherited members

Public Functions inherited from shapeworks::VectorFunction

Name
virtual void reset_buffers()
May be called by the solver class.
virtual void before_evaluate(unsigned int , unsigned int , const ParticleSystem * )
virtual void set_particle_system(ParticleSystem * p)
Some subclasses may require a pointer to the particle system and its domain number.
virtual ParticleSystem * get_particle_system() const
virtual void set_domain_number(unsigned int i)
virtual int get_domain_number() const
virtual double get_relative_energy_scaling() const
virtual void set_relative_energy_scaling(double r)
virtual ~VectorFunction() =default
Virtual destructor for proper cleanup of derived classes.

Protected Functions inherited from shapeworks::VectorFunction

Name
VectorFunction()
VectorFunction(const VectorFunction & ) =delete

Protected Attributes inherited from shapeworks::VectorFunction

Name
ParticleSystem * particle_system_
unsigned int domain_number_

Public Types Documentation

typedef ShapeDataType

typedef shapeworks::ShapeMatrix shapeworks::CorrespondenceFunction::ShapeDataType;

typedef ShapeGradientType

typedef shapeworks::ShapeGradientMatrix shapeworks::CorrespondenceFunction::ShapeGradientType;

typedef DataType

typedef ShapeDataType::DataType shapeworks::CorrespondenceFunction::DataType;

typedef VectorType

typedef VectorFunction::VectorType shapeworks::CorrespondenceFunction::VectorType;

Vector & Point types.

typedef PointType

typedef ParticleSystem::PointType shapeworks::CorrespondenceFunction::PointType;

typedef vnl_vector_type

typedef vnl_vector<DataType> shapeworks::CorrespondenceFunction::vnl_vector_type;

typedef vnl_matrix_type

typedef vnl_matrix<DataType> shapeworks::CorrespondenceFunction::vnl_matrix_type;

Public Functions Documentation

function New

static inline std::shared_ptr< CorrespondenceFunction > New()

Factory method for creating instances.

function SetShapeData

inline void SetShapeData(
    ShapeDataType * s
)

Access the shape matrix.

function GetShapeData

inline ShapeDataType * GetShapeData()

function GetShapeData

inline const ShapeDataType * GetShapeData() const

function SetShapeGradient

inline void SetShapeGradient(
    ShapeGradientType * s
)

Access the shape gradient matrix.

function GetShapeGradient

inline ShapeGradientType * GetShapeGradient()

function GetShapeGradient

inline const ShapeGradientType * GetShapeGradient() const

function evaluate

virtual VectorType evaluate(
    unsigned int ,
    unsigned int ,
    const ParticleSystem * ,
    double & ,
    double & 
) const

Reimplements: shapeworks::VectorFunction::evaluate

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

inline virtual VectorType evaluate(
    unsigned int ,
    unsigned int ,
    const ParticleSystem * ,
    double & maxtimestep
) const

Reimplements: shapeworks::VectorFunction::evaluate

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 energy

inline virtual double energy(
    unsigned int a,
    unsigned int b,
    const ParticleSystem * c
) const

Reimplements: shapeworks::VectorFunction::energy

function before_iteration

inline virtual void before_iteration()

Reimplements: shapeworks::VectorFunction::before_iteration

Called before each iteration of a solver.

function after_iteration

inline virtual void after_iteration()

Reimplements: shapeworks::VectorFunction::after_iteration

Called after each iteration of the solver.

function SetMinimumVarianceDecay

inline void SetMinimumVarianceDecay(
    double initial_value,
    double final_value,
    double time_period
)

function SetMinimumVariance

inline void SetMinimumVariance(
    double d
)

function GetMinimumVariance

inline double GetMinimumVariance() const

function GetHoldMinimumVariance

inline bool GetHoldMinimumVariance() const

function SetHoldMinimumVariance

inline void SetHoldMinimumVariance(
    bool b
)

function SetRecomputeCovarianceInterval

inline void SetRecomputeCovarianceInterval(
    int i
)

function GetRecomputeCovarianceInterval

inline int GetRecomputeCovarianceInterval() const

function SetAttributeScales

inline void SetAttributeScales(
    const std::vector< double > & s
)

function SetDomainsPerShape

inline void SetDomainsPerShape(
    int i
)

Set/Get the number of domains per shape.

function GetDomainsPerShape

inline int GetDomainsPerShape() const

function SetAttributesPerDomain

inline void SetAttributesPerDomain(
    const std::vector< int > & i
)

function UseMeanenergy

inline void UseMeanenergy()

function UseEntropy

inline void UseEntropy()

function SetXYZ

inline void SetXYZ(
    int i,
    bool val
)

function SetNormals

inline void SetNormals(
    int i,
    bool val
)

function CheckForNans

inline bool CheckForNans(
    vnl_matrix_type mat
)

function clone

inline virtual std::shared_ptr< VectorFunction > clone() override

Reimplements: shapeworks::VectorFunction::clone

function CorrespondenceFunction

inline CorrespondenceFunction()

function ~CorrespondenceFunction

~CorrespondenceFunction() override =default

Protected Functions Documentation

function CorrespondenceFunction

CorrespondenceFunction(
    const CorrespondenceFunction & 
) =delete

function operator=

CorrespondenceFunction & operator=(
    const CorrespondenceFunction & 
) =delete

function ComputeUpdates

virtual void ComputeUpdates(
    const ParticleSystem * c
)

Public Attributes Documentation

variable VDimension

static constexpr static int VDimension = 3;

variable Dimension

static constexpr static unsigned int Dimension = VDimension;

Protected Attributes Documentation

variable m_ShapeData

ShapeDataType::Pointer m_ShapeData;

variable m_ShapeGradient

ShapeGradientType::Pointer m_ShapeGradient;

variable m_PointsUpdate

std::shared_ptr< vnl_matrix_type > m_PointsUpdate;

variable m_MinimumVariance

double m_MinimumVariance;

variable m_MinimumEigenValue

double m_MinimumEigenValue;

variable m_HoldMinimumVariance

bool m_HoldMinimumVariance;

variable m_RecomputeCovarianceInterval

int m_RecomputeCovarianceInterval;

variable m_MinimumVarianceDecayConstant

double m_MinimumVarianceDecayConstant;

variable m_Counter

int m_Counter;

variable m_AttributeScales

std::vector< double > m_AttributeScales;

variable m_DomainsPerShape

int m_DomainsPerShape;

variable m_AttributesPerDomain

std::vector< int > m_AttributesPerDomain;

variable m_CurrentEnergy

double m_CurrentEnergy;

variable m_UseMeanEnergy

bool m_UseMeanEnergy;

variable m_UseXYZ

std::vector< bool > m_UseXYZ;

variable m_UseNormals

std::vector< bool > m_UseNormals;

variable m_points_mean

std::shared_ptr< vnl_matrix_type > m_points_mean;

variable m_InverseCovMatrix

std::shared_ptr< Eigen::MatrixXd > m_InverseCovMatrix;

variable num_dims

int num_dims;

variable num_samples

int num_samples;

Updated on 2025-12-17 at 23:05:25 +0000