DGtal  1.0.0
Public Types | Public Member Functions | Protected Member Functions | Static Protected Attributes | Private Member Functions | Private Attributes
DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, dimension > Class Template Reference

#include <DGtal/geometry/surfaces/DigitalSurfaceConvolver.h>

Collaboration diagram for DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, dimension >:
[legend]

Public Types

typedef TFunctor Functor
 
typedef TKSpace KSpace
 
typedef TKernelFunctor KernelFunctor
 
typedef TDigitalKernel DigitalKernel
 
typedef Z2i::Domain Domain
 
typedef double Quantity
 
typedef PointVector< dimension, QuantityVectorQuantity
 
typedef SimpleMatrix< Quantity, dimension, dimension > MatrixQuantity
 
typedef SimpleMatrix< double, dimension, dimension > CovarianceMatrix
 
typedef KSpace::SCell Spel
 
typedef KSpace::Point Point
 
typedef KSpace::Space::RealPoint RealPoint
 
typedef Z2i::DigitalSet::ConstIterator KernelConstIterator
 
typedef std::pair< KernelConstIterator, KernelConstIteratorPairIterators
 
typedef CanonicSCellEmbedder< KSpaceEmbedder
 

Public Member Functions

 BOOST_CONCEPT_ASSERT ((concepts::CCellFunctor< Functor >))
 
 BOOST_CONCEPT_ASSERT ((concepts::CCellFunctor< KernelFunctor >))
 
 DigitalSurfaceConvolver (ConstAlias< Functor > f, ConstAlias< KernelFunctor > g, ConstAlias< KSpace > space)
 
 DigitalSurfaceConvolver (const DigitalSurfaceConvolver &other)
 
 ~DigitalSurfaceConvolver ()
 
void init (const Point &pOrigin, ConstAlias< PairIterators > fullKernel, ConstAlias< std::vector< PairIterators > > masks)
 
void init (const Point &pOrigin, ConstAlias< DigitalKernel > fullKernel, ConstAlias< std::vector< PairIterators > > masks)
 
template<typename SurfelIterator >
Quantity eval (const SurfelIterator &it) const
 
template<typename SurfelIterator , typename EvalFunctor >
EvalFunctor::Value eval (const SurfelIterator &it, EvalFunctor functor) const
 
template<typename SurfelIterator , typename OutputIterator >
void eval (const SurfelIterator &itbegin, const SurfelIterator &itend, OutputIterator &result) const
 
template<typename SurfelIterator , typename OutputIterator , typename EvalFunctor >
void eval (const SurfelIterator &itbegin, const SurfelIterator &itend, OutputIterator &result, EvalFunctor functor) const
 
template<typename SurfelIterator >
CovarianceMatrix evalCovarianceMatrix (const SurfelIterator &it) const
 
template<typename SurfelIterator , typename EvalFunctor >
EvalFunctor::Value evalCovarianceMatrix (const SurfelIterator &it, EvalFunctor functor) const
 
template<typename SurfelIterator , typename OutputIterator >
void evalCovarianceMatrix (const SurfelIterator &itbegin, const SurfelIterator &itend, OutputIterator &result) const
 
template<typename SurfelIterator , typename OutputIterator , typename EvalFunctor >
void evalCovarianceMatrix (const SurfelIterator &itbegin, const SurfelIterator &itend, OutputIterator &result, EvalFunctor functor) const
 
bool isValid () const
 

Protected Member Functions

void computeCovarianceMatrix (const Quantity *aMomentMatrix, CovarianceMatrix &aCovarianceMatrix) const
 computeCovarianceMatrix compute the covariance matrix from matrix of moments. More...
 
void fillMoments (Quantity *aMomentMatrix, const Spel &aSpel, double direction) const
 fillMoments fill the matrix of moments with a given spel. More...
 
template<typename SurfelIterator >
bool core_eval (const SurfelIterator &it, Quantity &innerSum, Quantity &outerSum, bool useLastResults=false, Spel &lastInnerSpel=defaultInnerSpel, Spel &lastOuterSpel=defaultOuterSpel, Quantity &lastInnerSum=defaultInnerSum, Quantity &lastOuterSum=defaultOuterSum) const
 core_eval method used ( in intern by eval() ) to compute the Quantity on a given surfel (*it) More...
 
