DGtal  0.6.devel
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
Data Structures | Public Types | Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes
DGtal::DigitalSetBoundary< TKSpace, TDigitalSet > Class Template Reference

#include <DigitalSetBoundary.h>

Collaboration diagram for DGtal::DigitalSetBoundary< TKSpace, TDigitalSet >:
Collaboration graph
[legend]

Data Structures

class  Tracker

Public Types

typedef DigitalSetBoundary
< TKSpace, TDigitalSet > 
Self
typedef TKSpace KSpace
typedef KSpace::SCell Surfel
typedef KSpace::Size Size
typedef TDigitalSet DigitalSet
typedef std::vector< SurfelSurfelStorage
typedef
SurfelStorage::const_iterator 
SurfelConstIterator
typedef KSpace::Space Space
typedef DigitalSet::Domain Domain
typedef DigitalSet::Point Point
typedef Tracker DigitalSurfaceTracker
typedef SurfelAdjacency
< KSpace::dimension > 
Adjacency
typedef KSpace::Cell Cell
typedef KSpace::SCell SCell

Public Member Functions

 ~DigitalSetBoundary ()
 DigitalSetBoundary (const DigitalSetBoundary &other)
 DigitalSetBoundary (const KSpace &aKSpace, const DigitalSet &aSet, const Adjacency &adj=Adjacency(true))
const AdjacencysurfelAdjacency () const
AdjacencysurfelAdjacency ()
const DigitalSetdigitalSet () const
const KSpacespace () const
bool isInside (const Surfel &s) const
SurfelConstIterator begin () const
SurfelConstIterator end () const
Size nbSurfels () const
bool empty () const
DigitalSurfaceTrackernewTracker (const Surfel &s) const
Connectedness connectedness () const
void selfDisplay (std::ostream &out) const
bool isValid () const

Protected Member Functions

void computeSurfels ()

Private Member Functions

DigitalSetBoundaryoperator= (const DigitalSetBoundary &other)

Private Attributes

const KSpacemyKSpace
DigitalSet myDigitalSet
Adjacency mySurfelAdjacency
SurfelStorage mySurfels

Detailed Description

template<typename TKSpace, typename TDigitalSet>
class DGtal::DigitalSetBoundary< TKSpace, TDigitalSet >

Aim: A model of CDigitalSurfaceContainer which defines the digital surface as the boundary of a given digital set.

Description of template class 'DigitalSetBoundary'

Template Parameters:
TKSpacea model of CCellularGridSpaceND: the type chosen for the cellular grid space.
TDigitalSeta model of CDigitalSet: the type chosen for the set of digital points.
Examples:
geometry/surfaces/greedy-plane-segmentation-ex2.cpp, and geometry/surfaces/greedy-plane-segmentation.cpp.

Definition at line 68 of file DigitalSetBoundary.h.


Member Typedef Documentation

template<typename TKSpace, typename TDigitalSet>
typedef SurfelAdjacency<KSpace::dimension> DGtal::DigitalSetBoundary< TKSpace, TDigitalSet >::Adjacency

Definition at line 165 of file DigitalSetBoundary.h.

template<typename TKSpace, typename TDigitalSet>
typedef KSpace::Cell DGtal::DigitalSetBoundary< TKSpace, TDigitalSet >::Cell

Definition at line 166 of file DigitalSetBoundary.h.

template<typename TKSpace, typename TDigitalSet>
typedef TDigitalSet DGtal::DigitalSetBoundary< TKSpace, TDigitalSet >::DigitalSet

Definition at line 155 of file DigitalSetBoundary.h.

template<typename TKSpace, typename TDigitalSet>
typedef Tracker DGtal::DigitalSetBoundary< TKSpace, TDigitalSet >::DigitalSurfaceTracker

Definition at line 161 of file DigitalSetBoundary.h.

template<typename TKSpace, typename TDigitalSet>
typedef DigitalSet::Domain DGtal::DigitalSetBoundary< TKSpace, TDigitalSet >::Domain

Definition at line 159 of file DigitalSetBoundary.h.

template<typename TKSpace, typename TDigitalSet>
typedef TKSpace DGtal::DigitalSetBoundary< TKSpace, TDigitalSet >::KSpace

