31 #if defined(VoronoiCovarianceMeasureOnDigitalSurface_RECURSES)
32 #error Recursive header files inclusion detected in VoronoiCovarianceMeasureOnDigitalSurface.h
33 #else // defined(VoronoiCovarianceMeasureOnDigitalSurface_RECURSES)
35 #define VoronoiCovarianceMeasureOnDigitalSurface_RECURSES
37 #if !defined VoronoiCovarianceMeasureOnDigitalSurface_h
39 #define VoronoiCovarianceMeasureOnDigitalSurface_h
44 #include "DGtal/base/Common.h"
45 #include "DGtal/base/CountedConstPtrOrConstPtr.h"
46 #include "DGtal/kernel/Point2ScalarFunctors.h"
47 #include "DGtal/math/linalg/EigenDecomposition.h"
48 #include "DGtal/topology/CDigitalSurfaceContainer.h"
49 #include "DGtal/topology/DigitalSurface.h"
50 #include "DGtal/geometry/volumes/distance/CSeparableMetric.h"
51 #include "DGtal/geometry/volumes/estimation/VoronoiCovarianceMeasure.h"
84 template <
typename TDigitalSurfaceContainer,
typename TSeparableMetric,
85 typename TKernelFunction>
165 bool verbose =
false );
188 template <
typename Po
intOutputIterator>
189 PointOutputIterator
getPoints( PointOutputIterator outIt,
Surfel s )
const;
292 template <
typename TDigitalSurfaceContainer,
typename TSeparableMetric,
typename TKernelFunction>
302 #include "DGtal/geometry/surfaces/estimation/VoronoiCovarianceMeasureOnDigitalSurface.ih"
307 #endif // !defined VoronoiCovarianceMeasureOnDigitalSurface_h
309 #undef VoronoiCovarianceMeasureOnDigitalSurface_RECURSES
310 #endif // else defined(VoronoiCovarianceMeasureOnDigitalSurface_RECURSES)
double Scalar
the type for "real" numbers.
DigitalSurfaceContainer::SurfelConstIterator ConstIterator
Aim: This class encapsulates its parameter class so that to indicate to the user that the object/poin...
TDigitalSurfaceContainer DigitalSurfaceContainer
the chosen container
VCM::Scalar Scalar
the "real number" type
KSpace::SCell SCell
the signed cells
Aim: Represents a set of n-1-cells in a nD space, together with adjacency relation between these cell...
Point2EigenStructure myPt2EigenStructure
Stores for each point p its convolved VCM, i.e. VCM( chi_r( p ) )
Aim: This class specializes the Voronoi covariance measure for digital surfaces. It adds notably the ...
Surfel2Normals mySurfel2Normals
Stores for each surfel its vcm normal and its trivial normal.
KSpace::Space Space
the digital space
Aim: This class provides methods to compute the eigen decomposition of a matrix. Its objective is to ...
void selfDisplay(std::ostream &out) const
EigenDecomposition< KSpace::dimension, Scalar > LinearAlgebraTool
diagonalizer (nD).
VoronoiCovarianceMeasureOnDigitalSurface & operator=(const VoronoiCovarianceMeasureOnDigitalSurface &other)
Surface::ConstIterator ConstIterator
the iterator for traversing the surface
Surfel2PointEmbedding
Possible embeddings for surfel as point(s)
Structure to hold a diagonalized matrix.
KernelFunction myChi
The kernel function chi_r.
Represents a signed cell in a cellular grid space by its Khalimsky coordinates and a boolean value.
Aim: The digital surface container concept describes a minimal set of inner types and methods so as t...
VCM::MatrixNN MatrixNN
nxn R-matrix
std::ostream & operator<<(std::ostream &out, const ATu0v1< TKSpace, TLinearAlgebra > &object)
VoronoiCovarianceMeasureOnDigitalSurface()
Scalar radiusTrivial() const
const Surfel2Normals & mapSurfel2Normals() const
Aim: implements basic MxN Matrix services (M,N>=1).
PointOutputIterator getPoints(PointOutputIterator outIt, Surfel s) const
DGtal is the top-level namespace which contains all DGtal functions and types.
KSpace::Point Point
the digital points
Surfel2PointEmbedding mySurfelEmbedding
The chosen embedding for the surfels.
Structure to hold the normals for each surfel (the VCM one and the trivial one).
VectorN values
eigenvalues from the smallest to the biggest
MatrixNN vectors
corresponding eigenvectors
VoronoiCovarianceMeasure< Space, Metric > VCM
the Voronoi Covariance Measure
VCM myVCM
Stores the voronoi covariance measure of the point embedding of the surface.
BOOST_CONCEPT_ASSERT((concepts::CDigitalSurfaceContainer< TDigitalSurfaceContainer >))
DigitalSurfaceContainer::KSpace KSpace
the cellular space
TKernelFunction KernelFunction
the kernel function
const Point2EigenStructure & mapPoint2ChiVCM() const
std::map< Point, EigenStructure > Point2EigenStructure
the map Point -> EigenStructure
DigitalSurface< DigitalSurfaceContainer > Surface
the chosen digital surface
bool getChiVCMEigenStructure(VectorN &values, MatrixNN &vectors, Surfel s) const
DigitalSurfaceContainer::Surfel Surfel
the n-1 cells
bool getChiVCMEigenvalues(VectorN &values, Surfel s) const
CountedConstPtrOrConstPtr< Surface > surface() const
the const-aliased digital surface.
CountedConstPtrOrConstPtr< Surface > mySurface
(possibly secure) alias of the digital surface
~VoronoiCovarianceMeasureOnDigitalSurface()
Aim: defines the concept of separable metrics.
std::map< Surfel, Normals > Surfel2Normals
the map Surfel -> Normals
Aim: Defines a unary functor, which associates arguments to results.
VCM::VectorN VectorN
n-dimensional R-vector
TSeparableMetric Metric
the chosen metric
Surfel2PointEmbedding surfelEmbedding() const
the chosen embedding Surfel -> Point(s)