template<typename SurfelIterator >
bool core_evalCovarianceMatrix (const SurfelIterator &it, CovarianceMatrix &innerMatrix, CovarianceMatrix &outerMatrix, bool useLastResults=false, Spel &lastInnerSpel=defaultInnerSpel, Spel &lastOuterSpel=defaultOuterSpel, Quantity *lastInnerMoments=defaultInnerMoments, Quantity *lastOuterMoments=defaultOuterMoments) const
 core_evalCovarianceMatrix method used ( in intern by evalCovarianceMatrix() ) to compute the covariance matrix on a given surfel (*it) More...
 
 DigitalSurfaceConvolver ()
 

Static Protected Attributes

static const int nbMoments
 the number of moments is dependent to the dimension. In 2D, they are 6 moments such that p+q <= 2 (see method fillMoments()) More...
 
static Spel defaultInnerSpel
 default Spel, used as default parameter in core_eval and core_evalCovarianceMatrix functions More...
 
static Spel defaultOuterSpel
 default Spel, used as default parameter in core_eval and core_evalCovarianceMatrix functions More...
 
static Quantity defaultInnerMoments [6]
 default array of Quantity, used as default parameter in core_evalCovarianceMatrix function More...
 
static Quantity defaultOuterMoments [6]
 default array of Quantity, used as default parameter in core_evalCovarianceMatrix function More...
 
static Quantity defaultInnerSum
 default Quantity, used as default parameter in core_eval function More...
 
static Quantity defaultOuterSum
 default Quantity, used as default parameter in core_eval function More...
 

Private Member Functions

DigitalSurfaceConvolveroperator= (const DigitalSurfaceConvolver &other)
 

Private Attributes

const FunctormyFFunctor
 Const ref of the shape functor. More...
 
const KernelFunctormyGFunctor
 Const ref of the kernel functor. More...
 
const KSpacemyKSpace
 Const ref of the shape Kspace. More...
 
Embedder myEmbedder
 Converter Digital point -> Euclidean point. More...
 
bool isInitFullMasks
 If the user uses init with masks. See init() for more information. More...
 
bool isInitKernelAndMasks
 If the user uses init with masks and digital (full) kernel. See init() for more information. More...
 
const std::vector< PairIterators > * myMasks
 Pointer of vector of iterators for kernel partial masks. More...
 
const DigitalKernelmyKernel
 Two choice to iterate over the full kernel. See init() for more information. More...
 
const PairIteratorsmyKernelMask
 Two choice to iterate over the full kernel. See init() for more information. More...
 
Spel myKernelSpelOrigin
 Copy of the origin cell of the kernel. More...
 

Detailed Description

template<typename TFunctor, typename TKernelFunctor, typename TKSpace, typename TDigitalKernel, Dimension dimension = TKSpace::dimension>
class DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, dimension >

Description of class 'DigitalSurfaceConvolver'

Aim: Compute a convolution between a border on a nD-shape and a convolution kernel : (f*g)(t). An optimization is available when you convolve your shape on adjacent cells using eval(itbegin, itend, output)

Template Parameters
TFunctora model of a functor for the shape to convolve ( f(x) ).
TKernelFunctora model of a functor for the convolution kernel ( g(x) ).
TKSpacespace in which the shape is defined.
TDigitalKerneltype of a convolution kernel (ImplicitBall in general case).

Definition at line 76 of file DigitalSurfaceConvolver.h.

Member Typedef Documentation

◆ CovarianceMatrix

template<typename TFunctor, typename TKernelFunctor, typename TKSpace, typename TDigitalKernel, Dimension dimension = TKSpace::dimension>
typedef SimpleMatrix< double, dimension, dimension > DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, dimension >::CovarianceMatrix

Definition at line 90 of file DigitalSurfaceConvolver.h.

◆ DigitalKernel

template<typename TFunctor, typename TKernelFunctor, typename TKSpace, typename TDigitalKernel, Dimension dimension = TKSpace::dimension>
typedef TDigitalKernel DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, dimension >::DigitalKernel

Definition at line 83 of file DigitalSurfaceConvolver.h.

◆ Domain

template<typename TFunctor, typename TKernelFunctor, typename TKSpace, typename TDigitalKernel, Dimension dimension = TKSpace::dimension>
typedef Z2i::Domain DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, dimension >::Domain

Definition at line 85 of file DigitalSurfaceConvolver.h.

◆ Embedder

template<typename TFunctor, typename TKernelFunctor, typename TKSpace, typename TDigitalKernel, Dimension dimension = TKSpace::dimension>
typedef CanonicSCellEmbedder< KSpace > DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, dimension >::Embedder