Definition at line 152 of file DigitalSetBoundary.h.

template<typename TKSpace, typename TDigitalSet>
typedef DigitalSet::Point DGtal::DigitalSetBoundary< TKSpace, TDigitalSet >::Point

Definition at line 160 of file DigitalSetBoundary.h.

template<typename TKSpace, typename TDigitalSet>
typedef KSpace::SCell DGtal::DigitalSetBoundary< TKSpace, TDigitalSet >::SCell

Definition at line 167 of file DigitalSetBoundary.h.

template<typename TKSpace, typename TDigitalSet>
typedef DigitalSetBoundary<TKSpace,TDigitalSet> DGtal::DigitalSetBoundary< TKSpace, TDigitalSet >::Self

Definition at line 151 of file DigitalSetBoundary.h.

template<typename TKSpace, typename TDigitalSet>
typedef KSpace::Size DGtal::DigitalSetBoundary< TKSpace, TDigitalSet >::Size

Definition at line 154 of file DigitalSetBoundary.h.

template<typename TKSpace, typename TDigitalSet>
typedef KSpace::Space DGtal::DigitalSetBoundary< TKSpace, TDigitalSet >::Space

Definition at line 158 of file DigitalSetBoundary.h.

template<typename TKSpace, typename TDigitalSet>
typedef KSpace::SCell DGtal::DigitalSetBoundary< TKSpace, TDigitalSet >::Surfel

Definition at line 153 of file DigitalSetBoundary.h.

template<typename TKSpace, typename TDigitalSet>
typedef SurfelStorage::const_iterator DGtal::DigitalSetBoundary< TKSpace, TDigitalSet >::SurfelConstIterator

Definition at line 157 of file DigitalSetBoundary.h.

template<typename TKSpace, typename TDigitalSet>
typedef std::vector<Surfel> DGtal::DigitalSetBoundary< TKSpace, TDigitalSet >::SurfelStorage

Definition at line 156 of file DigitalSetBoundary.h.


Constructor & Destructor Documentation

template<typename TKSpace , typename TDigitalSet >
DGtal::DigitalSetBoundary< TKSpace, TDigitalSet >::~DigitalSetBoundary ( )
inline

Destructor.

Definition at line 124 of file DigitalSetBoundary.ih.

{
}
template<typename TKSpace , typename TDigitalSet >
DGtal::DigitalSetBoundary< TKSpace, TDigitalSet >::DigitalSetBoundary ( const DigitalSetBoundary< TKSpace, TDigitalSet > &  other)
inline

Copy constructor.

Parameters:
otherthe object to clone.

Definition at line 131 of file DigitalSetBoundary.ih.

template<typename TKSpace , typename TDigitalSet >
DGtal::DigitalSetBoundary< TKSpace, TDigitalSet >::DigitalSetBoundary ( const KSpace aKSpace,
const DigitalSet aSet,
const Adjacency adj = Adjacency( true ) 
)
inline

Constructor from digital set.

Parameters:
aKSpacea cellular grid space (referenced).
aSeta set of points that is duplicated in 'this'.
adjthe surfel adjacency (default is interior to exterior adjacency ).

Definition at line 141 of file DigitalSetBoundary.ih.

References DGtal::DigitalSetBoundary< TKSpace, TDigitalSet >::computeSurfels().

: myKSpace( aKSpace ), myDigitalSet( aSet ), mySurfelAdjacency( adj )
{
}

Member Function Documentation

template<typename TKSpace , typename TDigitalSet >
DGtal::DigitalSetBoundary< TKSpace, TDigitalSet >::SurfelConstIterator DGtal::DigitalSetBoundary< TKSpace, TDigitalSet >::begin ( ) const
inline
Returns:
an iterator pointing on the first surfel of the digital surface (unspecified order).

Definition at line 211 of file DigitalSetBoundary.ih.

References DGtal::DigitalSetBoundary< TKSpace, TDigitalSet >::mySurfels.

{
return mySurfels.begin();
}
template<typename TKSpace , typename TDigitalSet >
void DGtal::DigitalSetBoundary< TKSpace, TDigitalSet >::computeSurfels ( )
inlineprotected

