Loading...
Searching...
No Matches
SegmenterRegionGrowingBaatzStrategy.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/SegmenterRegionGrowingBaatzStrategy.h
22 \brief Raster region growing segmenter Baatz strategy.
23 */
24
25#ifndef __TERRALIB_RP_INTERNAL_SEGMENTERREGIONGROWINGBAATZSTRATEGY_H
26#define __TERRALIB_RP_INTERNAL_SEGMENTERREGIONGROWINGBAATZSTRATEGY_H
27
29#include "SegmenterStrategy.h"
36#include "Matrix.h"
37#include "Config.h"
38
39#include <vector>
40#include <list>
41#include <set>
42
43namespace te
44{
45 namespace rp
46 {
47 /*!
48 \class SegmenterRegionGrowingBaatzStrategy
49 \brief Raster region growing segmenter strategy.
50 \ingroup rp_seg
51 */
53 {
54 public :
55 /*!
56 \class Parameters
57 \brief Segmenter Parameters
58 */
60 {
61 public:
62 /**
63 * \name Baatz specific parameters
64 */
65 /**@{*/
66
67 std::vector< double > m_bandsWeights; //!< The weight given to each band, when applicable (note: the bands weights sum must always be 1) or an empty vector indicating that all bands have the same weight.
68
69 double m_colorWeight; //!< The weight given to the color component, deafult:0.9, valid range: [0,1].
70
71 double m_compactnessWeight; //!< The weight given to the compactness component, deafult:0.5, valid range: [0,1].
72
73 //@}
74
76
78
79 //overload
80 const Parameters& operator=( const Parameters& params );
81
82 //overload
83 void reset() ;
84
85 //overload
86 AbstractParameters* clone() const;
87
88 //overload
89 bool serialize( AlgorithmParametersSerializer& serializer ) const;
90 };
91
93
95
96 //overload
97 bool initialize( SegmenterStrategyParameters const* const strategyParams );
98
99 //overload
100 void reset();
101
102 //overload
103 bool execute(
104 SegmenterIdsManager& segmenterIdsManager,
105 const te::rp::SegmenterSegmentsBlock& block2ProcessInfo,
106 const te::rst::Raster& inputRaster,
107 const std::vector< unsigned int >& inputRasterBands,
108 const std::vector< std::complex< double > >& inputRasterNoDataValues,
109 const std::vector< std::complex< double > >& inputRasterBandMinValues,
110 const std::vector< std::complex< double > >& inputRasterBandMaxValues,
111 te::rst::Raster& outputRaster,
112 const unsigned int outputRasterBand,
113 const bool enableProgressInterface );
114
115 //overload
116 double getMemUsageEstimation( const unsigned int bandsToProcess,
117 const unsigned int pixelsNumber ) const;
118
119 //overload
120 unsigned int getOptimalBlocksOverlapSize() const;
121
122 //overload
124
125 //overload
127
128 protected :
129 /*!
130 \brief Internal segments ids matrix type definition.
131 */
134
135 /*!
136 \brief true if this instance is initialized.
137 */
139
140 /*!
141 \brief Internal execution parameters.
142 */
144
145 /*! \brief A pool of segments that can be reused on each strategy execution. */
147
148 /*! \brief A internal segments IDs matrix that can be reused on each strategy execution. */
150
151 /*!
152 \brief Initialize the segment objects container and the segment IDs container.
153 \param segmenterIdsManager A segments ids manager to acquire unique segments ids.
154 \param block2ProcessInfo Info about the block to process.
155 \param inputRaster The input raster.
156 \param inputRasterBands Input raster bands to use.
157 \param inputRasterNoDataValues A vector of values to be used as input raster no-data values.
158 \param inputRasterBandMinValues The minimum value present on each band.
159 \param inputRasterBandMinValues The maximum value present on each band.
160 \param actSegsListHeadPtr A pointer the the active segments list head or a null points if no segments were initialized (entire image with no data, i.e.).
161 \return true if OK, false on errors.
162 */
163 bool initializeSegments( SegmenterIdsManager& segmenterIdsManager,
164 const te::rp::SegmenterSegmentsBlock& block2ProcessInfo,
165 const te::rst::Raster& inputRaster,
166 const std::vector< unsigned int >& inputRasterBands,
167 const std::vector< std::complex< double > >& inputRasterNoDataValues,
168 const std::vector< std::complex< double > >& inputRasterBandMinValues,
169 const std::vector< std::complex< double > >& inputRasterBandMaxValues,
171 };
172
173 /*!
174 \class SegmenterRegionGrowingBaatzStrategyFactory
175 \brief Raster region growing segmenter strategy factory.
176 \note Factory key: RegionGrowingBaatz
177 */
180 {
181 public:
182
184
186
187 //overload
189
190 };
191
192 } // end namespace rp
193} // end namespace te
194
195#endif // __TERRALIB_RP_INTERNAL_SEGMENTERREGIONGROWINGBAATZSTRATEGY_H
Generic template matrix.
Segmenter merger used in region growing process.
Region Growing segment.
Raster segmenter strategy factory base class.
Raster segmenter strategy base class.
A class to standardize algorithm parameters serialization.
Segmenter segments IDs manager.
Raster region growing segmenter strategy factory.
te::rp::SegmenterStrategy * build()
Concrete factories (derived from this one) must implement this method in order to create objects.
const Parameters & operator=(const Parameters &params)
double m_colorWeight
The weight given to the color component, deafult:0.9, valid range: [0,1].
AbstractParameters * clone() const
Create a clone copy of this instance.
void reset()
Clear all internal allocated resources and reset the parameters instance to its initial state.
double m_compactnessWeight
The weight given to the compactness component, deafult:0.5, valid range: [0,1].
std::vector< double > m_bandsWeights
The weight given to each band, when applicable (note: the bands weights sum must always be 1) or an e...
bool serialize(AlgorithmParametersSerializer &serializer) const
Returns a parameter serialization object.
bool initialize(SegmenterStrategyParameters const *const strategyParams)
Initialize the segmentation strategy.
double getMemUsageEstimation(const unsigned int bandsToProcess, const unsigned int pixelsNumber) const
Returns a memory estimation (bytes).
bool m_isInitialized
true if this instance is initialized.
bool initializeSegments(SegmenterIdsManager &segmenterIdsManager, const te::rp::SegmenterSegmentsBlock &block2ProcessInfo, const te::rst::Raster &inputRaster, const std::vector< unsigned int > &inputRasterBands, const std::vector< std::complex< double > > &inputRasterNoDataValues, const std::vector< std::complex< double > > &inputRasterBandMinValues, const std::vector< std::complex< double > > &inputRasterBandMaxValues, SegmenterRegionGrowingSegment< rg::BaatzFeatureType > **actSegsListHeadPtr)
Initialize the segment objects container and the segment IDs container.
Matrix< SegmenterSegmentsBlock::SegmentIdDataType > SegmentsIdsMatrixT
Internal segments ids matrix type definition.
SegmentsIdsMatrixT m_segmentsIdsMatrix
A internal segments IDs matrix that can be reused on each strategy execution.
void reset()
Clear all internal allocated resources and go back to the initial not-initialized state.
unsigned int getOptimalBlocksOverlapSize() const
Returns a optimal blocks overlap size (number of border pixels overlapped between blocks,...
SegmenterRegionGrowingSegmentsPool< rg::BaatzFeatureType > m_segmentsPool
A pool of segments that can be reused on each strategy execution.
BlocksMergingMethod getBlocksMergingMethod() const
Return the strategy blocks merging method.
bool execute(SegmenterIdsManager &segmenterIdsManager, const te::rp::SegmenterSegmentsBlock &block2ProcessInfo, const te::rst::Raster &inputRaster, const std::vector< unsigned int > &inputRasterBands, const std::vector< std::complex< double > > &inputRasterNoDataValues, const std::vector< std::complex< double > > &inputRasterBandMinValues, const std::vector< std::complex< double > > &inputRasterBandMaxValues, te::rst::Raster &outputRaster, const unsigned int outputRasterBand, const bool enableProgressInterface)
Executes the segmentation strategy over region delimited by the given block.
bool shouldComputeMinMaxValues() const
Returns if the min and max pixel values should be computed.
SegmenterRegionGrowingBaatzStrategy::Parameters m_parameters
Internal execution parameters.
Segmenter segments block description class.
Raster segmenter strategy factory base class.
Raster segmenter strategy base class.
BlocksMergingMethod
Blocks merging method.
An abstract class for raster data strucutures.
Definition: Raster.h:72
TerraLib.
#define TERPEXPORT
You can use this macro in order to export/import classes and functions from this module.
Definition: Config.h:139
Proxy configuration file for TerraView (see terraview_config.h).