DGtal
0.6.devel
|
#include <Expander.h>
Public Types | |
typedef TObject | Object |
typedef Object::Size | Size |
typedef Object::Point | Point |
typedef Object::Domain | Domain |
typedef Object::DigitalSet | DigitalSet |
typedef Object::ForegroundAdjacency | ForegroundAdjacency |
typedef Domain::Space | Space |
typedef DigitalSet::ConstIterator | ConstIterator |
typedef DigitalSetDomain < DigitalSet > | ObjectDomain |
typedef DigitalSetDomain < DigitalSet > | CoreDomain |
typedef DomainAdjacency < ObjectDomain, ForegroundAdjacency > | ObjectAdjacency |
typedef CoreDomain::Predicate | InCoreDomainPredicate |
typedef NotPointPredicate < InCoreDomainPredicate > | NotInCoreDomainPredicate |
Public Member Functions | |
~Expander () | |
Expander (const Object &object, const Point &p) | |
template<typename PointInputIterator > | |
Expander (const Object &object, PointInputIterator b, PointInputIterator e) | |
bool | finished () const |
Size | distance () const |
bool | nextLayer () |
const DigitalSet & | core () const |
const DigitalSet & | layer () const |
ConstIterator | begin () const |
ConstIterator | end () const |
void | selfDisplay (std::ostream &out) const |
bool | isValid () const |
Protected Member Functions | |
Expander () | |
void | computeNextLayer (const DigitalSet &src) |
void | endLayer () |
Private Member Functions | |
Expander (const Expander &other) | |
Expander & | operator= (const Expander &other) |
Private Attributes | |
const Domain & | myEmbeddingDomain |
const Object & | myObject |
ObjectDomain | myObjectDomain |
ObjectAdjacency | myObjectAdjacency |
DigitalSet | myCore |
DigitalSet | myLayer |
Size | myDistance |
bool | myFinished |
InCoreDomainPredicate | myInCorePred |
NotInCoreDomainPredicate | myNotInCorePred |
Aim: This class is useful to visit an object by adjacencies, layer by layer.
Description of template class 'Expander'
The expander implements a breadth-first algorithm on the graph of adjacencies. It can be used not only to detect connected component but also to identify the layers of the object located at a given distance of a starting set.
The core of the expander is at the beginning the set of points at distance 0. Each layer is at a different distance from the initial core. The expander move layer by layer but the user is free to navigate on each layer.
TObject | the type of the digital object. |
Definition at line 96 of file Expander.h.
typedef DigitalSet::ConstIterator DGtal::Expander< TObject >::ConstIterator |
Definition at line 107 of file Expander.h.
typedef DigitalSetDomain<DigitalSet> DGtal::Expander< TObject >::CoreDomain |
Definition at line 109 of file Expander.h.
typedef Object::DigitalSet DGtal::Expander< TObject >::DigitalSet |
Definition at line 104 of file Expander.h.
typedef Object::Domain DGtal::Expander< TObject >::Domain |
Definition at line 103 of file Expander.h.
typedef Object::ForegroundAdjacency DGtal::Expander< TObject >::ForegroundAdjacency |
Definition at line 105 of file Expander.h.
typedef CoreDomain::Predicate DGtal::Expander< TObject >::InCoreDomainPredicate |
Definition at line 111 of file Expander.h.
typedef NotPointPredicate< InCoreDomainPredicate > DGtal::Expander< TObject >::NotInCoreDomainPredicate |
Definition at line 112 of file Expander.h.
typedef TObject DGtal::Expander< TObject >::Object |
Definition at line 100 of file Expander.h.
typedef DomainAdjacency< ObjectDomain, ForegroundAdjacency> DGtal::Expander< TObject >::ObjectAdjacency |
Definition at line 110 of file Expander.h.
typedef DigitalSetDomain<DigitalSet> DGtal::Expander< TObject >::ObjectDomain |
Definition at line 108 of file Expander.h.
typedef Object::Point DGtal::Expander< TObject >::Point |
Definition at line 102 of file Expander.h.
typedef Object::Size DGtal::Expander< TObject >::Size |
Definition at line 101 of file Expander.h.
typedef Domain::Space DGtal::Expander< TObject >::Space |
Definition at line 106 of file Expander.h.
|
inline |
|
inline |
Constructor from a point. This point provides the initial core of the expander.
object | the digital object in which the expander expands. |
p | any point in the given object. |
Definition at line 60 of file Expander.ih.
References DGtal::Expander< TObject >::computeNextLayer(), DGtal::false, DGtal::DigitalSetDomain< TDigitalSet >::isInside(), DGtal::Expander< TObject >::myCore, and DGtal::Expander< TObject >::myObjectDomain.
|
inline |
Constructor from iterators. All points visited between the iterators should be distinct two by two. The so specified set of points provides the initial core of the expander.
the | type of an InputIterator pointing on a Point. |
object | the digital object in which the expander expands. |
b | the begin point in a set. |
e | the end point in a set. |
Definition at line 91 of file Expander.ih.
References DGtal::Expander< TObject >::computeNextLayer(), and DGtal::Expander< TObject >::myCore.
|
protected |
Constructor. Forbidden by default (protected to avoid g++ warnings).
|
private |
Copy constructor.
other | the object to clone. Forbidden by default. |
|
inline |
Definition at line 257 of file Expander.ih.
References DGtal::Expander< TObject >::begin().
Referenced by DGtal::Expander< TObject >::begin(), and DGtal::Expander< TObject >::computeNextLayer().
|
inlineprotected |
Computes the next layer just around [src]. The member 'm_core' must be up to date (i.e, [src] is a subset of 'm_core'). 'm_layer' is cleared in this method. At first call, [src] should be 'm_core', then [src] should be 'm_layer'.
src | the set around which the new layer is computed. |
Definition at line 175 of file Expander.ih.
References DGtal::andBF2, and DGtal::Expander< TObject >::begin().
Referenced by DGtal::Expander< TObject >::Expander().
|
inline |
Definition at line 233 of file Expander.ih.
|
inline |
Definition at line 126 of file Expander.ih.
|
inline |
Definition at line 269 of file Expander.ih.
References DGtal::Expander< TObject >::end().
Referenced by DGtal::Expander< TObject >::end().
|
inlineprotected |
Push the layer into the current core and clear it. Must be called before computeNewLayer.
Push the layer into the current core. Must be called before computeNextLayer.
Definition at line 158 of file Expander.ih.
|
inline |
Definition at line 114 of file Expander.ih.
|
inline |
Checks the validity/consistency of the object.
Definition at line 300 of file Expander.ih.
|
inline |
Definition at line 245 of file Expander.ih.
|
inline |
Extract next layer. You might used begin() and end() to access all the elements of the new layer.
Definition at line 143 of file Expander.ih.
|
private |
Assignment.
other | the object to copy. |
|
inline |
Writes/Displays the object on an output stream.
out | the output stream where the object is written. |
Definition at line 285 of file Expander.ih.
|
private |
Set representing the core of the expansion: the expansion should not enter the core.
Definition at line 234 of file Expander.h.
Referenced by DGtal::Expander< TObject >::Expander().
|
private |
Current distance to origin.
Definition at line 244 of file Expander.h.
|
private |
The domain in which the object is lying.
Definition at line 213 of file Expander.h.
|
private |
Boolean stating whether the expansion is over or not.
Definition at line 249 of file Expander.h.
|
private |
Predicate in-core.
Definition at line 254 of file Expander.h.
|
private |
Set representing the current layer.
Definition at line 239 of file Expander.h.
|
private |
Predicate ensuring the not-in-core expansion.
Definition at line 259 of file Expander.h.
|
private |
The object where the expansion takes place.
Definition at line 218 of file Expander.h.
|
private |
The adjacency that is used in myObjectDomain.
Definition at line 228 of file Expander.h.
|
private |
The domain corresponding to the object.
Definition at line 223 of file Expander.h.
Referenced by DGtal::Expander< TObject >::Expander().