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

#include <SaturatedSegmentation.h>

Data Structures

class  SegmentComputerIterator
 Aim: Specific iterator to visit all the maximal segments of a saturated segmentation. More...

Public Types

typedef TSegmentComputer SegmentComputer
typedef
SegmentComputer::ConstIterator 
ConstIterator

Public Member Functions

 BOOST_CONCEPT_ASSERT ((CForwardSegmentComputer< TSegmentComputer >))
 SaturatedSegmentation ()
 SaturatedSegmentation (const ConstIterator &itb, const ConstIterator &ite, const SegmentComputer &aSegmentComputer)
void setSubRange (const ConstIterator &itb, const ConstIterator &ite)
void setMode (const std::string &aMode)
 ~SaturatedSegmentation ()
SaturatedSegmentation::SegmentComputerIterator begin () const
SaturatedSegmentation::SegmentComputerIterator end () const
void selfDisplay (std::ostream &out) const
bool isValid () const

Private Types

typedef TSegmentComputer::Reverse ReverseSegmentComputer
typedef
ReverseSegmentComputer::ConstIterator 
ConstReverseIterator

Private Member Functions

 SaturatedSegmentation (const SaturatedSegmentation &other)
SaturatedSegmentationoperator= (const SaturatedSegmentation &other)

Private Attributes

ConstIterator myBegin
ConstIterator myEnd
ConstIterator myStart
ConstIterator myStop
std::string myMode
SegmentComputer mySegmentComputer

Detailed Description

template<typename TSegmentComputer>
class DGtal::SaturatedSegmentation< TSegmentComputer >

Aim: Computes the saturated segmentation, that is the whole set of maximal segments within a range given by a pair of ConstIterators (maximal segments are segments that cannot be included in greater segments).

Description of template class 'SaturatedSegmentation'

This class is a model of CSegmentation.

Template Parameters:
TSegmentComputerat least a model of CForwardSegmentComputer (an online algorithm for the recognition of a given class of segments).

In the short example below, a digital curve stored in a STL vector is decomposed into maximal 8-connected DSSs whose parameters are sent to the standard output.

//types definition
typedef PointVector<2,int> Point;
typedef std::vector<Point> Range;
typedef Range::const_iterator ConstIterator;
typedef ArithmeticalDSS<ConstIterator,int,8> SegmentComputer;
typedef SaturatedSegmentation<SegmentComputer> Segmentation;
//input points
Range curve;
curve.push_back(Point(1,1));
curve.push_back(Point(2,1));
curve.push_back(Point(3,2));
curve.push_back(Point(4,2));
curve.push_back(Point(5,2));
curve.push_back(Point(6,2));
curve.push_back(Point(7,2));
curve.push_back(Point(8,1));
curve.push_back(Point(9,1));
//Segmentation
SegmentComputer recognitionAlgorithm;
Segmentation theSegmentation(curve.begin(), curve.end(), recognitionAlgorithm);
Segmentation::SegmentComputerIterator i = theSegmentation.begin();
Segmentation::SegmentComputerIterator end = theSegmentation.end();
for ( ; i != end; ++i) {
SegmentComputer current(*i);
trace.info() << current << std::endl; //standard output
}

If you want to get the saturated segmentation of a part of the digital curve (not the whole digital curve), you can give the range to process as a pair of iterators when calling the setSubRange() method as follow:

theSegmentation.setSubRange(beginIt, endIt);

Obviously, [beginIt, endIt) has to be a valid range included in the wider range [curve.begin(), curve.end()).

Moreover, the segmentation at the ends depends of the underlying digital curve. Among the whole set of maximal segments that pass through the first (resp. last) element of the range, one maximal segment must be chosen as the first (resp. last) retrieved maximal segments. Several processing modes are therefore available:

The mode i indicates that the segmentation begins with the i maximal segment passing through the first element and ends with the i maximal segment passing through the last element. The last retrieved segment of the segmentation is not included in the simple "XXX" modes, but is included in the "XXX++" modes.

For instance, in the default mode "MostCentered", the segmentation begins with the most centered maximal segment passing through the first element and ends (without including it) with the most centered maximal segment passing through the last element. This mode is basically used to process a whole circular structure so that the first maximal segment is not retrieved twice. However, in order to include the most centered maximal segment passing through the last element in a subpart, you should use the "MostCentered++" mode.

