DGtal 1.3.0
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Protected Member Functions | Static Protected Attributes | Private Member Functions | Private Attributes
DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, 3 > Class Template Reference

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

Public Types

typedef TFunctor Functor
 
typedef TKSpace KSpace
 
typedef TKernelFunctor KernelFunctor
 
typedef TDigitalKernel DigitalKernel
 
typedef Z3i::Domain Domain
 
typedef double Quantity
 
typedef PointVector< 3, QuantityVectorQuantity
 
typedef SimpleMatrix< Quantity, 3, 3 > MatrixQuantity
 
typedef SimpleMatrix< double, 3, 3 > CovarianceMatrix
 
typedef KSpace::SCell Spel
 
typedef KSpace::Point Point
 
typedef KSpace::Space::RealPoint RealPoint
 
typedef Z3i::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 3D, they are 10 moments such that p+q+s <= 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 [10]
 default array of Quantity, used as default parameter in core_evalCovarianceMatrix function More...
 
static Quantity defaultOuterMoments [10]
 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 Dimension dimension
 Current dimension (= 3) More...
 
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>
class DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, 3 >

Definition at line 807 of file DigitalSurfaceConvolver.h.

Member Typedef Documentation

◆ CovarianceMatrix

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

Definition at line 823 of file DigitalSurfaceConvolver.h.

◆ DigitalKernel

template<typename TFunctor , typename TKernelFunctor , typename TKSpace , typename TDigitalKernel >
typedef TDigitalKernel DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, 3 >::DigitalKernel

Definition at line 816 of file DigitalSurfaceConvolver.h.

◆ Domain

template<typename TFunctor , typename TKernelFunctor , typename TKSpace , typename TDigitalKernel >
typedef Z3i::Domain DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, 3 >::Domain

Definition at line 818 of file DigitalSurfaceConvolver.h.

◆ Embedder

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

Definition at line 832 of file DigitalSurfaceConvolver.h.

◆ Functor

template<typename TFunctor , typename TKernelFunctor , typename TKSpace , typename TDigitalKernel >
typedef TFunctor DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, 3 >::Functor

Definition at line 813 of file DigitalSurfaceConvolver.h.

◆ KernelConstIterator

template<typename TFunctor , typename TKernelFunctor , typename TKSpace , typename TDigitalKernel >
typedef Z3i::DigitalSet::ConstIterator DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, 3 >::KernelConstIterator

Definition at line 828 of file DigitalSurfaceConvolver.h.

◆ KernelFunctor

template<typename TFunctor , typename TKernelFunctor , typename TKSpace , typename TDigitalKernel >
typedef TKernelFunctor DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, 3 >::KernelFunctor

Definition at line 815 of file DigitalSurfaceConvolver.h.

◆ KSpace

template<typename TFunctor , typename TKernelFunctor , typename TKSpace , typename TDigitalKernel >
typedef TKSpace DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, 3 >::KSpace

Definition at line 814 of file DigitalSurfaceConvolver.h.

◆ MatrixQuantity

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

Definition at line 822 of file DigitalSurfaceConvolver.h.

◆ PairIterators

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

Definition at line 831 of file DigitalSurfaceConvolver.h.

◆ Point

template<typename TFunctor , typename TKernelFunctor , typename TKSpace , typename TDigitalKernel >
typedef KSpace::Point DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, 3 >::Point

Definition at line 826 of file DigitalSurfaceConvolver.h.

◆ Quantity

template<typename TFunctor , typename TKernelFunctor , typename TKSpace , typename TDigitalKernel >
typedef double DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, 3 >::Quantity

Definition at line 820 of file DigitalSurfaceConvolver.h.

◆ RealPoint

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

Definition at line 827 of file DigitalSurfaceConvolver.h.

◆ Spel

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

Definition at line 825 of file DigitalSurfaceConvolver.h.

◆ VectorQuantity

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

Definition at line 821 of file DigitalSurfaceConvolver.h.

Constructor & Destructor Documentation

◆ DigitalSurfaceConvolver() [1/3]

template<typename TFunctor , typename TKernelFunctor , typename TKSpace , typename TDigitalKernel >
DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, 3 >::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 >
DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, 3 >::DigitalSurfaceConvolver ( const DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, 3 > &  other)

Copy constructor.

Parameters
otherthe object to clone.

◆ ~DigitalSurfaceConvolver()

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

Destructor.

Definition at line 861 of file DigitalSurfaceConvolver.h.

861{}

◆ DigitalSurfaceConvolver() [3/3]

template<typename TFunctor , typename TKernelFunctor , typename TKSpace , typename TDigitalKernel >
DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, 3 >::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 >
DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, 3 >::BOOST_CONCEPT_ASSERT ( (concepts::CCellFunctor< Functor >)  )

◆ BOOST_CONCEPT_ASSERT() [2/2]

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

◆ computeCovarianceMatrix()

template<typename TFunctor , typename TKernelFunctor , typename TKSpace , typename TDigitalKernel >
void DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, 3 >::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(z) sum(y) sum (x) sum(y*z) sum(x*z) sum(x*y) sum(z*z) sum(y*y) sum(x*x) ]
[out]aCovarianceMatrixthe result covariance matrix

◆ core_eval()

