All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
te::rp::SegmenterRegionGrowingStrategy Class Reference

Raster region growing segmenter strategy. More...

#include <SegmenterRegionGrowingStrategy.h>

Inheritance diagram for te::rp::SegmenterRegionGrowingStrategy:
te::rp::SegmenterStrategy

Classes

class  BaatzBasedSegment
 A segment based on Baatz features values. More...
 
class  BaatzMerger
 Baatz based Segments merger. More...
 
class  MeanBasedSegment
 A segment based on pixel mean values. More...
 
class  MeanMerger
 Mean based Segments merger. More...
 
class  Merger
 Segments merger. More...
 
class  Parameters
 Segmenter Parameters. More...
 
class  Segment
 Segment base class. More...
 
class  SegmentFeatures
 Segment features base class. More...
 
class  SegmentsIndexer
 Internal segments indexer. More...
 

Public Member Functions

bool execute (SegmenterIdsManager &segmenterIdsManager, const te::rst::Raster &inputRaster, const std::vector< unsigned int > &inputRasterBands, const std::vector< double > &inputRasterGains, const std::vector< double > &inputRasterOffsets, te::rst::Raster &outputRaster, const unsigned int outputRasterBand, const bool enableProgressInterface) throw ( te::rp::Exception )
 Executes the segmentation strategy. More...
 
double getMemUsageEstimation (const unsigned int bandsToProcess, const unsigned int pixelsNumber) const
 Returns a memory estimation (bytes). More...
 
unsigned int getOptimalBlocksOverlapSize () const
 Returns a optimal blocks overlap size (number of border pixels overlapped between blocks, under one direction). More...
 
bool initialize (SegmenterStrategyParameters const *const strategyParams) throw ( te::rp::Exception )
 Initialize the segmentation strategy. More...
 
void reset ()
 Clear all internal allocated resources and go back to the initial not-initialized state. More...
 
 SegmenterRegionGrowingStrategy ()
 
 ~SegmenterRegionGrowingStrategy ()
 

Protected Types

typedef Matrix
< SegmenterSegmentsBlock::SegmentIdDataType
SegmentsIdsMatrixT
 Internal segments ids matrix type definition. More...
 

Protected Member Functions

void exportSegs2Tif (const SegmentsIdsMatrixT &segmentsIds, bool normto8bits, const std::string &fileName)
 Export the segments IDs to a tif file. More...
 
bool initializeSegments (SegmenterIdsManager &segmenterIdsManager, const te::rst::Raster &inputRaster, const std::vector< unsigned int > &inputRasterBands, const std::vector< double > &inputRasterGains, const std::vector< double > &inputRasterOffsets, SegmentsIndexer &segments)
 Initialize the segment objects container and the segment IDs container. More...
 
unsigned int mergeSegments (const double similarityThreshold, SegmenterIdsManager &segmenterIdsManager, Merger &merger, const bool enablelocalMutualBestFitting, SegmentsIndexer &segsIndexer)
 Merge closest segments. More...
 
unsigned int mergeSmallSegments (const unsigned int minSegmentSize, SegmenterIdsManager &segmenterIdsManager, Merger &merger, SegmentsIndexer &segsIndexer)
 Merge only small segments to their closest segment. More...
 

Static Protected Member Functions

static void getTouchingEdgeLength (const SegmentsIdsMatrixT &segsIds, const unsigned int &xStart, const unsigned int &yStart, const unsigned int &xBound, const unsigned int &yBound, const SegmenterSegmentsBlock::SegmentIdDataType &id1, const SegmenterSegmentsBlock::SegmentIdDataType &id2, unsigned int &edgeLength1, unsigned int &edgeLength2)
 Returns the count of points from region 1 (with ID1) touching the region 2 (with ID2). More...
 

Protected Attributes

bool m_isInitialized
 true if this instance is initialized. More...
 
SegmenterRegionGrowingStrategy::Parameters m_parameters
 Internal execution parameters. More...
 
SegmentsIdsMatrixT m_segmentsIdsMatrix
 A internal segments IDs matrix that can be reused on each strategy execution. More...
 
SegmenterSegmentsPool m_segmentsPool
 A pool of segments that can be reused on each strategy execution. More...
 

Detailed Description

Raster region growing segmenter strategy.

Definition at line 48 of file SegmenterRegionGrowingStrategy.h.

Member Typedef Documentation

Internal segments ids matrix type definition.

Definition at line 132 of file SegmenterRegionGrowingStrategy.h.

Constructor & Destructor Documentation