In order to set a mode (before getting a SegmentComputerIterator), use the setMode() method as follow:

theSegmentation.setMode("First");
See also:
testSegmentation.cpp

Definition at line 153 of file SaturatedSegmentation.h.


Member Typedef Documentation

template<typename TSegmentComputer>
typedef SegmentComputer::ConstIterator DGtal::SaturatedSegmentation< TSegmentComputer >::ConstIterator

Definition at line 160 of file SaturatedSegmentation.h.

template<typename TSegmentComputer>
typedef ReverseSegmentComputer::ConstIterator DGtal::SaturatedSegmentation< TSegmentComputer >::ConstReverseIterator
private

Definition at line 165 of file SaturatedSegmentation.h.

template<typename TSegmentComputer>
typedef TSegmentComputer::Reverse DGtal::SaturatedSegmentation< TSegmentComputer >::ReverseSegmentComputer
private

Definition at line 164 of file SaturatedSegmentation.h.

template<typename TSegmentComputer>
typedef TSegmentComputer DGtal::SaturatedSegmentation< TSegmentComputer >::SegmentComputer

Definition at line 159 of file SaturatedSegmentation.h.


Constructor & Destructor Documentation

template<typename TSegmentComputer>
DGtal::SaturatedSegmentation< TSegmentComputer >::SaturatedSegmentation ( )
inline

Default constructor.

Nb: not valid

Definition at line 406 of file SaturatedSegmentation.h.

{};
template<typename TSegmentComputer >
DGtal::SaturatedSegmentation< TSegmentComputer >::SaturatedSegmentation ( const ConstIterator itb,
const ConstIterator ite,
const SegmentComputer aSegmentComputer 
)

Constructor.

Parameters:
itbbegin iterator of the underlying range
iteend iterator of the underlying range
aSegmentComputeran online segment recognition algorithm.

Definition at line 409 of file SaturatedSegmentation.ih.

: myBegin(itb),
myEnd(ite),
myStart(itb),
myStop(ite),
myMode("MostCentered"),
mySegmentComputer(aSegmentComputer)
{
}
template<typename TSegmentComputer >
DGtal::SaturatedSegmentation< TSegmentComputer >::~SaturatedSegmentation ( )
inline

Destructor.

Definition at line 451 of file SaturatedSegmentation.ih.

{
}
template<typename TSegmentComputer>
DGtal::SaturatedSegmentation< TSegmentComputer >::SaturatedSegmentation ( const SaturatedSegmentation< TSegmentComputer > &  other)
private

Copy constructor.

Parameters:
otherthe object to clone.

Member Function Documentation

template<typename TSegmentComputer >
DGtal::SaturatedSegmentation< TSegmentComputer >::SegmentComputerIterator DGtal::SaturatedSegmentation< TSegmentComputer >::begin ( ) const
inline

ConstIterator service.

Returns:
an iterator pointing on the first segment of a digital curve.

Definition at line 459 of file SaturatedSegmentation.ih.

References DGtal::SaturatedSegmentation< TSegmentComputer >::mySegmentComputer.

Referenced by DGtal::MostCenteredMaximalSegmentEstimator< SegmentComputer, SCEstimator >::eval().

{
return SegmentComputerIterator(this, mySegmentComputer, true);
}
template<typename TSegmentComputer>
DGtal::SaturatedSegmentation< TSegmentComputer >::BOOST_CONCEPT_ASSERT ( (CForwardSegmentComputer< TSegmentComputer >)  )
template<typename TSegmentComputer >
DGtal::SaturatedSegmentation< TSegmentComputer >::SegmentComputerIterator DGtal::SaturatedSegmentation< TSegmentComputer >::end ( ) const
inline

ConstIterator service.

Returns:
an iterator pointing after the last segment of a digital curve.

Definition at line 468 of file SaturatedSegmentation.ih.

References DGtal::SaturatedSegmentation< TSegmentComputer >::mySegmentComputer.

Referenced by DGtal::MostCenteredMaximalSegmentEstimator< SegmentComputer, SCEstimator >::eval().

{
return SegmentComputerIterator(this, mySegmentComputer, false);
}
template<typename TSegmentComputer >
bool DGtal::SaturatedSegmentation< TSegmentComputer >::isValid ( ) const
inline

