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;
281 #endif // __TERRALIB_RP_INTERNAL_SEGMENTERREGIONGROWINGSEGMENT_H