te::rp::SegmenterRegionGrowingStrategy::~SegmenterRegionGrowingStrategy ( )

Definition at line 819 of file SegmenterRegionGrowingStrategy.cpp.

References reset().

te::rp::SegmenterRegionGrowingStrategy::SegmenterRegionGrowingStrategy ( )

Definition at line 814 of file SegmenterRegionGrowingStrategy.cpp.

References m_isInitialized.

Member Function Documentation

bool te::rp::SegmenterRegionGrowingStrategy::execute ( SegmenterIdsManager segmenterIdsManager,
const te::rst::Raster inputRaster,
const std::vector< unsigned int > &  inputRasterBands,
const std::vector< double > &  inputRasterGains,
const std::vector< double > &  inputRasterOffsets,
te::rst::Raster outputRaster,
const unsigned int  outputRasterBand,
const bool  enableProgressInterface 
)
throw (te::rp::Exception
)
virtual

Executes the segmentation strategy.

Parameters
segmenterIdsManagerThe segments IDs manager to be used when acquiring/releaseing unique segment IDs.
inputRasterInput raster.
inputRasterBandsInput raster bands.
inputRasterGainsNormalization gain values to be appliet over the respective input raster bands.
inputRasterOffsetsNormalization offset values to be appliet over the respective input raster bands.
outputRasterOutput raster.
outputRasterBandOutput raster band.
enableProgressInterfaceEnable the internal strategy to update the progress interface.
Returns
true if OK, false on errors.

Implements te::rp::SegmenterStrategy.

Definition at line 881 of file SegmenterRegionGrowingStrategy.cpp.

References te::rp::SegmenterRegionGrowingStrategy::Parameters::BaatzFeaturesType, initializeSegments(), te::rp::SegmenterRegionGrowingStrategy::Parameters::m_bandsWeights, te::rp::SegmenterRegionGrowingStrategy::Parameters::m_colorWeight, te::rp::SegmenterRegionGrowingStrategy::Parameters::m_compactnessWeight, m_isInitialized, te::rp::SegmenterRegionGrowingStrategy::Parameters::m_minSegmentSize, m_parameters, te::rp::SegmenterRegionGrowingStrategy::Parameters::m_segmentFeatures, m_segmentsIdsMatrix, m_segmentsPool, te::rp::SegmenterRegionGrowingStrategy::Parameters::m_segmentsSimilarityThreshold, te::rp::SegmenterRegionGrowingStrategy::Parameters::m_segmentsSimIncreaseSteps, te::rp::SegmenterRegionGrowingStrategy::Parameters::MeanFeaturesType, mergeSegments(), mergeSmallSegments(), TERP_LOG_AND_THROW, and TERP_TRUE_OR_RETURN_FALSE.

void te::rp::SegmenterRegionGrowingStrategy::exportSegs2Tif ( const SegmentsIdsMatrixT segmentsIds,
bool  normto8bits,
const std::string &  fileName 
)
protected

Export the segments IDs to a tif file.

Parameters
segmentsIdsThe output segment ids container.
normto8bitsIf true, a 8 bits file will be generated.
fileNameThe output tif file name.

Definition at line 1811 of file SegmenterRegionGrowingStrategy.cpp.

References te::rp::Matrix< TemplateElementType >::getColumnsNumber(), te::rp::Matrix< TemplateElementType >::getLinesNumber(), te::rst::RasterFactory::make(), te::rst::Raster::setValue(), TERP_TRUE_OR_THROW, te::dt::UCHAR_TYPE, and te::dt::UINT32_TYPE.

double te::rp::SegmenterRegionGrowingStrategy::getMemUsageEstimation ( const unsigned int  bandsToProcess,
const unsigned int  pixelsNumber 
) const
virtual

Returns a memory estimation (bytes).

This parameter is used by the segmenter to guess the sub-image blocks size.

Parameters
bandsToProcessThe number of input raster bands that will be processed at the strategy execution time.
pixelsNumberThe number of pixels.
Returns
A positive memory use estimation.

Implements te::rp::SegmenterStrategy.

Definition at line 1112 of file SegmenterRegionGrowingStrategy.cpp.

References te::rp::SegmenterRegionGrowingStrategy::Parameters::BaatzFeaturesType, m_isInitialized, m_parameters, te::rp::SegmenterRegionGrowingStrategy::Parameters::m_segmentFeatures, te::rp::SegmenterRegionGrowingStrategy::Parameters::MeanFeaturesType, TERP_LOG_AND_THROW, and TERP_TRUE_OR_THROW.

unsigned int te::rp::SegmenterRegionGrowingStrategy::getOptimalBlocksOverlapSize ( ) const
virtual

