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>
96 typedef typename DigitalSurfaceContainer::KSpace
KSpace;
97 typedef typename DigitalSurfaceContainer::Surfel
Surfel;
98 typedef typename KSpace::SCell
SCell;
162 Scalar _R, Scalar _r,
163 KernelFunction chi_r,
164 Scalar t = 2.5, Metric aMetric =
Metric(),
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) KSpace::Point Point
the digital points
VoronoiCovarianceMeasureOnDigitalSurface()
TDigitalSurfaceContainer DigitalSurfaceContainer
the chosen container
VCM::Scalar Scalar
the "real number" type
Surfel2PointEmbedding mySurfelEmbedding
The chosen embedding for the surfels.
std::map< Point, EigenStructure > Point2EigenStructure
the map Point -> EigenStructure
DigitalSurfaceContainer::SurfelConstIterator ConstIterator
VCM::MatrixNN MatrixNN
nxn R-matrix
MatrixNN vectors
corresponding eigenvectors
Aim: This class encapsulates its parameter class so that to indicate to the user that the object/poin...
BOOST_CONCEPT_ASSERT((concepts::CDigitalSurfaceContainer< TDigitalSurfaceContainer >))
TKernelFunction KernelFunction
the kernel function
VoronoiCovarianceMeasure< Space, Metric > VCM
the Voronoi Covariance Measure
Aim: Smart or simple const pointer on T. It can be a smart pointer based on reference counts or a sim...
Structure to hold the normals for each surfel (the VCM one and the trivial one).
Aim: This class provides methods to compute the eigen decomposition of a matrix. Its objective is to ...
Aim: Represents a set of n-1-cells in a nD space, together with adjacency relation between these cell...
VoronoiCovarianceMeasureOnDigitalSurface & operator=(const VoronoiCovarianceMeasureOnDigitalSurface &other)
KSpace::SCell SCell
the signed cells
TSeparableMetric Metric
the chosen metric
Aim: Implements basic operations that will be used in Point and Vector classes.
Aim: Defines a unary functor, which associates arguments to results.
Aim: implements basic MxN Matrix services (M,N>=1).
DigitalSurfaceContainer::Surfel Surfel
the n-1 cells
Aim: This class specializes the Voronoi covariance measure for digital surfaces. It adds notably the ...
PointOutputIterator getPoints(PointOutputIterator outIt, Surfel s) const
std::ostream & operator<<(std::ostream &out, const ClosedIntegerHalfPlane< TSpace > &object)
void selfDisplay(std::ostream &out) const
Point2EigenStructure myPt2EigenStructure
Stores for each point p its convolved VCM, i.e. VCM( chi_r( p ) )
Structure to hold a diagonalized matrix.
VCM myVCM
Stores the voronoi covariance measure of the point embedding of the surface.
~VoronoiCovarianceMeasureOnDigitalSurface()
DigitalSurfaceContainer::KSpace KSpace
the cellular space
Surfel2PointEmbedding surfelEmbedding() const
the chosen embedding Surfel -> Point(s)
DGtal is the top-level namespace which contains all DGtal functions and types.
Aim: defines the concept of separable metrics.
Surfel2Normals mySurfel2Normals
Stores for each surfel its vcm normal and its trivial normal.
double Scalar
the type for "real" numbers.
CountedConstPtrOrConstPtr< Surface > surface() const
the const-aliased digital surface.
Surface::ConstIterator ConstIterator
the iterator for traversing the surface
DigitalSurface< DigitalSurfaceContainer > Surface
the chosen digital surface
bool getChiVCMEigenStructure(VectorN &values, MatrixNN &vectors, Surfel s) const
const Point2EigenStructure & mapPoint2ChiVCM() const
KSpace::Space Space
the digital space
bool getChiVCMEigenvalues(VectorN &values, Surfel s) const
VCM::VectorN VectorN
n-dimensional R-vector
KernelFunction myChi
The kernel function chi_r.
Aim: The digital surface container concept describes a minimal set of inner types and methods so as t...
VectorN values
eigenvalues from the smallest to the biggest
CountedConstPtrOrConstPtr< Surface > mySurface
(possibly secure) alias of the digital surface
Surfel2PointEmbedding
Possible embeddings for surfel as point(s)
Scalar radiusTrivial() const
const Surfel2Normals & mapSurfel2Normals() const
EigenDecomposition< KSpace::dimension, Scalar > LinearAlgebraTool
diagonalizer (nD).
std::map< Surfel, Normals > Surfel2Normals
the map Surfel -> Normals