Skip to content

shapeworks::ParticleImageDomainWithGradients

More...

#include <ParticleImageDomainWithGradients.h>

Inherits from shapeworks::ParticleImageDomain< T >, shapeworks::ParticleRegionDomain, shapeworks::ParticleDomain

Inherited by shapeworks::ParticleImageDomainWithGradN< T >

Public Types

Name
using std::shared_ptr< ParticleImageDomainWithGradients< T > > Pointer
typedef ParticleImageDomain< T >::PointType PointType
typedef ParticleImageDomain< T >::ImageType ImageType
typedef itk::FixedArray< T, DIMENSION > VectorType
typedef vnl_vector_fixed< T, DIMENSION > VnlVectorType

Public Functions

Name
void SetImage(ImageType * I, double narrow_band)
virtual vnl_vector_fixed< float, DIMENSION > SampleGradientAtPoint(const PointType & p, int idx) const
virtual vnl_vector_fixed< float, DIMENSION > SampleNormalAtPoint(const PointType & p, int idx) const
vnl_vector_fixed< double, DIMENSION > ProjectVectorToSurfaceTangent(vnl_vector_fixed< double, DIMENSION > & gradE, const PointType & pos, int idx) const override
virtual void DeleteImages() override

Protected Functions

Name
ParticleImageDomainWithGradients()
virtual ~ParticleImageDomainWithGradients()
void PrintSelf(std::ostream & os, itk::Indent indent) const
openvdb::VectorGrid::Ptr GetVDBGradient()

Additional inherited members

Public Functions inherited from shapeworks::ParticleImageDomain< T >

Name
virtual double GetSurfaceArea() const override
PointType GetOrigin() const
ImageType::SizeType GetSize() const
ImageType::SpacingType GetSpacing() const
ImageType::RegionType::IndexType GetIndex() const
virtual PointType GetValidLocationNear(PointType p) const override
T Sample(const PointType & p) const
virtual double GetMaxDiameter() const override
virtual void UpdateZeroCrossingPoint() override

Protected Functions inherited from shapeworks::ParticleImageDomain< T >

Name
openvdb::FloatGrid::Ptr GetVDBImage() const
ParticleImageDomain()
virtual ~ParticleImageDomain()
openvdb::math::Transform::Ptr transform() const
openvdb::Vec3R ToVDBCoord(const PointType & p) const

Public Functions inherited from shapeworks::ParticleRegionDomain

Name
virtual bool ApplyConstraints(PointType & p) const
virtual const PointType & GetUpperBound() const
virtual const PointType & GetLowerBound() const
void SetUpperBound(const PointType _UpperBound)
void SetLowerBound(const PointType _LowerBound)
void SetRegion(const PointType & lowerBound, const PointType & upperBound)

Protected Functions inherited from shapeworks::ParticleRegionDomain

Name
ParticleRegionDomain()
virtual ~ParticleRegionDomain()
bool IsInsideBuffer(const PointType & p) const

Public Types inherited from shapeworks::ParticleDomain

Name
using vnl_matrix_fixed< float, 3, 3 > GradNType
using vnl_vector_fixed< double, 3 > VectorDoubleType
using vnl_vector_fixed< float, 3 > VectorFloatType

Public Functions inherited from shapeworks::ParticleDomain

