Raster region growing segmenter strategy. More...
#include <SegmenterRegionGrowingStrategy.h>
Classes | |
class | BaatzMerger |
Baatz based Segments merger. More... | |
class | MeanMerger |
Mean based Segments merger. More... | |
class | Merger |
Segments merger. More... | |
class | Parameters |
Segmenter Parameters. More... | |
Public Member Functions | |
bool | execute (SegmenterIdsManager &segmenterIdsManager, const te::rp::SegmenterSegmentsBlock &block2ProcessInfo, const te::rst::Raster &inputRaster, const std::vector< unsigned int > &inputRasterBands, const std::vector< double > &inputRasterNoDataValues, const std::vector< double > &inputRasterBandMinValues, const std::vector< double > &inputRasterBandMaxValues, te::rst::Raster &outputRaster, const unsigned int outputRasterBand, const bool enableProgressInterface) throw ( te::rp::Exception ) |
Executes the segmentation strategy over region delimited by the given block. 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... | |
unsigned int | getActiveSegmentsNumber (SegmenterRegionGrowingSegment *const actSegsListHeadPtr) const |
Returns the number of active segments. More... | |
bool | initializeSegments (SegmenterIdsManager &segmenterIdsManager, const te::rp::SegmenterSegmentsBlock &block2ProcessInfo, const te::rst::Raster &inputRaster, const std::vector< unsigned int > &inputRasterBands, const std::vector< double > &inputRasterNoDataValues, const std::vector< double > &inputRasterBandMinValues, const std::vector< double > &inputRasterBandMaxValues, SegmenterRegionGrowingSegment **actSegsListHeadPtr) |
Initialize the segment objects container and the segment IDs container. More... | |
void | mergeSegments (const SegmenterRegionGrowingSegment::FeatureType disimilarityThreshold, const unsigned int maxSegSizeThreshold, SegmenterIdsManager &segmenterIdsManager, Merger &merger, const bool enablelocalMutualBestFitting, const bool enableSameIterationMerges, SegmenterRegionGrowingSegment *auxSeg1Ptr, SegmenterRegionGrowingSegment *auxSeg2Ptr, SegmenterRegionGrowingSegment *auxSeg3Ptr, SegmenterRegionGrowingSegment::FeatureType &minFoundDissimilarity, SegmenterRegionGrowingSegment::FeatureType &maxFoundDissimilarity, unsigned int &totalMergesNumber, SegmenterRegionGrowingSegment::IterationCounterType &globalMergeIterationsCounter, SegmenterRegionGrowingSegment **const actSegsListHeadPtrPtr) |
Merge closest segments. 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... | |
SegmenterRegionGrowingSegmentsPool | m_segmentsPool |
A pool of segments that can be reused on each strategy execution. More... | |
Raster region growing segmenter strategy.
Definition at line 50 of file SegmenterRegionGrowingStrategy.h.
|
protected |
Internal segments ids matrix type definition.
Definition at line 154 of file SegmenterRegionGrowingStrategy.h.
te::rp::SegmenterRegionGrowingStrategy::~SegmenterRegionGrowingStrategy | ( | ) |
Definition at line 697 of file SegmenterRegionGrowingStrategy.cpp.
References reset().
te::rp::SegmenterRegionGrowingStrategy::SegmenterRegionGrowingStrategy | ( | ) |
Definition at line 692 of file SegmenterRegionGrowingStrategy.cpp.
References m_isInitialized.
|
virtual |
Executes the segmentation strategy over region delimited by the given block.
segmenterIdsManager | The segments IDs manager to be used when acquiring/releaseing unique segment IDs. |
block2ProcessInfo | The information about the block of raster that must be processed. |
inputRaster | Input raster. |
inputRasterBands | Input raster bands. |
inputRasterNoDataValues | A vector of values to be used as input raster no-data values. |
inputRasterBandMinValues | The minimum value present on each band. |
inputRasterBandMinValues | The maximum value present on each band. |
outputRaster | Output raster. |
outputRasterBand | Output raster band. |
enableProgressInterface | Enable the internal strategy to update the progress interface. |
Implements te::rp::SegmenterStrategy.
Definition at line 770 of file SegmenterRegionGrowingStrategy.cpp.
References te::rp::SegmenterRegionGrowingStrategy::Parameters::BaatzFeaturesType, te::rp::SegmenterRegionGrowingSegment::disable(), te::rp::Matrix< TemplateElementType >::getColumnsNumber(), te::rp::Matrix< TemplateElementType >::getLinesNumber(), te::rp::SegmenterRegionGrowingSegmentsPool::getNextSegment(), te::rp::SegmenterRegionGrowingSegmentsPool::initialize(), initializeSegments(), te::rp::SegmenterRegionGrowingStrategy::Parameters::m_bandsWeights, te::rp::SegmenterRegionGrowingStrategy::Parameters::m_colorWeight, te::rp::SegmenterRegionGrowingStrategy::Parameters::m_compactnessWeight, te::rp::SegmenterRegionGrowingStrategy::Parameters::m_enableLocalMutualBestFitting, te::rp::SegmenterRegionGrowingStrategy::Parameters::m_enableSameIterationMerges, 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(), te::rp::Matrix< TemplateElementType >::reset(), TERP_LOG_AND_THROW, and TERP_TRUE_OR_RETURN_FALSE.
|
protected |
Export the segments IDs to a tif file.
segmentsIds | The output segment ids container. |
normto8bits | If true, a 8 bits file will be generated. |
fileName | The output tif file name. |
Definition at line 1658 of file SegmenterRegionGrowingStrategy.cpp.
References te::rp::Matrix< TemplateElementType >::getColumnsNumber(), te::rp::Matrix< TemplateElementType >::getLinesNumber(), te::sa::Grid, te::rst::RasterFactory::make(), te::rst::Raster::setValue(), TERP_TRUE_OR_THROW, te::dt::UCHAR_TYPE, and te::dt::UINT32_TYPE.
|
protected |
Returns the number of active segments.
actSegsListHeadPtr | A pointer the the active segments list head. |
Definition at line 1816 of file SegmenterRegionGrowingStrategy.cpp.
References te::rp::SegmenterRegionGrowingSegment::m_nextActiveSegment.
|
virtual |
Returns a memory estimation (bytes).
This parameter is used by the segmenter to guess the sub-image blocks size.
bandsToProcess | The number of input raster bands that will be processed at the strategy execution time. |
pixelsNumber | The number of pixels. |
Implements te::rp::SegmenterStrategy.
Definition at line 1030 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.
|
virtual |
Returns a optimal blocks overlap size (number of border pixels overlapped between blocks, under one direction).
Implements te::rp::SegmenterStrategy.
Definition at line 1109 of file SegmenterRegionGrowingStrategy.cpp.
References m_isInitialized, te::rp::SegmenterRegionGrowingStrategy::Parameters::m_minSegmentSize, m_parameters, and TERP_TRUE_OR_THROW.
|
staticprotected |
Returns the count of points from region 1 (with ID1) touching the region 2 (with ID2).
segsIds | The segment ids container. |
xStart | The upper left X of the bounding box surrounding both regions. |
yStart | The upper left Y of the bounding box surrounding both regions. |
xBound | The lower right X bound of the bounding box surrounding both regions. |
yBound | The lower right Y bound of the bounding box surrounding both regions. |
id1 | Region 1 ID. |
id2 | Region 2 ID. |
edgeLength1 | The touching edge length for the region 1. |
edgeLength2 | The touching edge length for the region 2. |
Definition at line 1722 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::getDissimilarity().
|
virtual |
Initialize the segmentation strategy.
strategyParams | A pointer to the user given specific segmentation strategy parameters ou NULL if no parameters are present. |
Implements te::rp::SegmenterStrategy.
Definition at line 702 of file SegmenterRegionGrowingStrategy.cpp.
References te::rp::SegmenterRegionGrowingStrategy::Parameters::BaatzFeaturesType, te::rp::SegmenterRegionGrowingStrategy::Parameters::InvalidFeaturesType, te::rp::SegmenterRegionGrowingStrategy::Parameters::m_bandsWeights, m_isInitialized, te::rp::SegmenterRegionGrowingStrategy::Parameters::m_minSegmentSize, m_parameters, te::rp::SegmenterRegionGrowingStrategy::Parameters::m_segmentFeatures, te::rp::SegmenterRegionGrowingStrategy::Parameters::m_segmentsSimilarityThreshold, reset(), and TERP_TRUE_OR_RETURN_FALSE.
|
protected |
Initialize the segment objects container and the segment IDs container.
segmenterIdsManager | A segments ids manager to acquire unique segments ids. |
block2ProcessInfo | Info about the block to process. |
inputRaster | The input raster. |
inputRasterBands | Input raster bands to use. |
inputRasterNoDataValues | A vector of values to be used as input raster no-data values. |
inputRasterBandMinValues | The minimum value present on each band. |
inputRasterBandMinValues | The maximum value present on each band. |
actSegsListHeadPtr | A pointer the the active segments list head. |
Definition at line 1115 of file SegmenterRegionGrowingStrategy.cpp.
References te::rp::SegmenterIdsManager::addFreeIDs(), te::rp::SegmenterRegionGrowingSegment::addNeighborSegment(), BAATZ_CO, BAATZ_EL, BAATZ_SM, BAATZ_SS, BAATZ_ST, BAATZ_SU, te::rp::SegmenterRegionGrowingStrategy::Parameters::BaatzFeaturesType, te::rp::SegmenterRegionGrowingSegment::clearNeighborSegments(), te::rp::SegmenterIdsManager::getNewIDs(), te::rp::SegmenterRegionGrowingSegmentsPool::getNextSegment(), te::rst::Raster::getValue(), te::rp::SegmenterSegmentsBlock::m_bottomCutOffProfile, te::rp::SegmenterRegionGrowingSegment::m_features, te::rp::SegmenterSegmentsBlock::m_height, te::rp::SegmenterRegionGrowingSegment::m_id, te::rp::SegmenterSegmentsBlock::m_leftCutOffProfile, te::rp::SegmenterRegionGrowingSegment::m_mergetIteration, te::rp::SegmenterRegionGrowingSegment::m_nextActiveSegment, m_parameters, te::rp::SegmenterRegionGrowingSegment::m_prevActiveSegment, te::rp::SegmenterSegmentsBlock::m_rightCutOffProfile, te::rp::SegmenterRegionGrowingStrategy::Parameters::m_segmentFeatures, m_segmentsIdsMatrix, m_segmentsPool, te::rp::SegmenterRegionGrowingSegment::m_size, te::rp::SegmenterSegmentsBlock::m_startX, te::rp::SegmenterSegmentsBlock::m_startY, te::rp::SegmenterSegmentsBlock::m_topCutOffProfile, te::rp::SegmenterSegmentsBlock::m_width, te::rp::SegmenterRegionGrowingSegment::m_xBound, te::rp::SegmenterRegionGrowingSegment::m_xStart, te::rp::SegmenterRegionGrowingSegment::m_yBound, te::rp::SegmenterRegionGrowingSegment::m_yStart, te::rp::SegmenterRegionGrowingStrategy::Parameters::MeanFeaturesType, and TERP_LOG_AND_THROW.
Referenced by execute().
|
protected |
Merge closest segments.
disimilarityThreshold | The maximum similarity value allowed when deciding when to merge two segments. |
maxSegSizeThreshold | Segments with sizes smaller then this value will allways be merged with the closest segment (disimilarityThreshold will be ignored). |
segmenterIdsManager | A segments ids manager to acquire unique segments ids. |
merger | The merger instance to use. |
enablelocalMutualBestFitting | If enabled, a merge only occurs between two segments if the minimum dissimilarity criteria is best fulfilled mutually. |
enableSameIterationMerges | If enabled, a merged segment could be merged with another under the same iteration. |
auxSeg1Ptr | A pointer to a valid auxiliar segment that will be used by this method. |
auxSeg2Ptr | A pointer to a valid auxiliar segment that will be used by this method. |
auxSeg3Ptr | A pointer to a valid auxiliar segment that will be used by this method. |
minFoundDissimilarity | The minimum dissimilarity value found. |
maxFoundDissimilarity | The maximum dissimilarity value found. |
totalMergesNumber | The total number of merges. |
mergeIterationCounter | A reference to a iteration number counter (this variable will be only incremented, never zeroed. It never must be reset. ). |
actSegsListHeadPtr | A pointer the the active segments list head. |
Definition at line 1369 of file SegmenterRegionGrowingStrategy.cpp.
References te::rp::SegmenterIdsManager::addFreeIDs(), te::rp::SegmenterRegionGrowingSegment::addNeighborSegment(), te::rp::SegmenterRegionGrowingSegment::clearNeighborSegments(), te::rp::SegmenterRegionGrowingSegment::disable(), te::rp::SegmenterRegionGrowingStrategy::Merger::getDissimilarity(), te::rp::SegmenterRegionGrowingSegment::m_id, te::rp::SegmenterRegionGrowingSegment::m_mergetIteration, te::rp::SegmenterRegionGrowingSegment::m_neighborSegments, te::rp::SegmenterRegionGrowingSegment::m_neighborSegmentsSize, te::rp::SegmenterRegionGrowingSegment::m_nextActiveSegment, te::rp::SegmenterRegionGrowingSegment::m_prevActiveSegment, m_segmentsIdsMatrix, te::rp::SegmenterRegionGrowingSegment::m_size, te::rp::SegmenterRegionGrowingSegment::m_xBound, te::rp::SegmenterRegionGrowingSegment::m_xStart, te::rp::SegmenterRegionGrowingSegment::m_yBound, te::rp::SegmenterRegionGrowingSegment::m_yStart, te::rp::SegmenterRegionGrowingStrategy::Merger::mergeFeatures(), te::rp::SegmenterRegionGrowingSegment::removeNeighborSegment(), TERP_TRUE_OR_THROW, and te::rp::SegmenterRegionGrowingStrategy::Merger::update().
Referenced by execute().
|
virtual |
Clear all internal allocated resources and go back to the initial not-initialized state.
Implements te::rp::SegmenterStrategy.
Definition at line 762 of file SegmenterRegionGrowingStrategy.cpp.
References te::rp::SegmenterRegionGrowingSegmentsPool::clear(), m_isInitialized, m_parameters, m_segmentsIdsMatrix, m_segmentsPool, te::rp::Matrix< TemplateElementType >::reset(), and te::rp::SegmenterRegionGrowingStrategy::Parameters::reset().
Referenced by initialize(), te::rp::SegmenterRegionGrowingStrategy::Parameters::operator=(), and ~SegmenterRegionGrowingStrategy().
|
protected |
true if this instance is initialized.
Definition at line 349 of file SegmenterRegionGrowingStrategy.h.
Referenced by execute(), getMemUsageEstimation(), getOptimalBlocksOverlapSize(), initialize(), reset(), and SegmenterRegionGrowingStrategy().
|
protected |
Internal execution parameters.
Definition at line 354 of file SegmenterRegionGrowingStrategy.h.
Referenced by execute(), getMemUsageEstimation(), getOptimalBlocksOverlapSize(), initialize(), initializeSegments(), and reset().
|
protected |
A internal segments IDs matrix that can be reused on each strategy execution.
Definition at line 360 of file SegmenterRegionGrowingStrategy.h.
Referenced by execute(), initializeSegments(), mergeSegments(), and reset().
|
protected |
A pool of segments that can be reused on each strategy execution.
Definition at line 357 of file SegmenterRegionGrowingStrategy.h.
Referenced by execute(), initializeSegments(), and reset().