Recomputes the set of boundary surfels from the set of points.

Definition at line 262 of file DigitalSetBoundary.ih.

References DGtal::DigitalSetBoundary< TKSpace, TDigitalSet >::myDigitalSet, DGtal::DigitalSetBoundary< TKSpace, TDigitalSet >::myKSpace, and DGtal::DigitalSetBoundary< TKSpace, TDigitalSet >::mySurfels.

Referenced by DGtal::DigitalSetBoundary< TKSpace, TDigitalSet >::DigitalSetBoundary().

{
mySurfels.clear();
std::back_insert_iterator<SurfelStorage> output_it =
std::back_inserter( mySurfels );
isInSet,
myKSpace.lowerBound(),
myKSpace.upperBound() );
}
template<typename TKSpace , typename TDigitalSet >
DGtal::Connectedness DGtal::DigitalSetBoundary< TKSpace, TDigitalSet >::connectedness ( ) const
inline
Returns:
the connectedness of this surface. Either CONNECTED, DISCONNECTED, or UNKNOWN.

Definition at line 252 of file DigitalSetBoundary.ih.

References DGtal::UNKNOWN.

{
return UNKNOWN;
}
template<typename TKSpace , typename TDigitalSet >
const DGtal::DigitalSetBoundary< TKSpace, TDigitalSet >::DigitalSet & DGtal::DigitalSetBoundary< TKSpace, TDigitalSet >::digitalSet ( ) const
inline
template<typename TKSpace , typename TDigitalSet >
bool DGtal::DigitalSetBoundary< TKSpace, TDigitalSet >::empty ( ) const
inline
Returns:
'true' is the surface has no surfels, 'false' otherwise. NB: O(1) operation.

Definition at line 235 of file DigitalSetBoundary.ih.

References DGtal::DigitalSetBoundary< TKSpace, TDigitalSet >::mySurfels.

{
return mySurfels.empty();
}
template<typename TKSpace , typename TDigitalSet >
DGtal::DigitalSetBoundary< TKSpace, TDigitalSet >::SurfelConstIterator DGtal::DigitalSetBoundary< TKSpace, TDigitalSet >::end ( ) const
inline
Returns:
an iterator after the last surfel of the digital surface (unspecified order).

Definition at line 219 of file DigitalSetBoundary.ih.

References DGtal::DigitalSetBoundary< TKSpace, TDigitalSet >::mySurfels.

{
return mySurfels.end();
}
template<typename TKSpace , typename TDigitalSet >
bool DGtal::DigitalSetBoundary< TKSpace, TDigitalSet >::isInside ( const Surfel s) const
inline
Parameters:
sany surfel of the space.
Returns:
'true' if s belongs to this digital surface.

Definition at line 190 of file DigitalSetBoundary.ih.

References DGtal::DigitalSetBoundary< TKSpace, TDigitalSet >::myDigitalSet, and DGtal::DigitalSetBoundary< TKSpace, TDigitalSet >::myKSpace.

Referenced by DGtal::DigitalSetBoundary< TKSpace, TDigitalSet >::Tracker::move().

{
Dimension k = myKSpace.sOrthDir( s );
// checks if the surfel is on the space boundary.
if ( myKSpace.sIsMax( s, k ) || myKSpace.sIsMin( s, k ) )
return false;
// p1 must be in the set and p2 must not be in the set.
SCell spel1 = myKSpace.sDirectIncident( s, k );
Point p1 = myKSpace.sCoords( spel1 );
if ( myDigitalSet.find( p1 ) != myDigitalSet.end() )
{
SCell spel2 = myKSpace.sIndirectIncident( s, k );
Point p2 = myKSpace.sCoords( spel2 );
return ! ( myDigitalSet.find( p2 ) != myDigitalSet.end() );
}
return false;
}
template<typename TKSpace , typename TDigitalSet >
bool DGtal::DigitalSetBoundary< TKSpace, TDigitalSet >::isValid ( ) const
inline

Checks the validity/consistency of the object.

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

Definition at line 297 of file DigitalSetBoundary.ih.