Name
virtual bool ApplyConstraints(PointType & p, int idx, bool dbg =false) const =0
virtual PointType UpdateParticlePosition(const PointType & point, int idx, VectorDoubleType & update) const =0
virtual void InvalidateParticlePosition(int idx) const
virtual GradNType SampleGradNAtPoint(const PointType & p, int idx) const =0
virtual double Distance(const PointType & a, int idx_a, const PointType & b, int idx_b, VectorDoubleType * out_grad =nullptr) const
virtual double SquaredDistance(const PointType & a, int idx_a, const PointType & b, int idx_b) const
virtual bool IsWithinDistance(const PointType & a, int idx_a, const PointType & b, int idx_b, double test_dist, double & distance) const
virtual double GetCurvature(const PointType & p, int idx) const =0
virtual double GetSurfaceMeanCurvature() const =0
virtual double GetSurfaceStdDevCurvature() const =0
virtual const PointType & GetLowerBound() const =0
virtual const PointType & GetUpperBound() const =0
virtual PointType GetZeroCrossingPoint() const =0
virtual double GetSurfaceArea() const =0
virtual PointType GetValidLocationNear(PointType p) const =0
virtual double GetMaxDiameter() const =0
virtual void DeletePartialDerivativeImages() =0
virtual void UpdateZeroCrossingPoint() =0
bool IsDomainFixed() const
virtual shapeworks::DomainType GetDomainType() const =0
std::shared_ptr< shapeworks::Constraints > GetConstraints() const
virtual PointType GetPositionAfterSplit(const PointType & pt, const VectorDoubleType & local_direction, const VectorDoubleType & global_direction, double epsilon) const
void SetDomainID(int id)
void SetDomainName(std::string name)

Protected Functions inherited from shapeworks::ParticleDomain

Name
ParticleDomain()
virtual ~ParticleDomain()

Protected Attributes inherited from shapeworks::ParticleDomain

Name
bool m_FixedDomain
int m_DomainID
std::string m_DomainName
std::shared_ptr< shapeworks::Constraints > constraints

Detailed Description

template <class T >
class shapeworks::ParticleImageDomainWithGradients;

See:

An image domain that extends ParticleImageDomainWithGradients with image gradient information. Gradient values are interpolated with the SampleGradients(point) method.

Public Types Documentation

using Pointer

using shapeworks::ParticleImageDomainWithGradients< T >::Pointer =  std::shared_ptr<ParticleImageDomainWithGradients<T> >;

typedef PointType

typedef ParticleImageDomain<T>::PointType shapeworks::ParticleImageDomainWithGradients< T >::PointType;

Point type of the domain (not necessarily of the image).

typedef ImageType

typedef ParticleImageDomain<T>::ImageType shapeworks::ParticleImageDomainWithGradients< T >::ImageType;

typedef VectorType

typedef itk::FixedArray<T, DIMENSION> shapeworks::ParticleImageDomainWithGradients< T >::VectorType;

typedef VnlVectorType

typedef vnl_vector_fixed<T, DIMENSION> shapeworks::ParticleImageDomainWithGradients< T >::VnlVectorType;

Public Functions Documentation

function SetImage

inline void SetImage(
    ImageType * I,
    double narrow_band
)

Set/Get the itk::Image specifying the particle domain. The set method modifies the parent class LowerBound and UpperBound.

function SampleGradientAtPoint

inline virtual vnl_vector_fixed< float, DIMENSION > SampleGradientAtPoint(
    const PointType & p,
    int idx
) const

Reimplements: shapeworks::ParticleDomain::SampleGradientAtPoint

function SampleNormalAtPoint

inline virtual vnl_vector_fixed< float, DIMENSION > SampleNormalAtPoint(
    const PointType & p,
    int idx
) const

Reimplements: shapeworks::ParticleDomain::SampleNormalAtPoint

function ProjectVectorToSurfaceTangent

inline vnl_vector_fixed< double, DIMENSION > ProjectVectorToSurfaceTangent(
    vnl_vector_fixed< double, DIMENSION > & gradE,
    const PointType & pos,
    int idx
) const override

This method is called by an optimizer after a call to Evaluate and may be used to apply any constraints the resulting vector, such as a projection to the surface tangent plane. Returns true if the gradient was modified.

function DeleteImages

inline virtual void DeleteImages() override

Reimplements: shapeworks::ParticleImageDomain::DeleteImages

Reimplemented by: shapeworks::ParticleImageDomainWithGradN::DeleteImages

Used when a domain is fixed.

Protected Functions Documentation

function ParticleImageDomainWithGradients

inline ParticleImageDomainWithGradients()

function ~ParticleImageDomainWithGradients

inline virtual ~ParticleImageDomainWithGradients()

function PrintSelf

inline void PrintSelf(
    std::ostream & os,
    itk::Indent indent
) const

function GetVDBGradient

inline openvdb::VectorGrid::Ptr GetVDBGradient()

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