25 #ifndef __TERRALIB_RP_INTERNAL_SEGMENTERREGIONGROWINGSEGMENT_H
26 #define __TERRALIB_RP_INTERNAL_SEGMENTERREGIONGROWINGSEGMENT_H
40 template<
typename FeatureDataTypeT >
153 template<
typename FeatureDataTypeT >
154 SegmenterRegionGrowingSegment< FeatureDataTypeT >&
167 free( m_neighborSegments );
180 m_neighborSegments = 0;
181 m_neighborSegmentsSize = 0;
194 template<
typename FeatureDataTypeT >
200 unsigned int idx = 0;
202 for( idx = 0 ; idx < m_neighborSegmentsSize ; ++idx )
204 if( m_neighborSegments[ idx ] == nSegPtr )
210 for( idx = 0 ; idx < m_neighborSegmentsSize ; ++idx )
212 if( m_neighborSegments[ idx ] == 0 )
214 m_neighborSegments[ idx ] = nSegPtr;
220 m_neighborSegments, ( m_neighborSegmentsSize + 1 ) *
sizeof(
223 m_neighborSegments[ m_neighborSegmentsSize ] = nSegPtr;
225 m_neighborSegmentsSize = m_neighborSegmentsSize + 1;
229 template<
typename FeatureDataTypeT >
233 unsigned int numberOfZeroes = 0;
234 unsigned int idx = 0;
235 for( ; idx < m_neighborSegmentsSize ; ++idx )
237 if( m_neighborSegments[ idx ] == nSegPtr )
239 m_neighborSegments[ idx ] = 0;
242 else if( m_neighborSegments[ idx ] == 0 )
248 unsigned int numberOfNonZeroes = m_neighborSegmentsSize - numberOfZeroes;
250 if( ( m_neighborSegmentsSize > 4 ) && ( numberOfNonZeroes < numberOfZeroes ) )
255 unsigned int idx2 = 0;
257 for( idx = 0 ; idx < m_neighborSegmentsSize ; ++idx )
259 if( m_neighborSegments[ idx ] )
261 auxVecPtr[ idx2++ ] = m_neighborSegments[ idx ];
265 free( m_neighborSegments );
266 m_neighborSegments = auxVecPtr;
267 m_neighborSegmentsSize = numberOfNonZeroes;
271 template<
typename FeatureDataTypeT >
274 free( m_neighborSegments );
275 m_neighborSegments = 0;
276 m_neighborSegmentsSize = 0;
unsigned int SegmentIdDataType
bool isEnabled() const
Returns true if this segment is enabled.
void removeAllNeighborSegmentsPtrs()
Remove all neighbor segments.
SegmenterRegionGrowingSegment< FeatureDataTypeT > * m_prevActiveSegment
A pointer to the previous active segment.
void addNeighborSegmentPtr(SegmenterRegionGrowingSegment< FeatureDataTypeT > *const nSegPtr)
Add a pointer of a neighbor segment (if it is not already there).
unsigned int m_neighborSegmentsSize
The current size of m_neighborSegments.
void removeNeighborSegmentPtr(SegmenterRegionGrowingSegment< FeatureDataTypeT > *const nSegPtr)
Remove all occurrences of a neighbor segment.
SegmenterRegionGrowingSegment< FeatureDataTypeT > * m_nextActiveSegment
A pointer to the next active segment.
unsigned int m_xBound
Segment lower bound X coordinate box over the label image.
void disable()
Disable this segment ( same as m_mergetIteration = std::numeric_limits< SegmenterRegionGrowingSegment...
unsigned int m_featuresSize
The current size of m_features.
unsigned int m_yBound
Segment lower bound Y coordinate box over the label image.
SegmenterRegionGrowingSegment< FeatureDataTypeT > & operator=(const SegmenterRegionGrowingSegment< FeatureDataTypeT > &other)
unsigned int m_xStart
Segment left X coordinate box over the label image.
unsigned short int IterationCounterType
Feature type definition.
FeatureType * m_features
A pionter to a fixed size vector of segment features.
FeatureDataTypeT FeatureType
Feature type definition.
unsigned int m_yStart
Segment upper Y coordinate box over the label image.
unsigned int m_size
Segment area (pixels number).
IterationCounterType m_mergetIteration
The current merge iteration.
SegmenterRegionGrowingSegment< FeatureDataTypeT > ** m_neighborSegments
Neighborhood segments pointers (some pointers can be null) or a null pointer if there is no neighborh...
SegmenterSegmentsBlock::SegmentIdDataType m_id
Segment ID.
Proxy configuration file for TerraView (see terraview_config.h).