SegmenterRegionGrowingMerger.h
Go to the documentation of this file.
1 /* Copyright (C) 2015 National Institute For Space Research (INPE) - Brazil.
2 
3  This file is part of the TerraLib - a Framework for building GIS enabled applications.
4 
5  TerraLib is free software: you can redistribute it and/or modify
6  it under the terms of the GNU Lesser General Public License as published by
7  the Free Software Foundation, either version 3 of the License,
8  or (at your option) any later version.
9 
10  TerraLib is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  GNU Lesser General Public License for more details.
14 
15  You should have received a copy of the GNU Lesser General Public License
16  along with TerraLib. See COPYING. If not, write to
17  TerraLib Team at <terralib-team@terralib.org>.
18  */
19 
20 /*!
21  \file terralib/rp/SegmenterRegionGrowingMerger.h
22  \brief Segmenter merger used in region growing process.
23  */
24 
25 #ifndef __TERRALIB_RP_INTERNAL_SEGMENTERREGIONGROWINGMERGER_H
26 #define __TERRALIB_RP_INTERNAL_SEGMENTERREGIONGROWINGMERGER_H
27 
29 #include "SegmenterSegmentsBlock.h"
31 #include "Matrix.h"
32 
33 namespace te
34 {
35  namespace rp
36  {
37  /*!
38  \brief Internal segments ids matrix type definition.
39  */
42 
43  /*!
44  \brief Type for dissimilarity.
45  */
46  typedef double DissimilarityTypeT;
47 
48  /*!
49  \class SegmenterRegionGrowingMerger
50  \brief Abstract class for the segments merger.
51  */
52  template< typename FeatureDataTypeT >
54  public:
56  {
57  };
58 
59  /*!
60  \brief Returns a dimilarity index between this and the other segment.
61  \param segment1Ptr A pointer to the first segment.
62  \param segment2Ptr A pointer to the second segment.
63  \param mergeDataPtr A pointer to a valid merge data where the merged features values will be stored (when aplicable) or a null pointer.
64  \return A similarity index between this and the other segment ( normalized between 0 and 1 ).
65  */
66  virtual DissimilarityTypeT
68  SegmenterRegionGrowingSegment< FeatureDataTypeT > const * const segment2Ptr,
69  SegmenterRegionGrowingMergeData * const mergeDataPtr ) const = 0;
70 
71  /*!
72  \brief Merge specific segment features from both segments into the first segment.
73  \param segment1Ptr The first segment.
74  \param segment2Ptr A pointer to the second segment.
75  \param mergeDataPtr A pointer to a valid merge data where the merged features will be read (when aplicable) or a null pointer..
76  */
78  SegmenterRegionGrowingSegment< FeatureDataTypeT > const * const segment2Ptr,
79  SegmenterRegionGrowingMergeData const * const mergeDataPtr ) const = 0;
80 
81  /*!
82  \brief Update the internal state.
83  \param actSegsListHeadPtr A pointer the the active segments list head.
84  */
85  virtual void update( SegmenterRegionGrowingSegment< FeatureDataTypeT >* const actSegsListHeadPtr ) = 0;
86 
87  /*!
88  \brief Return the required segments features vector size (numer of elements).
89  \return Return the required segments features vector size (numer of elements).
90  */
91  virtual unsigned int getSegmentFeaturesSize() const = 0;
92 
93  /*!
94  \brief Create a new merge data instance when applicable
95  \param mergeDataPtr Pointer to the new merge data instance or null when not applicable (the caller of this method must take the ownership of the returned object).
96  */
97  virtual void createMergeData( SegmenterRegionGrowingMergeData** mergeDataPtr ) const = 0;
98 
99  protected :
100  /*!
101  \brief Constructor.
102  */
104  {
105  };
106 
107  private :
108  /*!
109  \brief Copy Constructor.
110  */
112 
114  operator=( const SegmenterRegionGrowingMerger& other ) { return other; };
115  };
116  } // end namespace rp
117 } // end namespace te
118 
119 #endif // __TERRALIB_RP_INTERNAL_SEGMENTERREGIONGROWINGMERGER_H
te::rp::SegmenterRegionGrowingMerger::createMergeData
virtual void createMergeData(SegmenterRegionGrowingMergeData **mergeDataPtr) const =0
Create a new merge data instance when applicable.
te::rp::SegmenterRegionGrowingMerger
Abstract class for the segments merger.
Definition: SegmenterRegionGrowingMerger.h:53
SegmenterRegionGrowingMergeData.h
Segmenter data used by the merger (region growing process).
te::rp::Matrix< SegmenterSegmentsBlock::SegmentIdDataType >
te
TerraLib.
Definition: AddressGeocodingOp.h:52
SegmenterSegmentsBlock.h
Segments block.
te::rp::SegmenterRegionGrowingMerger::getSegmentFeaturesSize
virtual unsigned int getSegmentFeaturesSize() const =0
Return the required segments features vector size (numer of elements).
Matrix.h
Generic template matrix.
te::rp::SegmenterRegionGrowingMerger::operator=
const SegmenterRegionGrowingMerger & operator=(const SegmenterRegionGrowingMerger &other)
Definition: SegmenterRegionGrowingMerger.h:114
te::rp::SegmenterRegionGrowingMerger::~SegmenterRegionGrowingMerger
virtual ~SegmenterRegionGrowingMerger()
Definition: SegmenterRegionGrowingMerger.h:55
te::rp::SegmenterRegionGrowingMerger::update
virtual void update(SegmenterRegionGrowingSegment< FeatureDataTypeT > *const actSegsListHeadPtr)=0
Update the internal state.
SegmenterRegionGrowingSegment.h
Region Growing segment.
te::rp::SegmenterRegionGrowingMerger::getDissimilarity
virtual DissimilarityTypeT getDissimilarity(SegmenterRegionGrowingSegment< FeatureDataTypeT > const *const segment1Ptr, SegmenterRegionGrowingSegment< FeatureDataTypeT > const *const segment2Ptr, SegmenterRegionGrowingMergeData *const mergeDataPtr) const =0
Returns a dimilarity index between this and the other segment.
te::rp::SegmenterRegionGrowingMerger::mergeFeatures
virtual void mergeFeatures(SegmenterRegionGrowingSegment< FeatureDataTypeT > *const segment1Ptr, SegmenterRegionGrowingSegment< FeatureDataTypeT > const *const segment2Ptr, SegmenterRegionGrowingMergeData const *const mergeDataPtr) const =0
Merge specific segment features from both segments into the first segment.
te::rp::DissimilarityTypeT
double DissimilarityTypeT
Type for dissimilarity.
Definition: SegmenterRegionGrowingMerger.h:46
te::rp::SegmenterRegionGrowingMergeData
Segmenter data used by the merger in region growing process.
Definition: SegmenterRegionGrowingMergeData.h:36
te::rp::SegmenterRegionGrowingSegment
Region Growing segment.
Definition: SegmenterRegionGrowingSegment.h:42
te::rp::SegmenterRegionGrowingMerger::SegmenterRegionGrowingMerger
SegmenterRegionGrowingMerger()
Constructor.
Definition: SegmenterRegionGrowingMerger.h:103
te::rp::SegmentsIdsMatrixT
Matrix< SegmenterSegmentsBlock::SegmentIdDataType > SegmentsIdsMatrixT
Internal segments ids matrix type definition.
Definition: SegmenterRegionGrowingMerger.h:41
te::rp::SegmenterRegionGrowingMerger::SegmenterRegionGrowingMerger
SegmenterRegionGrowingMerger(const SegmenterRegionGrowingMerger &)
Copy Constructor.
Definition: SegmenterRegionGrowingMerger.h:111