Skip to content

shapeworks::ImageDomain

More...

Inherits from shapeworks::ParticleRegionDomain, shapeworks::ParticleDomain

Inherited by shapeworks::ImageDomainWithGradients< T >

Public Types

Name
using std::shared_ptr< ImageDomain > Pointer
using itk::Image< T, DIMENSION > ImageType
using ParticleRegionDomain::PointType PointType

Public Functions

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 bool IsValidLocation(const PointType & p) const override
virtual double GetMaxDiameter() const override
virtual void DeleteImages() override
virtual void UpdateZeroCrossingPoint() override

Protected Functions

Name
openvdb::FloatGrid::Ptr GetVDBImage() const
ImageDomain()
virtual ~ImageDomain()
void PrintSelf(std::ostream & os, itk::Indent indent) const
openvdb::math::Transform::Ptr transform() const
openvdb::Vec3R ToVDBCoord(const PointType & p) const
std::string DescribeUnsampleablePoint(const PointType & p) const

Additional inherited members

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 VectorDoubleType ProjectVectorToSurfaceTangent(VectorDoubleType & gradE, const PointType & pos, int idx) const =0
virtual VectorFloatType SampleGradientAtPoint(const PointType & point, int idx) const =0
virtual VectorFloatType 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, 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 void DeletePartialDerivativeImages() =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::ImageDomain;

Public Types Documentation

using Pointer

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

Standard class typedefs

using ImageType

using shapeworks::ImageDomain< T >::ImageType =  itk::Image<T, DIMENSION>;

Type of the ITK image used by this class.

using PointType

using shapeworks::ImageDomain< T >::PointType =  ParticleRegionDomain::PointType;

Point type of the domain (not the image).

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 GetSurfaceArea

inline virtual double GetSurfaceArea() const override

Reimplements: shapeworks::ParticleDomain::GetSurfaceArea

Use for neighborhood radius.

function GetOrigin

inline PointType GetOrigin() const

function GetSize

inline ImageType::SizeType GetSize() const

function GetSpacing

inline ImageType::SpacingType GetSpacing() const

function GetIndex

inline ImageType::RegionType::IndexType GetIndex() const

function GetValidLocationNear

inline virtual PointType GetValidLocationNear(
    PointType p
) const override

Reimplements: shapeworks::ParticleDomain::GetValidLocationNear

GetValidLocation returns a PointType location on the surface. Used for placing the first particle.

function Sample

inline T Sample(
    const PointType & p
) const

Sample the image at a point. This method performs bounds checking.

function IsValidLocation

inline virtual bool IsValidLocation(
    const PointType & p
) const override

Reimplements: shapeworks::ParticleDomain::IsValidLocation

Whether the distance transform is actually kept at this location: inside the image, and near enough to the surface to fall within the narrow band, which is all that is retained.

function GetMaxDiameter

inline virtual double GetMaxDiameter() const override

Reimplements: shapeworks::ParticleDomain::GetMaxDiameter

GetMaxDiameter returns the maximum diameter of the domain and is used for computing sigma

function DeleteImages

inline virtual void DeleteImages() override

Reimplements: shapeworks::ParticleDomain::DeleteImages

Reimplemented by: shapeworks::ImageDomainWithGradients::DeleteImages, shapeworks::ImageDomainWithGradN::DeleteImages

Used when a domain is fixed.

function UpdateZeroCrossingPoint

inline virtual void UpdateZeroCrossingPoint() override

Reimplements: shapeworks::ParticleDomain::UpdateZeroCrossingPoint

Protected Functions Documentation

function GetVDBImage

inline openvdb::FloatGrid::Ptr GetVDBImage() const

function ImageDomain

inline ImageDomain()

function ~ImageDomain

inline virtual ~ImageDomain()

function PrintSelf

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

function transform

inline openvdb::math::Transform::Ptr transform() const

function ToVDBCoord

inline openvdb::Vec3R ToVDBCoord(
    const PointType & p
) const

function DescribeUnsampleablePoint

inline std::string DescribeUnsampleablePoint(
    const PointType & p
) const

Explain why a point cannot be sampled. Two quite different problems arrive here and they need different answers: a particle that has drifted a little way off the surface wants a wider narrow band, but one that has been clamped against the edge of the image started out somewhere else entirely, and no width of band would have caught it.


Updated on 2026-09-04 at 15:55:28 +0000