DGtal 1.3.0
Loading...
Searching...
No Matches
LambdaMST2D.h
1
17#pragma once
18
29#if defined(LAMBDAMST2D_RECURSES)
30#error Recursive header files inclusion detected in LambdaMST2D.h
31#else // defined(LAMBDAMST2D_RECURSES)
33#define LAMBDAMST2D_RECURSES
34
35#if !defined LAMBDAMST2D_h
37#define LAMBDAMST2D_h
38
39#include <algorithm>
40#include <iterator>
41#include <cmath>
42#include "DGtal/helpers/StdDefs.h"
43#include "DGtal/kernel/CSpace.h"
44#include "DGtal/kernel/PointVector.h"
45#include "DGtal/geometry/curves/estimation/FunctorsLambdaMST.h"
46#include "DGtal/geometry/curves/CForwardSegmentComputer.h"
47#include "DGtal/geometry/curves/estimation/CLMSTTangentFromDSS.h"
48
49namespace DGtal {
56 template < typename TSpace, typename TSegmentation, typename Functor >
58 {
59 //Checking concepts
60 BOOST_STATIC_ASSERT(( TSpace::dimension == 2 ));
62 BOOST_CONCEPT_ASSERT(( concepts::CLMSTTangentFromDSS < Functor > ));
63 BOOST_CONCEPT_ASSERT(( concepts::CForwardSegmentComputer < typename TSegmentation::SegmentComputer > ));
64 // ----------------------- Types ------------------------------
65 public:
67 typedef TSegmentation Segmentation;
69 typedef typename TSegmentation::SegmentComputer SegmentComputer;
73 typedef typename Functor::Value Value;
75 typedef typename TSpace::RealVector RealVector;
77 typedef typename TSpace::Point Point;
78
79 // ----------------------- Interface --------------------------------------
80 public:
83
89 void init ( ConstIterator itb, ConstIterator ite );
90
96
101 RealVector eval ( const Point & p );
102
110 template <typename OutputIterator>
111 OutputIterator eval ( ConstIterator itb, ConstIterator ite, OutputIterator result );
112
113 // ----------------------- Standard services ------------------------------
114 public:
115
120 bool isValid ( ) const;
121 // ------------------------- Internals ------------------------------------
122 protected:
123
131 template <typename OutputIterator>
132 void accumulate ( std::vector < Value > & outValues, OutputIterator & result );
133
134 // ------------------------- Private Datas --------------------------------
135 private:
136
154 TSegmentation * dssSegments;
155
156 }; // end of class LambdaMST2DEstimator
157
158 //-------------------------------------------------------------------------------------------
159
160 // Template class LambdaMST2D
166 template < typename DSSSegmentationComputer, typename LambdaFunction = functors::Lambda64Function >
168 public LambdaMST2DEstimator < Z2i::Space, DSSSegmentationComputer,
169 TangentFromDSS2DFunctor < typename DSSSegmentationComputer::SegmentComputer, LambdaFunction > >
170 {
171 typedef LambdaMST2DEstimator < Z2i::Space, DSSSegmentationComputer,
172 TangentFromDSS2DFunctor < typename DSSSegmentationComputer::SegmentComputer, LambdaFunction> > Super;
173
174 public:
179 };
180}// namespace DGtal
181
183// Includes inline functions
184#include "DGtal/geometry/curves/estimation/LambdaMST2D.ih"
185
186// //
188
189#endif // !defined LAMBDAMST2D_h
190
191#undef LAMBDAMST2D_RECURSES
192#endif // else defined(LAMBDAMST2D_RECURSES)
Aim: This class encapsulates its parameter class so that to indicate to the user that the object/poin...
Definition: Alias.h:183
BOOST_STATIC_ASSERT((TSpace::dimension==2))
BOOST_CONCEPT_ASSERT((concepts::CLMSTTangentFromDSS< Functor >))
SegmentComputer::ConstIterator ConstIterator
Type of iterator, at least readable and forward.
Definition: LambdaMST2D.h:71
TSegmentation::SegmentComputer SegmentComputer
Curve segmentation algorithm.
Definition: LambdaMST2D.h:69
Functor::Value Value
Type returned by model of CLMSTTangentFrom2DSS.
Definition: LambdaMST2D.h:73
RealVector eval(const Point &p)
void init(ConstIterator itb, ConstIterator ite)
TSpace::Point Point
Type of 3d real point.
Definition: LambdaMST2D.h:77
OutputIterator eval(ConstIterator itb, ConstIterator ite, OutputIterator result)
LambdaMST2DEstimator()
Default constructor.
void accumulate(std::vector< Value > &outValues, OutputIterator &result)
Accumulate partial results obtained for each point.
void attach(Alias< TSegmentation > SegmentComputer)
TSpace::RealVector RealVector
Type of 3d real vector.
Definition: LambdaMST2D.h:75
TSegmentation Segmentation
Tangential cover algorithm.
Definition: LambdaMST2D.h:67
BOOST_CONCEPT_ASSERT((concepts::CForwardSegmentComputer< typename TSegmentation::SegmentComputer >))
TSegmentation * dssSegments
Definition: LambdaMST2D.h:154
BOOST_CONCEPT_ASSERT((concepts::CSpace< TSpace >))
Aim: Simplify creation of Lambda MST tangent estimator.
Definition: LambdaMST2D.h:170
LambdaMST2DEstimator< Z2i::Space, DSSSegmentationComputer, TangentFromDSS2DFunctor< typename DSSSegmentationComputer::SegmentComputer, LambdaFunction > > Super
Definition: LambdaMST2D.h:172
SpaceND< 2, Integer > Space
Definition: StdDefs.h:75
DGtal is the top-level namespace which contains all DGtal functions and types.
Aim: Defines the concept describing a digital space, ie a cartesian product of integer lines.
Definition: CSpace.h:106
InHalfPlaneBySimple3x3Matrix< Point, double > Functor