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