Definition at line 98 of file DigitalSurfaceConvolver.h.

◆ Functor

template<typename TFunctor, typename TKernelFunctor, typename TKSpace, typename TDigitalKernel, Dimension dimension = TKSpace::dimension>
typedef TFunctor DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, dimension >::Functor

Definition at line 80 of file DigitalSurfaceConvolver.h.

◆ KernelConstIterator

template<typename TFunctor, typename TKernelFunctor, typename TKSpace, typename TDigitalKernel, Dimension dimension = TKSpace::dimension>
typedef Z2i::DigitalSet::ConstIterator DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, dimension >::KernelConstIterator

Definition at line 95 of file DigitalSurfaceConvolver.h.

◆ KernelFunctor

template<typename TFunctor, typename TKernelFunctor, typename TKSpace, typename TDigitalKernel, Dimension dimension = TKSpace::dimension>
typedef TKernelFunctor DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, dimension >::KernelFunctor

Definition at line 82 of file DigitalSurfaceConvolver.h.

◆ KSpace

template<typename TFunctor, typename TKernelFunctor, typename TKSpace, typename TDigitalKernel, Dimension dimension = TKSpace::dimension>
typedef TKSpace DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, dimension >::KSpace

Definition at line 81 of file DigitalSurfaceConvolver.h.

◆ MatrixQuantity

template<typename TFunctor, typename TKernelFunctor, typename TKSpace, typename TDigitalKernel, Dimension dimension = TKSpace::dimension>
typedef SimpleMatrix< Quantity, dimension, dimension > DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, dimension >::MatrixQuantity

Definition at line 89 of file DigitalSurfaceConvolver.h.

◆ PairIterators

template<typename TFunctor, typename TKernelFunctor, typename TKSpace, typename TDigitalKernel, Dimension dimension = TKSpace::dimension>
typedef std::pair< KernelConstIterator, KernelConstIterator > DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, dimension >::PairIterators

Definition at line 97 of file DigitalSurfaceConvolver.h.

◆ Point

template<typename TFunctor, typename TKernelFunctor, typename TKSpace, typename TDigitalKernel, Dimension dimension = TKSpace::dimension>
typedef KSpace::Point DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, dimension >::Point

Definition at line 93 of file DigitalSurfaceConvolver.h.

◆ Quantity

template<typename TFunctor, typename TKernelFunctor, typename TKSpace, typename TDigitalKernel, Dimension dimension = TKSpace::dimension>
typedef double DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, dimension >::Quantity

Definition at line 87 of file DigitalSurfaceConvolver.h.

◆ RealPoint

template<typename TFunctor, typename TKernelFunctor, typename TKSpace, typename TDigitalKernel, Dimension dimension = TKSpace::dimension>
typedef KSpace::Space::RealPoint DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, dimension >::RealPoint

Definition at line 94 of file DigitalSurfaceConvolver.h.

◆ Spel

template<typename TFunctor, typename TKernelFunctor, typename TKSpace, typename TDigitalKernel, Dimension dimension = TKSpace::dimension>
typedef KSpace::SCell DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, dimension >::Spel

Definition at line 92 of file DigitalSurfaceConvolver.h.

◆ VectorQuantity

template<typename TFunctor, typename TKernelFunctor, typename TKSpace, typename TDigitalKernel, Dimension dimension = TKSpace::dimension>
typedef PointVector< dimension, Quantity > DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, dimension >::VectorQuantity

Definition at line 88 of file DigitalSurfaceConvolver.h.

Constructor & Destructor Documentation

◆ DigitalSurfaceConvolver() [1/3]

template<typename TFunctor, typename TKernelFunctor, typename TKSpace, typename TDigitalKernel, Dimension dimension = TKSpace::dimension>
DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, dimension >::DigitalSurfaceConvolver ( ConstAlias< Functor f,
ConstAlias< KernelFunctor g,
ConstAlias< KSpace space 
)

Constructor.

Parameters
[in]fa functor f(x).
[in]ga functor g(x).
[in]spacespace in which the shape is defined.

◆ DigitalSurfaceConvolver() [2/3]

template<typename TFunctor, typename TKernelFunctor, typename TKSpace, typename TDigitalKernel, Dimension dimension = TKSpace::dimension>
DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, dimension >::DigitalSurfaceConvolver ( const DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, dimension > &  other)