Returns a optimal blocks overlap size (number of border pixels overlapped between blocks, under one direction).

Note
This value will be used in the case where the image is splitted into blocks for segmentation.
Returns
The blocks overlap size.

Implements te::rp::SegmenterStrategy.

Definition at line 1169 of file SegmenterRegionGrowingStrategy.cpp.

References m_isInitialized, te::rp::SegmenterRegionGrowingStrategy::Parameters::m_minSegmentSize, m_parameters, and TERP_TRUE_OR_THROW.

void te::rp::SegmenterRegionGrowingStrategy::getTouchingEdgeLength ( const SegmentsIdsMatrixT segsIds,
const unsigned int &  xStart,
const unsigned int &  yStart,
const unsigned int &  xBound,
const unsigned int &  yBound,
const SegmenterSegmentsBlock::SegmentIdDataType id1,
const SegmenterSegmentsBlock::SegmentIdDataType id2,
unsigned int &  edgeLength1,
unsigned int &  edgeLength2 
)
staticprotected

Returns the count of points from region 1 (with ID1) touching the region 2 (with ID2).

Parameters
segsIdsThe segment ids container.
xStartThe upper left X of the bounding box surrounding both regions.
yStartThe upper left Y of the bounding box surrounding both regions.
xBoundThe lower right X bound of the bounding box surrounding both regions.
yBoundThe lower right Y bound of the bounding box surrounding both regions.
id1Region 1 ID.
id2Region 2 ID.
edgeLength1The touching edge length for the region 1.
edgeLength2The touching edge length for the region 2.
Returns
Returns the count of points from region 1 (with ID1) touching the region 2 (with ID2).

Definition at line 1875 of file SegmenterRegionGrowingStrategy.cpp.

References te::rp::Matrix< TemplateElementType >::getColumnsNumber(), te::rp::Matrix< TemplateElementType >::getLinesNumber(), and TERP_DEBUG_TRUE_OR_THROW.

Referenced by te::rp::SegmenterRegionGrowingStrategy::BaatzMerger::getDissimilarityIndex().

bool te::rp::SegmenterRegionGrowingStrategy::initialize ( SegmenterStrategyParameters const *const  strategyParams)
throw (te::rp::Exception
)
virtual
bool te::rp::SegmenterRegionGrowingStrategy::initializeSegments ( SegmenterIdsManager segmenterIdsManager,
const te::rst::Raster inputRaster,
const std::vector< unsigned int > &  inputRasterBands,
const std::vector< double > &  inputRasterGains,
const std::vector< double > &  inputRasterOffsets,
SegmentsIndexer segments 
)
protected

Initialize the segment objects container and the segment IDs container.

Parameters
segmenterIdsManagerA segments ids manager to acquire unique segments ids.
inputRasterThe input raster.
inputRasterBandsInput raster bands to use.
segmentsIdsThe output segment ids container.
segmentsThe output segments indexer.
Returns
true if OK, false on errors.

Definition at line 1175 of file SegmenterRegionGrowingStrategy.cpp.

References te::rp::SegmenterIdsManager::addFreeIDs(), te::rp::SegmenterRegionGrowingStrategy::Parameters::BaatzFeaturesType, te::rp::SegmenterRegionGrowingStrategy::SegmentsIndexer::clear(), te::rst::Raster::getBand(), te::rp::Matrix< TemplateElementType >::getColumnsNumber(), te::rp::SegmenterRegionGrowingStrategy::Segment::getFeatures(), te::rp::Matrix< TemplateElementType >::getLinesNumber(), te::rp::SegmenterIdsManager::getNewIDs(), te::rst::Raster::getNumberOfColumns(), te::rst::Raster::getNumberOfRows(), te::rst::Band::getProperty(), te::rst::Raster::getValue(), te::rp::SegmenterRegionGrowingStrategy::SegmentFeatures::m_id, te::rp::SegmenterRegionGrowingStrategy::Segment::m_neighborSegments, te::rst::BandProperty::m_noDataValue, m_parameters, te::rp::SegmenterRegionGrowingStrategy::Parameters::m_segmentFeatures, m_segmentsIdsMatrix, m_segmentsPool, te::rp::SegmenterRegionGrowingStrategy::SegmentFeatures::m_size, te::rp::SegmenterRegionGrowingStrategy::SegmentFeatures::m_xBound, te::rp::SegmenterRegionGrowingStrategy::SegmentFeatures::m_xStart, te::rp::SegmenterRegionGrowingStrategy::SegmentFeatures::m_yBound, te::rp::SegmenterRegionGrowingStrategy::SegmentFeatures::m_yStart, te::rp::SegmenterRegionGrowingStrategy::Parameters::MeanFeaturesType, te::rp::Matrix< TemplateElementType >::reset(), te::rp::SegmenterSegmentsPool::retrive(), TERP_DEBUG_TRUE_OR_THROW, TERP_LOG_AND_THROW, and TERP_TRUE_OR_RETURN_FALSE.

