25 #ifndef __TERRALIB_RP_INTERNAL_SEGMENTERREGIONGROWINGSEGMENTSPOOL_H 26 #define __TERRALIB_RP_INTERNAL_SEGMENTERREGIONGROWINGSEGMENTSPOOL_H 33 #include <boost/noncopyable.hpp> 44 template<
typename FeatureDataTypeT >
61 const unsigned int featuresNumber );
121 template<
typename FeatureDataTypeT >
129 template<
typename FeatureDataTypeT >
135 template<
typename FeatureDataTypeT >
138 const unsigned int featuresNumber )
146 unsigned int nCols = (
unsigned int)std::floor( std::sqrt( (
double)segsNumber ) );
147 unsigned int nRows = (
unsigned int)std::ceil( ((
double)segsNumber) /
149 assert( ( nCols * nRows ) >= segsNumber );
170 unsigned int col = 0;
171 for(
unsigned int row = 0 ; row < nRows ; ++row )
173 for( col = 0 ; col < nCols ; ++col )
175 m_segments[ row ][ col ].m_neighborSegments = 0;
176 m_segments[ row ][ col ].m_neighborSegmentsSize = 0;
178 m_segments[ row ][ col ].m_featuresSize = featuresNumber;
184 unsigned int col = 0;
185 for(
unsigned int row = 0 ; row < nRows ; ++row )
187 for( col = 0 ; col < nCols ; ++col )
189 m_segments[ row ][ col ].m_neighborSegments = 0;
190 m_segments[ row ][ col ].m_neighborSegmentsSize = 0;
207 template<
typename FeatureDataTypeT >
230 template<
typename FeatureDataTypeT >
233 unsigned int nRows =
m_segments.getLinesNumber();
234 unsigned int nCols =
m_segments.getColumnsNumber();
236 unsigned int col = 0;
237 for(
unsigned int row = 0 ; row < nRows ; ++row )
239 for( col = 0 ; col < nCols ; ++col )
241 if(
m_segments[ row ][ col ].m_neighborSegments )
243 m_segments[ row ][ col ].removeAllNeighborSegmentsPtrs();
255 template<
typename FeatureDataTypeT >
261 template<
typename FeatureDataTypeT >
270 #endif // __TERRALIB_RP_INTERNAL_SEGMENTERREGIONGROWINGSEGMENTSPOOL_H SegmenterRegionGrowingSegmentsPool()
bool initialize(const SegmenterSegmentsBlock::SegmentIdDataType segsNumber, const unsigned int featuresNumber)
Pool initialization.
SegmenterSegmentsBlock::SegmentIdDataType m_segsNumber
The number of segments allocated segments.
Matrix< SegmenterRegionGrowingSegment< FeatureDataTypeT > > & getSegsMatrix()
Return a reference to the internal segments matrix.
SegmenterSegmentsBlock::SegmentIdDataType m_nextUnusedSegmentIdx
The next unused segment index.
void resetUseCounter()
Reset the segments use counter.
unsigned int SegmentIdDataType
~SegmenterRegionGrowingSegmentsPool()
void clear()
Clear all stored data.
Matrix< SegmenterRegionGrowingSegment< FeatureDataTypeT > > m_segments
Internal stored segments.
void reset()
Reset (clear) the active instance data.
unsigned int m_featuresNumber
The number of features for each created segment.
unsigned int m_getNextSegment_col
SegmenterRegionGrowingSegment< FeatureDataTypeT > * getNextSegment()
Retrive a stored segment.
unsigned int m_getNextSegment_line
Configuration flags for the Raster Processing module of TerraLib.
A generic template matrix.
SegmenterSegmentsBlock::SegmentIdDataType getSegmentsNumber() const
Return the current allocated segments number.
Matrix< FeatureDataTypeT > m_segmentsFeatures
Internal stored segment features.