Copy constructor.

Parameters
otherthe object to clone.

◆ ~DigitalSurfaceConvolver()

template<typename TFunctor, typename TKernelFunctor, typename TKSpace, typename TDigitalKernel, Dimension dimension = TKSpace::dimension>
DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, dimension >::~DigitalSurfaceConvolver ( )
inline

Destructor.

Definition at line 126 of file DigitalSurfaceConvolver.h.

126 {}

◆ DigitalSurfaceConvolver() [3/3]

template<typename TFunctor, typename TKernelFunctor, typename TKSpace, typename TDigitalKernel, Dimension dimension = TKSpace::dimension>
DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, dimension >::DigitalSurfaceConvolver ( )
protected

Constructor. Forbidden by default (protected to avoid g++ warnings).

Member Function Documentation

◆ BOOST_CONCEPT_ASSERT() [1/2]

template<typename TFunctor, typename TKernelFunctor, typename TKSpace, typename TDigitalKernel, Dimension dimension = TKSpace::dimension>
DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, dimension >::BOOST_CONCEPT_ASSERT ( (concepts::CCellFunctor< Functor >)  )

◆ BOOST_CONCEPT_ASSERT() [2/2]

template<typename TFunctor, typename TKernelFunctor, typename TKSpace, typename TDigitalKernel, Dimension dimension = TKSpace::dimension>
DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, dimension >::BOOST_CONCEPT_ASSERT ( (concepts::CCellFunctor< KernelFunctor >)  )

◆ computeCovarianceMatrix()

template<typename TFunctor, typename TKernelFunctor, typename TKSpace, typename TDigitalKernel, Dimension dimension = TKSpace::dimension>
void DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, dimension >::computeCovarianceMatrix ( const Quantity aMomentMatrix,
CovarianceMatrix aCovarianceMatrix 
) const
protected

computeCovarianceMatrix compute the covariance matrix from matrix of moments.

Parameters
[in]aMomentMatrixa matrix of digital moments [ sum(1) sum(y) sum (x) sum(x*y) sum(y*y) sum(x*x) ]
[out]aCovarianceMatrixthe result covariance matrix

◆ core_eval()

template<typename TFunctor, typename TKernelFunctor, typename TKSpace, typename TDigitalKernel, Dimension dimension = TKSpace::dimension>
template<typename SurfelIterator >
bool DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, dimension >::core_eval ( const SurfelIterator &  it,
Quantity innerSum,
Quantity outerSum,
bool  useLastResults = false,
Spel lastInnerSpel = defaultInnerSpel,
Spel lastOuterSpel = defaultOuterSpel,
Quantity lastInnerSum = defaultInnerSum,
Quantity lastOuterSum = defaultOuterSum 
) const
protected

core_eval method used ( in intern by eval() ) to compute the Quantity on a given surfel (*it)

Parameters
[in]it(iterator of a) surfel of the shape where the convolution is computed.
[out]innerSumthe result Quantity when centering with the innerSpel.
[out]outerSumthe result Quantity when centering with the outerSpel.
[in]useLastResultsif we can use last results (optimisation with masks)
[in,out]lastInnerSpellast inner spel. Override at end of function with current inner spel (from surfel *it). Set empty if useLastResults is false.
[in,out]lastOuterSpellast outer spel. Override at end of function with current outer spel (from surfel *it). Set empty if useLastResults is false.
[in]lastInnerSumlast Quantity when centering with inner spel. Set empty if useLastResults is false.
[in]lastOuterSumlast Quantity when centering with outer spel. Set empty if useLastResults is false.
Template Parameters
SurfelIteratortype of iterator on surfel

◆ core_evalCovarianceMatrix()

template<typename TFunctor, typename TKernelFunctor, typename TKSpace, typename TDigitalKernel, Dimension dimension = TKSpace::dimension>
template<typename SurfelIterator >
bool DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, dimension >::core_evalCovarianceMatrix ( const SurfelIterator &  it,
CovarianceMatrix innerMatrix,
CovarianceMatrix outerMatrix,
bool  useLastResults = false,
Spel lastInnerSpel = defaultInnerSpel,
Spel lastOuterSpel = defaultOuterSpel,
Quantity lastInnerMoments = defaultInnerMoments,
Quantity lastOuterMoments = defaultOuterMoments 
) const
protected

core_evalCovarianceMatrix method used ( in intern by evalCovarianceMatrix() ) to compute the covariance matrix on a given surfel (*it)

