DGtal 1.4.0
|
Aim: This class implement an Integral Invariant normal vector estimator. More...
#include <DGtal/geometry/surfaces/estimation/IntegralInvariantNormalVectorEstimator.h>
Data Structures | |
struct | CovarianceMatrix2NormalDirectionFunctor |
Public Member Functions | |
BOOST_CONCEPT_ASSERT ((concepts::CCellularGridSpaceND< KSpace >)) | |
BOOST_CONCEPT_ASSERT ((concepts::CPointPredicate< PointPredicate >)) | |
BOOST_CONCEPT_ASSERT ((concepts::CCellFunctor< ShapeSpelFunctor >)) | |
IntegralInvariantNormalVectorEstimator () | |
IntegralInvariantNormalVectorEstimator (ConstAlias< KSpace > K, ConstAlias< PointPredicate > aPointPredicate) | |
~IntegralInvariantNormalVectorEstimator () | |
IntegralInvariantNormalVectorEstimator (const Self &other) | |
Self & | operator= (const Self &other) |
void | clear () |
Scalar | h () const |
void | attach (ConstAlias< KSpace > K, ConstAlias< PointPredicate > aPointPredicate) |
void | setParams (const double dRadius) |
template<typename SurfelConstIterator > | |
void | init (const double _h, SurfelConstIterator itb, SurfelConstIterator ite) |
template<typename SurfelConstIterator > | |
Quantity | eval (SurfelConstIterator it) const |
template<typename OutputIterator , typename SurfelConstIterator > | |
OutputIterator | eval (SurfelConstIterator itb, SurfelConstIterator ite, OutputIterator result) const |
void | selfDisplay (std::ostream &out) const |
bool | isValid () const |
Private Attributes | |
const KernelSpelFunctor | myKernelFunctor |
Kernel functor (on Spel) | |
std::vector< PairIterators > | myKernels |
array of begin/end iterator of shifting masks. | |
std::vector< DigitalSet * > | myKernelsSet |
Array of shifting masks. Size = 9 for each shifting (0-adjacent and full kernel included) | |
CountedPtr< KernelSupport > | myKernel |
Euclidean kernel. | |
CountedPtr< DigitalShapeKernel > | myDigKernel |
Digital kernel. | |
CountedConstPtrOrConstPtr< PointPredicate > | myPointPredicate |
Smart pointer (if required) on a point predicate. | |
CountedPtr< Domain > | myShapeDomain |
Smart pointer on domain | |
CountedPtr< ShapePointFunctor > | myShapePointFunctor |
Smart pointer on functor point -> {0,1}. | |
CountedPtr< ShapeSpelFunctor > | myShapeSpelFunctor |
Smart pointer on functor spel -> {0,1}. | |
CountedPtr< Convolver > | myConvolver |
Convolver. | |
Scalar | myH |
precision of the grid | |
Scalar | myRadius |
"digital" radius of the kernel (buy may be non integer). | |
Aim: This class implement an Integral Invariant normal vector estimator.
Description of template class 'IntegralInvariantNormalVectorEstimator'
The algorithm we propose uses volume of a kernel (2D: Ball2D, 3D: Ball3D) to approximate the normal vector. To compute the volume, we convolve a kernel around the surface and then count the number of cells belonging the shape. Theorical multigrid convergence is proved, with a convergence speed of O(h^1/3) with hypothesis about the shape geometry and the convolution kernel radius. Experimental results showed a multigrid convergence.
Optimization is available when we give a range of 0-adjacent surfels to the estimator.
TKSpace | a model of CCellularGridSpaceND, the cellular space in which the shape is defined. |
TPointPredicate | a model of concepts::CPointPredicate, a predicate Point -> bool that defines a digital shape as a characteristic function. |
Definition at line 104 of file IntegralInvariantNormalVectorEstimator.h.
typedef Matrix::Component DGtal::deprecated::IntegralInvariantNormalVectorEstimator< TKSpace, TPointPredicate >::Component |
Definition at line 148 of file IntegralInvariantNormalVectorEstimator.h.
typedef SurfelSet::const_iterator DGtal::deprecated::IntegralInvariantNormalVectorEstimator< TKSpace, TPointPredicate >::ConstIteratorKernel |
Definition at line 123 of file IntegralInvariantNormalVectorEstimator.h.
typedef DigitalSurfaceConvolver<ShapeSpelFunctor, KernelSpelFunctor, KSpace, DigitalShapeKernel> DGtal::deprecated::IntegralInvariantNormalVectorEstimator< TKSpace, TPointPredicate >::Convolver |
Definition at line 145 of file IntegralInvariantNormalVectorEstimator.h.
typedef DigitalSetSelector<Domain,BIG_DS+HIGH_VAR_DS>::Type DGtal::deprecated::IntegralInvariantNormalVectorEstimator< TKSpace, TPointPredicate >::DigitalSet |
Definition at line 119 of file IntegralInvariantNormalVectorEstimator.h.
typedef GaussDigitizer< Space, EuclideanMinus > DGtal::deprecated::IntegralInvariantNormalVectorEstimator< TKSpace, TPointPredicate >::DigitalShape |
Definition at line 142 of file IntegralInvariantNormalVectorEstimator.h.
typedef GaussDigitizer< Space, KernelSupport > DGtal::deprecated::IntegralInvariantNormalVectorEstimator< TKSpace, TPointPredicate >::DigitalShapeKernel |
Definition at line 141 of file IntegralInvariantNormalVectorEstimator.h.
typedef HyperRectDomain<Space> DGtal::deprecated::IntegralInvariantNormalVectorEstimator< TKSpace, TPointPredicate >::Domain |
Definition at line 115 of file IntegralInvariantNormalVectorEstimator.h.
typedef EuclideanShapesMinus< KernelSupport, KernelSupport > DGtal::deprecated::IntegralInvariantNormalVectorEstimator< TKSpace, TPointPredicate >::EuclideanMinus |
Definition at line 140 of file IntegralInvariantNormalVectorEstimator.h.
typedef functors::ConstValueCell<Value, Spel> DGtal::deprecated::IntegralInvariantNormalVectorEstimator< TKSpace, TPointPredicate >::KernelSpelFunctor |
Definition at line 138 of file IntegralInvariantNormalVectorEstimator.h.
typedef ImplicitBall<Space> DGtal::deprecated::IntegralInvariantNormalVectorEstimator< TKSpace, TPointPredicate >::KernelSupport |
Definition at line 139 of file IntegralInvariantNormalVectorEstimator.h.
typedef TKSpace DGtal::deprecated::IntegralInvariantNormalVectorEstimator< TKSpace, TPointPredicate >::KSpace |
Definition at line 108 of file IntegralInvariantNormalVectorEstimator.h.
typedef Convolver::CovarianceMatrix DGtal::deprecated::IntegralInvariantNormalVectorEstimator< TKSpace, TPointPredicate >::Matrix |
Definition at line 147 of file IntegralInvariantNormalVectorEstimator.h.
typedef Convolver::PairIterators DGtal::deprecated::IntegralInvariantNormalVectorEstimator< TKSpace, TPointPredicate >::PairIterators |
Definition at line 146 of file IntegralInvariantNormalVectorEstimator.h.
typedef Space::Point DGtal::deprecated::IntegralInvariantNormalVectorEstimator< TKSpace, TPointPredicate >::Point |
Definition at line 116 of file IntegralInvariantNormalVectorEstimator.h.
typedef TPointPredicate DGtal::deprecated::IntegralInvariantNormalVectorEstimator< TKSpace, TPointPredicate >::PointPredicate |
Definition at line 109 of file IntegralInvariantNormalVectorEstimator.h.
typedef RealVector DGtal::deprecated::IntegralInvariantNormalVectorEstimator< TKSpace, TPointPredicate >::Quantity |
The returned type of the estimator : a real-value vector.
Definition at line 126 of file IntegralInvariantNormalVectorEstimator.h.
typedef Space::RealPoint DGtal::deprecated::IntegralInvariantNormalVectorEstimator< TKSpace, TPointPredicate >::RealPoint |
Definition at line 117 of file IntegralInvariantNormalVectorEstimator.h.
typedef Space::RealVector DGtal::deprecated::IntegralInvariantNormalVectorEstimator< TKSpace, TPointPredicate >::RealVector |
Definition at line 118 of file IntegralInvariantNormalVectorEstimator.h.
typedef double DGtal::deprecated::IntegralInvariantNormalVectorEstimator< TKSpace, TPointPredicate >::Scalar |
Definition at line 149 of file IntegralInvariantNormalVectorEstimator.h.
typedef IntegralInvariantNormalVectorEstimator< TKSpace, TPointPredicate> DGtal::deprecated::IntegralInvariantNormalVectorEstimator< TKSpace, TPointPredicate >::Self |
Definition at line 107 of file IntegralInvariantNormalVectorEstimator.h.
typedef PointFunctorFromPointPredicateAndDomain< PointPredicate, Domain, unsigned int > DGtal::deprecated::IntegralInvariantNormalVectorEstimator< TKSpace, TPointPredicate >::ShapePointFunctor |
A wrapper around point predicate (functor Point -> bool) that transforms it into a functor Point -> unsigned int (0 or 1).
Definition at line 132 of file IntegralInvariantNormalVectorEstimator.h.
typedef FunctorOnCells< ShapePointFunctor, KSpace > DGtal::deprecated::IntegralInvariantNormalVectorEstimator< TKSpace, TPointPredicate >::ShapeSpelFunctor |
Adapts the a functor Point -> unsigned int (0 or 1) to a functor Cell -> unsigned int (0 ot 1), where Cell is a spel. Needed by DigitalSurfaceConvolver.
Definition at line 135 of file IntegralInvariantNormalVectorEstimator.h.
typedef KSpace::Space DGtal::deprecated::IntegralInvariantNormalVectorEstimator< TKSpace, TPointPredicate >::Space |
Definition at line 114 of file IntegralInvariantNormalVectorEstimator.h.
typedef KSpace::SCell DGtal::deprecated::IntegralInvariantNormalVectorEstimator< TKSpace, TPointPredicate >::Spel |
Definition at line 120 of file IntegralInvariantNormalVectorEstimator.h.
typedef KSpace::Surfel DGtal::deprecated::IntegralInvariantNormalVectorEstimator< TKSpace, TPointPredicate >::Surfel |
Definition at line 121 of file IntegralInvariantNormalVectorEstimator.h.
typedef KSpace::SurfelSet DGtal::deprecated::IntegralInvariantNormalVectorEstimator< TKSpace, TPointPredicate >::SurfelSet |
Definition at line 122 of file IntegralInvariantNormalVectorEstimator.h.
typedef int DGtal::deprecated::IntegralInvariantNormalVectorEstimator< TKSpace, TPointPredicate >::Value |
The type used for convolutions.
Definition at line 128 of file IntegralInvariantNormalVectorEstimator.h.
DGtal::deprecated::IntegralInvariantNormalVectorEstimator< TKSpace, TPointPredicate >::IntegralInvariantNormalVectorEstimator | ( | ) |
Default constructor. The object is invalid. The user needs to call setParams and attach.
DGtal::deprecated::IntegralInvariantNormalVectorEstimator< TKSpace, TPointPredicate >::IntegralInvariantNormalVectorEstimator | ( | ConstAlias< KSpace > | K, |
ConstAlias< PointPredicate > | aPointPredicate ) |
Constructor.
[in] | K | the cellular grid space in which the shape is defined. |
[in] | aPointPredicate | the shape of interest. The alias can be secured if a some counted pointer is handed. |
DGtal::deprecated::IntegralInvariantNormalVectorEstimator< TKSpace, TPointPredicate >::~IntegralInvariantNormalVectorEstimator | ( | ) |
Destructor.
DGtal::deprecated::IntegralInvariantNormalVectorEstimator< TKSpace, TPointPredicate >::IntegralInvariantNormalVectorEstimator | ( | const Self & | other | ) |
Copy constructor.
other | the object to clone. |
void DGtal::deprecated::IntegralInvariantNormalVectorEstimator< TKSpace, TPointPredicate >::attach | ( | ConstAlias< KSpace > | K, |
ConstAlias< PointPredicate > | aPointPredicate ) |
Attach a shape, defined as a functor spel -> boolean
[in] | K | the cellular grid space in which the shape is defined. |
aPointPredicate | the shape of interest. The alias can be secured if a some counted pointer is handed. |
DGtal::deprecated::IntegralInvariantNormalVectorEstimator< TKSpace, TPointPredicate >::BOOST_CONCEPT_ASSERT | ( | (concepts::CCellFunctor< ShapeSpelFunctor >) | ) |
DGtal::deprecated::IntegralInvariantNormalVectorEstimator< TKSpace, TPointPredicate >::BOOST_CONCEPT_ASSERT | ( | (concepts::CCellularGridSpaceND< KSpace >) | ) |
DGtal::deprecated::IntegralInvariantNormalVectorEstimator< TKSpace, TPointPredicate >::BOOST_CONCEPT_ASSERT | ( | (concepts::CPointPredicate< PointPredicate >) | ) |
void DGtal::deprecated::IntegralInvariantNormalVectorEstimator< TKSpace, TPointPredicate >::clear | ( | ) |
Clears the object. It is now invalid.
Quantity DGtal::deprecated::IntegralInvariantNormalVectorEstimator< TKSpace, TPointPredicate >::eval | ( | SurfelConstIterator | it | ) | const |
– Normal vector –
Compute the integral invariant normal vector at surfel *it of a shape. Not so easy, since II is a symmetric matrix, only directions of eigenvectors are pertinent. Another computation is necessary to obtain the orientation.
SurfelConstIterator | type of Iterator on a Surfel |
[in] | it | iterator pointing on the surfel of the shape where we wish to evaluate the normal vector. |
OutputIterator DGtal::deprecated::IntegralInvariantNormalVectorEstimator< TKSpace, TPointPredicate >::eval | ( | SurfelConstIterator | itb, |
SurfelConstIterator | ite, | ||
OutputIterator | result ) const |
– Normal vector –
Compute the integral invariant normal vector from a range of surfels [itb,ite) of a shape. Not so easy, since II is a symmetric matrix, only directions of eigenvectors are pertinent. Another computation is necessary to obtain the orientation. Return the result on an OutputIterator (param).
OutputIterator | type of Iterator of an array of Quantity |
SurfelConstIterator | type of Iterator on a Surfel |
[in] | itb | iterator defining the start of the range of surfels where the normal vector is computed. |
[in] | ite | iterator defining the end of the range of surfels where the normal vector is computed. |
[in] | result | output iterator of results of the computation. |
Scalar DGtal::deprecated::IntegralInvariantNormalVectorEstimator< TKSpace, TPointPredicate >::h | ( | ) | const |
void DGtal::deprecated::IntegralInvariantNormalVectorEstimator< TKSpace, TPointPredicate >::init | ( | const double | _h, |
SurfelConstIterator | itb, | ||
SurfelConstIterator | ite ) |
Model of CDigitalSurfaceLocalEstimator. Initialisation.
SurfelConstIterator | any model of forward readable iterator on Surfel. |
[in] | _h | grid size (must be >0). |
[in] | ite | iterator on the first surfel of the surface. |
[in] | itb | iterator after the last surfel of the surface. |
bool DGtal::deprecated::IntegralInvariantNormalVectorEstimator< TKSpace, TPointPredicate >::isValid | ( | ) | const |
Checks the validity/consistency of the object.
Self & DGtal::deprecated::IntegralInvariantNormalVectorEstimator< TKSpace, TPointPredicate >::operator= | ( | const Self & | other | ) |
Assignment.
other | the object to copy. |
void DGtal::deprecated::IntegralInvariantNormalVectorEstimator< TKSpace, TPointPredicate >::selfDisplay | ( | std::ostream & | out | ) | const |
Writes/Displays the object on an output stream.
out | the output stream where the object is written. |
void DGtal::deprecated::IntegralInvariantNormalVectorEstimator< TKSpace, TPointPredicate >::setParams | ( | const double | dRadius | ) |
Set specific parameters: the radius of the ball.
[in] | dRadius | the "digital" radius of the kernel (buy may be non integer). |
|
private |
Convolver.
Definition at line 313 of file IntegralInvariantNormalVectorEstimator.h.
|
private |
Digital kernel.
Definition at line 308 of file IntegralInvariantNormalVectorEstimator.h.
|
private |
precision of the grid
Definition at line 314 of file IntegralInvariantNormalVectorEstimator.h.
|
private |
Euclidean kernel.
Definition at line 307 of file IntegralInvariantNormalVectorEstimator.h.
|
private |
Kernel functor (on Spel)
Definition at line 304 of file IntegralInvariantNormalVectorEstimator.h.
|
private |
array of begin/end iterator of shifting masks.
Definition at line 305 of file IntegralInvariantNormalVectorEstimator.h.
|
private |
Array of shifting masks. Size = 9 for each shifting (0-adjacent and full kernel included)
Definition at line 306 of file IntegralInvariantNormalVectorEstimator.h.
|
private |
Smart pointer (if required) on a point predicate.
Definition at line 309 of file IntegralInvariantNormalVectorEstimator.h.
|
private |
"digital" radius of the kernel (buy may be non integer).
Definition at line 315 of file IntegralInvariantNormalVectorEstimator.h.
|
private |
Smart pointer on domain
Definition at line 310 of file IntegralInvariantNormalVectorEstimator.h.
|
private |
Smart pointer on functor point -> {0,1}.
Definition at line 311 of file IntegralInvariantNormalVectorEstimator.h.
|
private |
Smart pointer on functor spel -> {0,1}.
Definition at line 312 of file IntegralInvariantNormalVectorEstimator.h.