{
return true;
}
template<typename TKSpace , typename TDigitalSet >
DGtal::DigitalSetBoundary< TKSpace, TDigitalSet >::Size DGtal::DigitalSetBoundary< TKSpace, TDigitalSet >::nbSurfels ( ) const
inline
Returns:
the number of surfels of this digital surface.

Definition at line 227 of file DigitalSetBoundary.ih.

References DGtal::DigitalSetBoundary< TKSpace, TDigitalSet >::mySurfels.

{
return (unsigned int)mySurfels.size();
}
template<typename TKSpace , typename TDigitalSet >
DGtal::DigitalSetBoundary< TKSpace, TDigitalSet >::DigitalSurfaceTracker * DGtal::DigitalSetBoundary< TKSpace, TDigitalSet >::newTracker ( const Surfel s) const
inline
Parameters:
sany surfel of the space.
Precondition:
'isInside( s )'
Returns:
a dyn. alloc. pointer on a tracker positionned at s.

Definition at line 244 of file DigitalSetBoundary.ih.

{
return new Tracker( *this, s );
}
template<typename TKSpace, typename TDigitalSet>
DigitalSetBoundary& DGtal::DigitalSetBoundary< TKSpace, TDigitalSet >::operator= ( const DigitalSetBoundary< TKSpace, TDigitalSet > &  other)
private

Assignment.

Parameters:
otherthe object to copy.
Returns:
a reference on 'this'. Forbidden by default.
template<typename TKSpace , typename TDigitalSet >
void DGtal::DigitalSetBoundary< TKSpace, TDigitalSet >::selfDisplay ( std::ostream &  out) const
inline

Writes/Displays the object on an output stream.

Parameters:
outthe output stream where the object is written.

Definition at line 285 of file DigitalSetBoundary.ih.

{
out << "[DigitalSetBoundary]";
}
template<typename TKSpace , typename TDigitalSet >
const DGtal::DigitalSetBoundary< TKSpace, TDigitalSet >::KSpace & DGtal::DigitalSetBoundary< TKSpace, TDigitalSet >::space ( ) const
inline
Returns:
the cellular space in which lives the surface.

Definition at line 181 of file DigitalSetBoundary.ih.

References DGtal::DigitalSetBoundary< TKSpace, TDigitalSet >::myKSpace.

Referenced by DGtal::DigitalSetBoundary< TKSpace, TDigitalSet >::Tracker::Tracker().

{
return myKSpace;
}
template<typename TKSpace , typename TDigitalSet >
const DGtal::DigitalSetBoundary< TKSpace, TDigitalSet >::Adjacency & DGtal::DigitalSetBoundary< TKSpace, TDigitalSet >::surfelAdjacency ( ) const
inline
template<typename TKSpace , typename TDigitalSet >
DGtal::DigitalSetBoundary< TKSpace, TDigitalSet >::Adjacency & DGtal::DigitalSetBoundary< TKSpace, TDigitalSet >::surfelAdjacency ( )
inline

mutator to surfel adjacency.

Definition at line 161 of file DigitalSetBoundary.ih.

References DGtal::DigitalSetBoundary< TKSpace, TDigitalSet >::mySurfelAdjacency.

{
}

Field Documentation

template<typename TKSpace, typename TDigitalSet>
DigitalSet DGtal::DigitalSetBoundary< TKSpace, TDigitalSet >::myDigitalSet
private
template<typename TKSpace, typename TDigitalSet>
const KSpace& DGtal::DigitalSetBoundary< TKSpace, TDigitalSet >::myKSpace
private
template<typename TKSpace, typename TDigitalSet>
Adjacency DGtal::DigitalSetBoundary< TKSpace, TDigitalSet >::mySurfelAdjacency
private

the surfel adjacency used to determine neighbors.

Definition at line 265 of file DigitalSetBoundary.h.

Referenced by DGtal::DigitalSetBoundary< TKSpace, TDigitalSet >::surfelAdjacency().

template<typename TKSpace, typename TDigitalSet>
SurfelStorage DGtal::DigitalSetBoundary< TKSpace, TDigitalSet >::mySurfels
private

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