Skip to content

itk::ParticleImplicitSurfaceDomain

More...

#include <itkParticleImplicitSurfaceDomain.h>

Inherits from itk::ParticleImageDomainWithCurvature< T >, itk::ParticleImageDomainWithGradN< T >, itk::ParticleImageDomainWithGradients< T >, itk::ParticleImageDomain< T >, itk::ParticleRegionDomain, itk::ParticleDomain, DataObject

Public Types

Name
typedef ParticleImageDomainWithCurvature< T > Superclass
typedef SmartPointer< ParticleImplicitSurfaceDomain > Pointer
typedef Superclass::ImageType ImageType
typedef Superclass::PointType PointType

Public Functions

Name
itkNewMacro(ParticleImplicitSurfaceDomain )
virtual void SetTolerance(const T _Tolerance)
virtual T GetTolerance()
virtual shapeworks::DomainType GetDomainType() const override
virtual bool ApplyConstraints(PointType & p, int idx, bool dbg =false) const override
virtual PointType UpdateParticlePosition(const PointType & point, int idx, vnl_vector_fixed< double, DIMENSION > & update) const override
void SetMesh(TriMesh * mesh)
void SetFeaMesh(const char * feaFile)
void SetFeaGrad(const char * feaGradFile)
void SetFids(const char * fidsFile)
meshFIM * GetMesh()
meshFIM * GetMesh() const
virtual PointType GetZeroCrossingPoint() const override

Protected Functions

Name
ParticleImplicitSurfaceDomain()
void PrintSelf(std::ostream & os, Indent indent) const
virtual ~ParticleImplicitSurfaceDomain()

Additional inherited members

Public Types inherited from itk::ParticleImageDomainWithCurvature< T >

Name
typedef Superclass::VnlMatrixType VnlMatrixType

Public Functions inherited from itk::ParticleImageDomainWithCurvature< T >

Name
void SetImage(ImageType * I, double narrow_band)
virtual double GetCurvature(const PointType & p, int idx) const override
virtual double GetSurfaceMeanCurvature() const override
virtual double GetSurfaceStdDevCurvature() const override

Protected Functions inherited from itk::ParticleImageDomainWithCurvature< T >

Name
ParticleImageDomainWithCurvature()
virtual ~ParticleImageDomainWithCurvature()

Public Types inherited from itk::ParticleImageDomainWithGradN< T >

Name
typedef Superclass::GradNType GradNType
typedef Superclass::GradNType VnlMatrixType

Public Functions inherited from itk::ParticleImageDomainWithGradN< T >

Name
void SetImage(ImageType * I, double narrow_band)
virtual GradNType SampleGradNAtPoint(const PointType & p, int idx) const override
virtual void DeletePartialDerivativeImages() override
virtual void DeleteImages() override

Protected Functions inherited from itk::ParticleImageDomainWithGradN< T >

Name
ParticleImageDomainWithGradN()
virtual ~ParticleImageDomainWithGradN()

Public Types inherited from itk::ParticleImageDomainWithGradients< T >

Name
typedef FixedArray< T, DIMENSION > VectorType
typedef vnl_vector_fixed< T, DIMENSION > VnlVectorType

Public Functions inherited from itk::ParticleImageDomainWithGradients< T >

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
virtual 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 inherited from itk::ParticleImageDomainWithGradients< T >

Name
ParticleImageDomainWithGradients()
virtual ~ParticleImageDomainWithGradients()
openvdb::VectorGrid::Ptr GetVDBGradient()

Public Functions inherited from itk::ParticleImageDomain< T >

Name
void SetImage(ImageType * I, double narrow_band)
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 DeleteImages() override
virtual void UpdateZeroCrossingPoint() override

Protected Functions inherited from itk::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 itk::ParticleRegionDomain

Name
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 itk::ParticleRegionDomain

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

Public Types inherited from itk::ParticleDomain

Name
typedef vnl_matrix_fixed< float, DIMENSION, DIMENSION > GradNType

Public Functions inherited from itk::ParticleDomain