Parameters
[in]it(iterator of a) surfel of the shape where the convolution is computed.
[out]innerMatrixthe result covariance matrix when centering with the innerSpel.
[out]outerMatrixthe result covariance matrix when centering with the outerSpel.
[in]useLastResultsif we can use last results (optimisation with masks)
[in,out]lastInnerSpellast inner spel. Override at end of function with current inner spel (from surfel *it). Set empty if useLastResults is false.
[in,out]lastOuterSpellast outer spel. Override at end of function with current outer spel (from surfel *it). Set empty if useLastResults is false.
[in,out]lastInnerMomentslast inner moments when centering with inner spel. Override at end of function with current inner moments (from surfel *it). Set empty if useLastResults is false.
[in,out]lastOuterMomentslast inner moments when centering with inner spel. Override at end of function with current outer moments (from surfel *it). Set empty if useLastResults is false.
Template Parameters
SurfelIteratortype of iterator on surfel

◆ eval() [1/4]

template<typename TFunctor, typename TKernelFunctor, typename TKSpace, typename TDigitalKernel, Dimension dimension = TKSpace::dimension>
template<typename SurfelIterator >
Quantity DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, dimension >::eval ( const SurfelIterator &  it) const

Convolve the kernel at a position it.

Parameters
[in]it(iterator of a) surfel of the shape where the convolution is computed.
Template Parameters
SurfelIteratortype of iterator of a surfel on the shape.
Returns
the estimated quantity at *it : (f*g)(t)

◆ eval() [2/4]

template<typename TFunctor, typename TKernelFunctor, typename TKSpace, typename TDigitalKernel, Dimension dimension = TKSpace::dimension>
template<typename SurfelIterator , typename EvalFunctor >
EvalFunctor::Value DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, dimension >::eval ( const SurfelIterator &  it,
EvalFunctor  functor 
) const

Convolve the kernel at a position it and applies the functor functor on the result.

Parameters
[in]it(iterator of a) surfel of the shape where the convolution is computed.
[in]functorfunctor called with the result of the convolution.
Template Parameters
SurfelIteratortype of iterator of a surfel on the shape.
EvalFunctortype of functor on Quantity.
Returns
the return quantity of functor after giving in parameter the result of the convolution at *it

◆ eval() [3/4]

template<typename TFunctor, typename TKernelFunctor, typename TKSpace, typename TDigitalKernel, Dimension dimension = TKSpace::dimension>
template<typename SurfelIterator , typename OutputIterator >
void DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, dimension >::eval ( const SurfelIterator &  itbegin,
const SurfelIterator &  itend,
OutputIterator &  result 
) const