template<typename TFunctor , typename TKernelFunctor , typename TKSpace , typename TDigitalKernel >
template<typename SurfelIterator >
bool DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, 3 >::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 >
template<typename SurfelIterator >
bool DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, 3 >::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 >
template<typename SurfelIterator >
Quantity DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, 3 >::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 >
template<typename SurfelIterator , typename EvalFunctor >
EvalFunctor::Value DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, 3 >::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 >
template<typename SurfelIterator , typename OutputIterator >
void DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, 3 >::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 >
template<typename SurfelIterator , typename OutputIterator , typename EvalFunctor >
void DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, 3 >::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 >
template<typename SurfelIterator >
CovarianceMatrix DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, 3 >::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 >
template<typename SurfelIterator , typename EvalFunctor >
EvalFunctor::Value DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, 3 >::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 >
template<typename SurfelIterator , typename OutputIterator >
void DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, 3 >::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 >
template<typename SurfelIterator , typename OutputIterator , typename EvalFunctor >
void DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, 3 >::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 >
void DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, 3 >::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(z) sum(y) sum (x) sum(y*z) sum(x*z) sum(x*y) sum(z*z) 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 >
void DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, 3 >::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}

◆ init() [2/2]

template<typename TFunctor , typename TKernelFunctor , typename TKSpace , typename TDigitalKernel >
void DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, 3 >::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}

◆ isValid()

template<typename TFunctor , typename TKernelFunctor , typename TKSpace , typename TDigitalKernel >
bool DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, 3 >::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 >
DigitalSurfaceConvolver & DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, 3 >::operator= ( const DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, 3 > &  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 >
Quantity DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, 3 >::defaultInnerMoments[10]
staticprotected

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

Definition at line 1071 of file DigitalSurfaceConvolver.h.

◆ defaultInnerSpel

template<typename TFunctor , typename TKernelFunctor , typename TKSpace , typename TDigitalKernel >
Spel DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, 3 >::defaultInnerSpel
staticprotected

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

Definition at line 1069 of file DigitalSurfaceConvolver.h.

◆ defaultInnerSum

template<typename TFunctor , typename TKernelFunctor , typename TKSpace , typename TDigitalKernel >
Quantity DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, 3 >::defaultInnerSum
staticprotected

default Quantity, used as default parameter in core_eval function

Definition at line 1073 of file DigitalSurfaceConvolver.h.

◆ defaultOuterMoments

template<typename TFunctor , typename TKernelFunctor , typename TKSpace , typename TDigitalKernel >
Quantity DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, 3 >::defaultOuterMoments[10]
staticprotected

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

Definition at line 1072 of file DigitalSurfaceConvolver.h.

◆ defaultOuterSpel

template<typename TFunctor , typename TKernelFunctor , typename TKSpace , typename TDigitalKernel >
Spel DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, 3 >::defaultOuterSpel
staticprotected

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

Definition at line 1070 of file DigitalSurfaceConvolver.h.

◆ defaultOuterSum

template<typename TFunctor , typename TKernelFunctor , typename TKSpace , typename TDigitalKernel >
Quantity DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, 3 >::defaultOuterSum
staticprotected

default Quantity, used as default parameter in core_eval function

Definition at line 1074 of file DigitalSurfaceConvolver.h.

◆ dimension

template<typename TFunctor , typename TKernelFunctor , typename TKSpace , typename TDigitalKernel >
const Dimension DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, 3 >::dimension
private

Current dimension (= 3)

Definition at line 1129 of file DigitalSurfaceConvolver.h.

◆ isInitFullMasks

template<typename TFunctor , typename TKernelFunctor , typename TKSpace , typename TDigitalKernel >
bool DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, 3 >::isInitFullMasks
private

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

Definition at line 1140 of file DigitalSurfaceConvolver.h.

◆ isInitKernelAndMasks

template<typename TFunctor , typename TKernelFunctor , typename TKSpace , typename TDigitalKernel >
bool DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, 3 >::isInitKernelAndMasks
private

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

Definition at line 1142 of file DigitalSurfaceConvolver.h.

◆ myEmbedder

template<typename TFunctor , typename TKernelFunctor , typename TKSpace , typename TDigitalKernel >
Embedder DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, 3 >::myEmbedder
private

Converter Digital point -> Euclidean point.

Definition at line 1138 of file DigitalSurfaceConvolver.h.

◆ myFFunctor

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

Const ref of the shape functor.

Definition at line 1131 of file DigitalSurfaceConvolver.h.

◆ myGFunctor

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

Const ref of the kernel functor.

Definition at line 1133 of file DigitalSurfaceConvolver.h.

◆ myKernel

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

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

Definition at line 1146 of file DigitalSurfaceConvolver.h.

◆ myKernelMask

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

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

Definition at line 1147 of file DigitalSurfaceConvolver.h.

◆ myKernelSpelOrigin

template<typename TFunctor , typename TKernelFunctor , typename TKSpace , typename TDigitalKernel >
Spel DGtal::DigitalSurfaceConvolver< TFunctor, TKernelFunctor, TKSpace, TDigitalKernel, 3 >::myKernelSpelOrigin
private

Copy of the origin cell of the kernel.

Definition at line 1149 of file DigitalSurfaceConvolver.h.

◆ myKSpace

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

Const ref of the shape Kspace.

Definition at line 1136 of file DigitalSurfaceConvolver.h.

◆ myMasks

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

Pointer of vector of iterators for kernel partial masks.

Definition at line 1144 of file DigitalSurfaceConvolver.h.

◆ nbMoments

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

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

Definition at line 1067 of file DigitalSurfaceConvolver.h.


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