Name
virtual void InvalidateParticlePosition(int idx) const
virtual vnl_vector_fixed< double, DIMENSION > ProjectVectorToSurfaceTangent(vnl_vector_fixed< double, DIMENSION > & gradE, const PointType & pos, int idx) const =0
virtual vnl_vector_fixed< float, DIMENSION > SampleGradientAtPoint(const PointType & point, int idx) const =0
virtual vnl_vector_fixed< float, DIMENSION > SampleNormalAtPoint(const PointType & point, int idx) const =0
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, vnl_vector_fixed< double, DIMENSION > * 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 double GetSurfaceArea() const =0
virtual PointType GetValidLocationNear(PointType p) const =0
virtual double GetMaxDiameter() const =0
virtual void DeleteImages() =0
virtual void DeletePartialDerivativeImages() =0
virtual void UpdateZeroCrossingPoint() =0
bool IsDomainFixed() const
std::shared_ptr< Constraints > GetConstraints() const
virtual PointType GetPositionAfterSplit(const PointType & pt, const vnl_vector_fixed< double, 3 > & random, double epsilon) const
void SetDomainID(int id)
void SetDomainName(std::string name)

Protected Functions inherited from itk::ParticleDomain

Name
ParticleDomain()
virtual ~ParticleDomain()

Protected Attributes inherited from itk::ParticleDomain

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

Detailed Description

template <class T >
class itk::ParticleImplicitSurfaceDomain;

A 3D cartesian domain that constrains points so that they always lie an implicit surface. The implicit surface is defined as the zero isosurface of the given image. Constraints are applied using a Newton-Raphson iteration, and this class assumes it has a distance transform as an image.

Public Types Documentation

typedef Superclass

typedef ParticleImageDomainWithCurvature<T> itk::ParticleImplicitSurfaceDomain< T >::Superclass;

Standard class typedefs

typedef Pointer

typedef SmartPointer<ParticleImplicitSurfaceDomain> itk::ParticleImplicitSurfaceDomain< T >::Pointer;

typedef ImageType

typedef Superclass::ImageType itk::ParticleImplicitSurfaceDomain< T >::ImageType;

typedef PointType

typedef Superclass::PointType itk::ParticleImplicitSurfaceDomain< T >::PointType;

Public Functions Documentation

function itkNewMacro

itkNewMacro(
    ParticleImplicitSurfaceDomain 
)

Method for creation through the object factory.

function SetTolerance

inline virtual void SetTolerance(
    const T _Tolerance
)

Set/Get the precision of the projection operation. The resulting projection will be within the specified tolerance.

function GetTolerance

inline virtual T GetTolerance()

function GetDomainType

inline virtual shapeworks::DomainType GetDomainType() const override

Reimplements: itk::ParticleDomain::GetDomainType

function ApplyConstraints

virtual bool ApplyConstraints(
    PointType & p,
    int idx,
    bool dbg =false
) const override

Reimplements: itk::ParticleDomain::ApplyConstraints

Apply any constraints to the given point location. This method constrains points to lie within the given domain and on a given implicit surface. If the point is not already on the surface, it is projected back to the surface using a Newton-Raphson iteration. IMPORTANT: This method returns the true/false value of its superclass, and does not indicate changes only due to projection. This is done for speed: we typically will only want to know if a point tried to move outside of the bounding box domain, since movement off the surface will be very common. Consider subclassing this method to add a check for significant differences in the input and output points.

function UpdateParticlePosition

inline virtual PointType UpdateParticlePosition(
    const PointType & point,
    int idx,
    vnl_vector_fixed< double, DIMENSION > & update
) const override

Reimplements: itk::ParticleDomain::UpdateParticlePosition

Applies the update to the point and returns the new point position.

function SetMesh

void SetMesh(
    TriMesh * mesh
)

function SetFeaMesh

void SetFeaMesh(
    const char * feaFile
)

function SetFeaGrad

void SetFeaGrad(
    const char * feaGradFile
)

function SetFids

void SetFids(
    const char * fidsFile
)

function GetMesh

inline meshFIM * GetMesh()

function GetMesh

inline meshFIM * GetMesh() const

function GetZeroCrossingPoint

inline virtual PointType GetZeroCrossingPoint() const override

Reimplements: itk::ParticleDomain::GetZeroCrossingPoint

Get any valid point on the domain. This is used to place the first particle.

Protected Functions Documentation

function ParticleImplicitSurfaceDomain

inline ParticleImplicitSurfaceDomain()

function PrintSelf

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

function ~ParticleImplicitSurfaceDomain

inline virtual ~ParticleImplicitSurfaceDomain()

Updated on 2022-03-31 at 09:51:18 -0600