Convolve the kernel at all positions of the range [itBegin, itEnd[ and outputs results sequentially with result iterator.

Parameters
[in]itbegin(iterator of the) first surfel of the shape where the convolution is computed.
[in]itend(iterator of the) last (excluded) surfel of the shape where the convolution is computed.
[out]resultiterator of an array where estimates quantities are set ( the estimated quantity from *itbegin till *itend (excluded)).
Template Parameters
SurfelIteratortype of iterator of a surfel on the shape.
OutputIteratortype of iterator on an array when Quantity are stored.

◆ eval() [4/4]

template<typename TFunctor, typename TKernelFunctor, typename TKSpace, typename TDigitalKernel, Dimension dimension = TKSpace::dimension>
template<typename SurfelIterator , typename OutputIterator , typename EvalFunctor >
void DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, dimension >::eval ( const SurfelIterator &  itbegin,
const SurfelIterator &  itend,
OutputIterator &  result,
EvalFunctor  functor 
) const

Convolve the kernel at all positions of the range [itBegin, itEnd[ and applies the functor functor on results outputed sequentially with result iterator.

Parameters
[in]itbegin(iterator of the) first surfel of the shape where the convolution is computed.
[in]itend(iterator of the) last (excluded) surfel of the shape where the convolution is computed.
[out]resultiterator of an array where estimates quantities are set ( the estimated quantity from *itbegin till *itend (excluded)).
[in]functorfunctor called with the result of the convolution.
Template Parameters
SurfelIteratortype of iterator of a surfel on the shape.
OutputIteratortype of iterator on an array when Quantity are stored.
EvalFunctortype of functor on Quantity.

◆ evalCovarianceMatrix() [1/4]

template<typename TFunctor, typename TKernelFunctor, typename TKSpace, typename TDigitalKernel, Dimension dimension = TKSpace::dimension>
template<typename SurfelIterator >
CovarianceMatrix DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, dimension >::evalCovarianceMatrix ( const SurfelIterator &  it) const

Convolve the kernel at a position it.

Parameters
[in]it(iterator of a) surfel of the shape where the covariance matrix is computed.
Template Parameters
SurfelIteratortype of iterator of a surfel on the shape.
Returns
the covariance matrix at *it

◆ evalCovarianceMatrix() [2/4]

template<typename TFunctor, typename TKernelFunctor, typename TKSpace, typename TDigitalKernel, Dimension dimension = TKSpace::dimension>
template<typename SurfelIterator , typename EvalFunctor >
EvalFunctor::Value DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, dimension >::evalCovarianceMatrix ( const SurfelIterator &  it,
EvalFunctor  functor 
) const

Convolve the kernel at a position it and applies the functor functor on the result.

Parameters
[in]it(iterator of a) surfel of the shape where the covariance matrix is computed.
[in]functorfunctor called with the result of the convolution.
Template Parameters
SurfelIteratortype of iterator of a surfel on the shape.
EvalFunctortype of functor on CovarianceMatrix.
Returns
the result of the functor with the covariance matrix.

◆ evalCovarianceMatrix() [3/4]

template<typename TFunctor, typename TKernelFunctor, typename TKSpace, typename TDigitalKernel, Dimension dimension = TKSpace::dimension>
template<typename SurfelIterator , typename OutputIterator >
void DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, dimension >::evalCovarianceMatrix ( const SurfelIterator &  itbegin,
const SurfelIterator &  itend,
OutputIterator &  result 
) const

Convolve the kernel at all positions of the range [itBegin, itEnd[ and outputs results sequentially with result iterator.

Parameters
[in]itbegin(iterator of the) first surfel of the shape where the covariance matrix is computed.
[in]itend(iterator of the) last (excluded) surfel of the shape where the covariance matrix is computed.
[out]resultiterator of an array where estimates covariance matrix are set ( the covariance matrix from *itbegin till *itend (excluded)).
Template Parameters
SurfelIteratortype of iterator of a surfel on the shape.
OutputIteratortype of iterator on an array when Quantity are stored.

◆ evalCovarianceMatrix() [4/4]

template<typename TFunctor, typename TKernelFunctor, typename TKSpace, typename TDigitalKernel, Dimension dimension = TKSpace::dimension>
template<typename SurfelIterator , typename OutputIterator , typename EvalFunctor >
void DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, dimension >::evalCovarianceMatrix ( const SurfelIterator &  itbegin,
const SurfelIterator &  itend,
OutputIterator &  result,
EvalFunctor  functor 
) const

Convolve the kernel at all positions of the range [itBegin, itEnd[ and applies the functor functor on results outputed sequentially with result iterator.

Parameters
[in]itbegin(iterator of the) first surfel of the shape where the covariance matrix is computed.
[in]itend(iterator of the) last (excluded) surfel of the shape where the covariance matrix is computed.
[out]resultiterator of an array where results of functor are set.
[in]functorfunctor called with the result of the convolution.
Template Parameters
SurfelIteratortype of iterator of a surfel on the shape.
OutputIteratortype of iterator on an array when Quantity are stored.
EvalFunctortype of functor on CovarianceMatrix.

◆ fillMoments()

template<typename TFunctor, typename TKernelFunctor, typename TKSpace, typename TDigitalKernel, Dimension dimension = TKSpace::dimension>
void DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, dimension >::fillMoments ( Quantity aMomentMatrix,
const Spel aSpel,
double  direction 
) const
protected

fillMoments fill the matrix of moments with a given spel.

Parameters
[out]aMomentMatrixa matrix of digital moments [ sum(1) sum(y) sum (x) sum(x*y) sum(y*y) sum(x*x) ]
[in]aSpelcurrent spel
[in]directiontrue if we add the current spel, false if we remove it.

◆ init() [1/2]

template<typename TFunctor, typename TKernelFunctor, typename TKSpace, typename TDigitalKernel, Dimension dimension = TKSpace::dimension>
void DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, dimension >::init ( const Point pOrigin,
ConstAlias< PairIterators fullKernel,
ConstAlias< std::vector< PairIterators > >  masks 
)

Initialize the convolver using masks - allow to use the optimization with adjacent cells.

Stores the full kernel explicitly: choose this init if you have a lot of memory or if your kernel is small.

Parameters
[in]pOrigincenter (digital point) of the kernel support.
[in]fullKernelpair of iterators of the full kernel. first is the first iterator (of spel) of the kernel support, second is the last iterator (of spel, excluded).
[in]masksVector of iterators (of spel) of the first and last spel of each masks. They must be ordered using a trit ({0,1,2}) encoded array. trit 0 => shifting_coord = -1 trit 1 => shifting_coord = 0 trit 2 => shifting_coord = 1 Example in 3D : zyx x y z mask[0] : base3(0) = 000 => shifting = {-1,-1,-1} mask[5] : base3(5) = 012 => shifting = { 1, 0,-1}

◆ init() [2/2]

template<typename TFunctor, typename TKernelFunctor, typename TKSpace, typename TDigitalKernel, Dimension dimension = TKSpace::dimension>
void DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, dimension >::init ( const Point pOrigin,
ConstAlias< DigitalKernel fullKernel,
ConstAlias< std::vector< PairIterators > >  masks 
)

Intitialize the convolver using masks - allow to use the optimization with adjacent cells.

Stores the kernel implicitly: choose this init if you have not a lot of memory available or if your kernel size is big.

Parameters
[in]pOrigincenter (digital point) of the kernel support.
[in]fullKernelpointer of the digital (full) kernel.
[in]masksVector of iterators (of spel) of the first and last spel of each masks. They must be ordered using a trit ({0,1,2}) encoded array. trit 0 => shifting_coord = -1 trit 1 => shifting_coord = 0 trit 2 => shifting_coord = 1 Example in 3D : zyx x y z mask[0] : base3(0) = 000 => shifting = {-1,-1,-1} mask[5] : base3(5) = 012 => shifting = { 1, 0,-1}

◆ isValid()

template<typename TFunctor, typename TKernelFunctor, typename TKSpace, typename TDigitalKernel, Dimension dimension = TKSpace::dimension>
bool DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, dimension >::isValid ( ) const

Checks the validity/consistency of the object.

Returns
'true' if the object is valid, 'false' otherwise.

◆ operator=()

template<typename TFunctor, typename TKernelFunctor, typename TKSpace, typename TDigitalKernel, Dimension dimension = TKSpace::dimension>
DigitalSurfaceConvolver& DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, dimension >::operator= ( const DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, dimension > &  other)
private

Assignment.

Parameters
otherthe object to copy.
Returns
a reference on 'this'. Forbidden by default.

Field Documentation

◆ defaultInnerMoments

template<typename TFunctor, typename TKernelFunctor, typename TKSpace, typename TDigitalKernel, Dimension dimension = TKSpace::dimension>
Quantity DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, dimension >::defaultInnerMoments[6]
staticprotected

default array of Quantity, used as default parameter in core_evalCovarianceMatrix function

Definition at line 330 of file DigitalSurfaceConvolver.h.

◆ defaultInnerSpel

template<typename TFunctor, typename TKernelFunctor, typename TKSpace, typename TDigitalKernel, Dimension dimension = TKSpace::dimension>
Spel DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, dimension >::defaultInnerSpel
staticprotected

default Spel, used as default parameter in core_eval and core_evalCovarianceMatrix functions

Definition at line 328 of file DigitalSurfaceConvolver.h.

◆ defaultInnerSum

template<typename TFunctor, typename TKernelFunctor, typename TKSpace, typename TDigitalKernel, Dimension dimension = TKSpace::dimension>
Quantity DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, dimension >::defaultInnerSum
staticprotected

default Quantity, used as default parameter in core_eval function

Definition at line 332 of file DigitalSurfaceConvolver.h.

◆ defaultOuterMoments

template<typename TFunctor, typename TKernelFunctor, typename TKSpace, typename TDigitalKernel, Dimension dimension = TKSpace::dimension>
Quantity DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, dimension >::defaultOuterMoments[6]
staticprotected

default array of Quantity, used as default parameter in core_evalCovarianceMatrix function

Definition at line 331 of file DigitalSurfaceConvolver.h.

◆ defaultOuterSpel

template<typename TFunctor, typename TKernelFunctor, typename TKSpace, typename TDigitalKernel, Dimension dimension = TKSpace::dimension>
Spel DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, dimension >::defaultOuterSpel
staticprotected

default Spel, used as default parameter in core_eval and core_evalCovarianceMatrix functions

Definition at line 329 of file DigitalSurfaceConvolver.h.

◆ defaultOuterSum

template<typename TFunctor, typename TKernelFunctor, typename TKSpace, typename TDigitalKernel, Dimension dimension = TKSpace::dimension>
Quantity DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, dimension >::defaultOuterSum
staticprotected

default Quantity, used as default parameter in core_eval function

Definition at line 333 of file DigitalSurfaceConvolver.h.

◆ isInitFullMasks

template<typename TFunctor, typename TKernelFunctor, typename TKSpace, typename TDigitalKernel, Dimension dimension = TKSpace::dimension>
bool DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, dimension >::isInitFullMasks
private

If the user uses init with masks. See init() for more information.

Definition at line 398 of file DigitalSurfaceConvolver.h.

◆ isInitKernelAndMasks

template<typename TFunctor, typename TKernelFunctor, typename TKSpace, typename TDigitalKernel, Dimension dimension = TKSpace::dimension>
bool DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, dimension >::isInitKernelAndMasks
private

If the user uses init with masks and digital (full) kernel. See init() for more information.

Definition at line 400 of file DigitalSurfaceConvolver.h.

◆ myEmbedder

template<typename TFunctor, typename TKernelFunctor, typename TKSpace, typename TDigitalKernel, Dimension dimension = TKSpace::dimension>
Embedder DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, dimension >::myEmbedder
private

Converter Digital point -> Euclidean point.

Definition at line 396 of file DigitalSurfaceConvolver.h.

◆ myFFunctor

template<typename TFunctor, typename TKernelFunctor, typename TKSpace, typename TDigitalKernel, Dimension dimension = TKSpace::dimension>
const Functor& DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, dimension >::myFFunctor
private

Const ref of the shape functor.

Definition at line 389 of file DigitalSurfaceConvolver.h.

◆ myGFunctor

template<typename TFunctor, typename TKernelFunctor, typename TKSpace, typename TDigitalKernel, Dimension dimension = TKSpace::dimension>
const KernelFunctor& DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, dimension >::myGFunctor
private

Const ref of the kernel functor.

Definition at line 391 of file DigitalSurfaceConvolver.h.

◆ myKernel

template<typename TFunctor, typename TKernelFunctor, typename TKSpace, typename TDigitalKernel, Dimension dimension = TKSpace::dimension>
const DigitalKernel* DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, dimension >::myKernel
private

Two choice to iterate over the full kernel. See init() for more information.

Definition at line 404 of file DigitalSurfaceConvolver.h.

◆ myKernelMask

template<typename TFunctor, typename TKernelFunctor, typename TKSpace, typename TDigitalKernel, Dimension dimension = TKSpace::dimension>
const PairIterators* DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, dimension >::myKernelMask
private

Two choice to iterate over the full kernel. See init() for more information.

Definition at line 405 of file DigitalSurfaceConvolver.h.

◆ myKernelSpelOrigin

template<typename TFunctor, typename TKernelFunctor, typename TKSpace, typename TDigitalKernel, Dimension dimension = TKSpace::dimension>
Spel DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, dimension >::myKernelSpelOrigin
private

Copy of the origin cell of the kernel.

Definition at line 407 of file DigitalSurfaceConvolver.h.

◆ myKSpace

template<typename TFunctor, typename TKernelFunctor, typename TKSpace, typename TDigitalKernel, Dimension dimension = TKSpace::dimension>
const KSpace& DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, dimension >::myKSpace
private

Const ref of the shape Kspace.

Definition at line 394 of file DigitalSurfaceConvolver.h.

◆ myMasks

template<typename TFunctor, typename TKernelFunctor, typename TKSpace, typename TDigitalKernel, Dimension dimension = TKSpace::dimension>
const std::vector< PairIterators >* DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, dimension >::myMasks
private

Pointer of vector of iterators for kernel partial masks.

Definition at line 402 of file DigitalSurfaceConvolver.h.

◆ nbMoments

template<typename TFunctor, typename TKernelFunctor, typename TKSpace, typename TDigitalKernel, Dimension dimension = TKSpace::dimension>
const int DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, dimension >::nbMoments
staticprotected

the number of moments is dependent to the dimension. In 2D, they are 6 moments such that p+q <= 2 (see method fillMoments())

Definition at line 327 of file DigitalSurfaceConvolver.h.


The documentation for this class was generated from the following file: