38 #if defined(IntegralInvariantNormalVectorEstimator_RECURSES)
39 #error Recursive header files inclusion detected in IntegralInvariantNormalVectorEstimator.h
42 #define IntegralInvariantNormalVectorEstimator_RECURSES
44 #if !defined IntegralInvariantNormalVectorEstimator_h
46 #define IntegralInvariantNormalVectorEstimator_h
51 #include "DGtal/base/Common.h"
53 #include "DGtal/kernel/CPointPredicate.h"
54 #include "DGtal/kernel/BasicPointFunctors.h"
55 #include "DGtal/topology/CCellFunctor.h"
56 #include "DGtal/topology/CCellularGridSpaceND.h"
57 #include "DGtal/geometry/surfaces/FunctorOnCells.h"
59 #include "DGtal/shapes/GaussDigitizer.h"
60 #include "DGtal/shapes/Shapes.h"
62 #include "DGtal/geometry/surfaces/DigitalSurfaceConvolver.h"
63 #include "DGtal/shapes/EuclideanShapesDecorator.h"
65 #include "DGtal/shapes/implicit/ImplicitBall.h"
103 template <
typename TKSpace,
typename TPo
intPredicate>
132 typedef PointFunctorFromPointPredicateAndDomain< PointPredicate, Domain, unsigned int >
ShapePointFunctor;
246 template <
typename SurfelConstIterator>
247 void init(
const double _h, SurfelConstIterator itb, SurfelConstIterator ite );
263 template<
typename SurfelConstIterator >
284 template <
typename OutputIterator,
typename SurfelConstIterator>
285 OutputIterator
eval( SurfelConstIterator itb,
286 SurfelConstIterator ite,
287 OutputIterator result )
const;
330 template <
typename TKSpace,
typename TPo
intPredicate>
340 #include "DGtal/geometry/surfaces/estimation/IntegralInvariantNormalVectorEstimator.ih"
347 #undef IntegralInvariantNormalVectorEstimator_RECURSES
Aim: This class encapsulates its parameter class so that to indicate to the user that the object/poin...
Aim: Smart pointer based on reference counts.
Aim: A wrapper class around a STL associative container for storing sets of digital points within som...
std::pair< KernelConstIterator, KernelConstIterator > PairIterators
static void getEigenDecomposition(const Matrix &matrix, Matrix &eigenVectors, Vector &eigenValues)
Compute both eigen vectors and eigen values from an input matrix.
Aim: Convert a functor on Digital Point to a Functor on Khalimsky Cell.
Aim: A class for computing the Gauss digitization of some Euclidean shape, i.e. its intersection with...
Aim: model of CEuclideanOrientedShape and CEuclideanBoundedShape concepts to create a ball in nD....
std::set< SCell > SurfelSet
Preferred type for defining a set of surfels (always signed cells).
Aim: implements basic MxN Matrix services (M,N>=1).
ColumnVector column(const DGtal::Dimension j) const
Aim: Minus between two models of CEuclideanBoundedShape and CEuclideanOrientedShape.
Aim: This class implement an Integral Invariant normal vector estimator.
Convolver::PairIterators PairIterators
KSpace::SurfelSet SurfelSet
CountedPtr< Convolver > myConvolver
Convolver.
CountedPtr< Domain > myShapeDomain
Smart pointer on domain
std::vector< DigitalSet * > myKernelsSet
Array of shifting masks. Size = 9 for each shifting (0-adjacent and full kernel included)
~IntegralInvariantNormalVectorEstimator()
RealVector Quantity
The returned type of the estimator : a real-value vector.
void selfDisplay(std::ostream &out) const
FunctorOnCells< ShapePointFunctor, KSpace > ShapeSpelFunctor
functors::ConstValueCell< Value, Spel > KernelSpelFunctor
DigitalSetSelector< Domain, BIG_DS+HIGH_VAR_DS >::Type DigitalSet
PointFunctorFromPointPredicateAndDomain< PointPredicate, Domain, unsigned int > ShapePointFunctor
Quantity eval(SurfelConstIterator it) const
CountedPtr< ShapePointFunctor > myShapePointFunctor
Smart pointer on functor point -> {0,1}.
IntegralInvariantNormalVectorEstimator< TKSpace, TPointPredicate > Self
CountedConstPtrOrConstPtr< PointPredicate > myPointPredicate
Smart pointer (if required) on a point predicate.
std::vector< PairIterators > myKernels
array of begin/end iterator of shifting masks.
const KernelSpelFunctor myKernelFunctor
Kernel functor (on Spel)
ImplicitBall< Space > KernelSupport
GaussDigitizer< Space, EuclideanMinus > DigitalShape
BOOST_CONCEPT_ASSERT((concepts::CPointPredicate< PointPredicate >))
EuclideanShapesMinus< KernelSupport, KernelSupport > EuclideanMinus
DigitalSurfaceConvolver< ShapeSpelFunctor, KernelSpelFunctor, KSpace, DigitalShapeKernel > Convolver
CountedPtr< DigitalShapeKernel > myDigKernel
Digital kernel.
TPointPredicate PointPredicate
HyperRectDomain< Space > Domain
Scalar myH
precision of the grid
int Value
The type used for convolutions.
Scalar myRadius
"digital" radius of the kernel (buy may be non integer).
Matrix::Component Component
OutputIterator eval(SurfelConstIterator itb, SurfelConstIterator ite, OutputIterator result) const
Space::RealPoint RealPoint
BOOST_CONCEPT_ASSERT((concepts::CCellFunctor< ShapeSpelFunctor >))
IntegralInvariantNormalVectorEstimator()
IntegralInvariantNormalVectorEstimator(const Self &other)
void attach(ConstAlias< KSpace > K, ConstAlias< PointPredicate > aPointPredicate)
Convolver::CovarianceMatrix Matrix
void init(const double _h, SurfelConstIterator itb, SurfelConstIterator ite)
void setParams(const double dRadius)
SurfelSet::const_iterator ConstIteratorKernel
CountedPtr< ShapeSpelFunctor > myShapeSpelFunctor
Smart pointer on functor spel -> {0,1}.
GaussDigitizer< Space, KernelSupport > DigitalShapeKernel
IntegralInvariantNormalVectorEstimator(ConstAlias< KSpace > K, ConstAlias< PointPredicate > aPointPredicate)
CountedPtr< KernelSupport > myKernel
Euclidean kernel.
BOOST_CONCEPT_ASSERT((concepts::CCellularGridSpaceND< KSpace >))
Space::RealVector RealVector
Self & operator=(const Self &other)
Aim: Define a simple functor that returns a constant quantity (0 by default).
DGtal is the top-level namespace which contains all DGtal functions and types.
std::ostream & operator<<(std::ostream &out, const ATu0v1< TKSpace, TLinearAlgebra > &object)
Represents a signed cell in a cellular grid space by its Khalimsky coordinates and a boolean value.
Aim: Defines a functor on cells.
Aim: This concept describes a cellular grid space in nD. In these spaces obtained by cartesian produc...
Aim: Defines a predicate on a point.
Self & operator=(const Self &)
CovarianceMatrix2NormalDirectionFunctor()
CovarianceMatrix2NormalDirectionFunctor Self
CovarianceMatrix2NormalDirectionFunctor(const Self &)
Value operator()(const Argument &arg) const