Referenced by execute().

unsigned int te::rp::SegmenterRegionGrowingStrategy::mergeSegments ( const double  similarityThreshold,
SegmenterIdsManager segmenterIdsManager,
Merger merger,
const bool  enablelocalMutualBestFitting,
SegmentsIndexer segsIndexer 
)
protected

Merge closest segments.

Parameters
similarityThresholdThe minimum similarity value used when deciding when to merge two segments.
segmenterIdsManagerA segments ids manager to acquire unique segments ids.
mergerThe merger instance to use.
enablelocalMutualBestFittingIf enabled, a merge only occurs between two segments if the minimum dissimilarity criteria is best fulfilled mutually.
segsIndexerSegmenters indexer.
Returns
The number of merged segments.

Definition at line 1373 of file SegmenterRegionGrowingStrategy.cpp.

References te::rp::SegmenterIdsManager::addFreeIDs(), te::rp::SegmenterRegionGrowingStrategy::Merger::getDissimilarityIndex(), m_segmentsIdsMatrix, m_segmentsPool, te::rp::SegmenterRegionGrowingStrategy::Merger::mergeFeatures(), te::rp::SegmenterSegmentsPool::store(), and te::rp::SegmenterRegionGrowingStrategy::Merger::update().

Referenced by execute().

unsigned int te::rp::SegmenterRegionGrowingStrategy::mergeSmallSegments ( const unsigned int  minSegmentSize,
SegmenterIdsManager segmenterIdsManager,
Merger merger,
SegmentsIndexer segsIndexer 
)
protected

Merge only small segments to their closest segment.

Parameters
minSegmentSizeThe minimum segment size (pixels)
similarityThresholdThe minimum similarity value used when deciding when to merge two segments.
segmenterIdsManagerA segments ids manager to acquire unique segments ids.
mergerThe merger instance to use.
segsIndexerSegmenters indexer.
Returns
The number of merged segments.

Definition at line 1617 of file SegmenterRegionGrowingStrategy.cpp.

References te::rp::SegmenterIdsManager::addFreeID(), te::rp::SegmenterRegionGrowingStrategy::Merger::getDissimilarityIndex(), m_segmentsIdsMatrix, m_segmentsPool, te::rp::SegmenterRegionGrowingStrategy::Merger::mergeFeatures(), te::rp::SegmenterSegmentsPool::store(), and te::rp::SegmenterRegionGrowingStrategy::Merger::update().

Referenced by execute().

void te::rp::SegmenterRegionGrowingStrategy::reset ( )
virtual

Member Data Documentation

bool te::rp::SegmenterRegionGrowingStrategy::m_isInitialized
protected

true if this instance is initialized.

Definition at line 520 of file SegmenterRegionGrowingStrategy.h.

Referenced by execute(), getMemUsageEstimation(), getOptimalBlocksOverlapSize(), initialize(), reset(), and SegmenterRegionGrowingStrategy().

SegmenterRegionGrowingStrategy::Parameters te::rp::SegmenterRegionGrowingStrategy::m_parameters
protected

Internal execution parameters.

Definition at line 525 of file SegmenterRegionGrowingStrategy.h.

Referenced by execute(), getMemUsageEstimation(), getOptimalBlocksOverlapSize(), initialize(), initializeSegments(), and reset().

SegmentsIdsMatrixT te::rp::SegmenterRegionGrowingStrategy::m_segmentsIdsMatrix
protected

A internal segments IDs matrix that can be reused on each strategy execution.

Definition at line 531 of file SegmenterRegionGrowingStrategy.h.

Referenced by execute(), initializeSegments(), mergeSegments(), mergeSmallSegments(), and reset().

SegmenterSegmentsPool te::rp::SegmenterRegionGrowingStrategy::m_segmentsPool
protected

A pool of segments that can be reused on each strategy execution.

Definition at line 528 of file SegmenterRegionGrowingStrategy.h.

Referenced by te::rp::SegmenterRegionGrowingStrategy::SegmentsIndexer::clear(), execute(), initializeSegments(), mergeSegments(), mergeSmallSegments(), and reset().


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