Checks the validity/consistency of the object.

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

Definition at line 487 of file SaturatedSegmentation.ih.

Referenced by DGtal::SaturatedSegmentation< TSegmentComputer >::SegmentComputerIterator::operator==().

{
return true;
}
template<typename TSegmentComputer>
SaturatedSegmentation& DGtal::SaturatedSegmentation< TSegmentComputer >::operator= ( const SaturatedSegmentation< TSegmentComputer > &  other)
private

Assignment.

Parameters:
otherthe object to copy.
Returns:
a reference on 'this'.
template<typename TSegmentComputer >
void DGtal::SaturatedSegmentation< TSegmentComputer >::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 478 of file SaturatedSegmentation.ih.

{
out << "[SaturatedSegmentation]";
}
template<typename TSegmentComputer >
void DGtal::SaturatedSegmentation< TSegmentComputer >::setMode ( const std::string &  aMode)
inline

Set processing mode

Parameters:
aModeone of the 3 available modes : "Truncate" (default), "Truncate+1", "DoNotTruncate".

Definition at line 435 of file SaturatedSegmentation.ih.

References DGtal::SaturatedSegmentation< TSegmentComputer >::myMode.

Referenced by DGtal::MostCenteredMaximalSegmentEstimator< SegmentComputer, SCEstimator >::eval().

{
if ( (aMode == "First") || (aMode == "Last") || (aMode == "MostCentered")
|| (aMode == "First++") || (aMode == "Last++") || (aMode == "MostCentered++") )
myMode = aMode;
else
{
std::cerr << "[DGtal::SaturatedSegmentation<TSegmentComputer>::setMode(const std::string& aMode)]"
<< " ERROR. Unknown mode." << std::endl;
throw InputException();
}
}
template<typename TSegmentComputer >
void DGtal::SaturatedSegmentation< TSegmentComputer >::setSubRange ( const ConstIterator itb,
const ConstIterator ite 
)
inline

Set a subrange to process

Parameters:
itbbegin iterator the range to processed
iteend iterator the range to processed

Nb: must be a valid range included in the underlying range.

Definition at line 424 of file SaturatedSegmentation.ih.

References DGtal::SaturatedSegmentation< TSegmentComputer >::myMode, DGtal::SaturatedSegmentation< TSegmentComputer >::myStart, and DGtal::SaturatedSegmentation< TSegmentComputer >::myStop.

Referenced by DGtal::MostCenteredMaximalSegmentEstimator< SegmentComputer, SCEstimator >::eval().

{
myStart = itb;
myStop = ite;
myMode = "MostCentered";
}

Field Documentation

template<typename TSegmentComputer>
ConstIterator DGtal::SaturatedSegmentation< TSegmentComputer >::myBegin
private

Begin iterator of the underlying range

Definition at line 475 of file SaturatedSegmentation.h.

template<typename TSegmentComputer>
ConstIterator DGtal::SaturatedSegmentation< TSegmentComputer >::myEnd
private

End iterator of the underlying range

Definition at line 480 of file SaturatedSegmentation.h.

template<typename TSegmentComputer>
std::string DGtal::SaturatedSegmentation< TSegmentComputer >::myMode
private

Mode: either "First", "MostCentered" (default), "Last"

Definition at line 495 of file SaturatedSegmentation.h.

Referenced by DGtal::SaturatedSegmentation< TSegmentComputer >::setMode(), and DGtal::SaturatedSegmentation< TSegmentComputer >::setSubRange().

template<typename TSegmentComputer>
SegmentComputer DGtal::SaturatedSegmentation< TSegmentComputer >::mySegmentComputer
private
template<typename TSegmentComputer>
ConstIterator DGtal::SaturatedSegmentation< TSegmentComputer >::myStart
private

Begin iterator of the subrange to segment

Definition at line 485 of file SaturatedSegmentation.h.

Referenced by DGtal::SaturatedSegmentation< TSegmentComputer >::setSubRange().

template<typename TSegmentComputer>
ConstIterator DGtal::SaturatedSegmentation< TSegmentComputer >::myStop
private

End iterator of the subrange to segment

Definition at line 490 of file SaturatedSegmentation.h.

Referenced by DGtal::SaturatedSegmentation< TSegmentComputer >::setSubRange().


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