25 #ifndef __TERRALIB_RP_INTERNAL_SKELETON_H 26 #define __TERRALIB_RP_INTERNAL_SKELETON_H 30 #include "../raster/Raster.h" 31 #include "../raster/BandProperty.h" 32 #include "../raster/RasterFactory.h" 33 #include "../raster/Grid.h" 34 #include "../common/progress/TaskProgress.h" 36 #include <boost/thread.hpp> 113 AbstractParameters* clone() const;
143 AbstractParameters* clone() const;
151 bool execute( AlgorithmOutputParameters& outputParams )
_NOEXCEPT_OP(false);
159 bool isInitialized() const;
195 ApplyVecDiffusionThreadParams&
operator=(
const ApplyVecDiffusionThreadParams& other )
234 bool getGradientMaps(
236 const bool unitVectors,
246 template<
typename MatrixElementT >
254 if( ! output.
reset( nRows,nCols ) )
257 const unsigned int lastRowIdx = nRows - 1;
258 const unsigned int lastColIdx = nCols - 1;
259 unsigned int row = 0;
260 unsigned int col = 0;
261 unsigned int nextRow = 0;
262 unsigned int nextCol = 0;
263 unsigned int prevRow = 0;
264 unsigned int prevCol = 0;
266 for( row = 0 ; row < nRows ; ++row )
268 output[ row ][ 0 ] = input[ row ][ 0 ];
269 output[ row ][ lastColIdx ] = input[ row ][ lastColIdx ];
272 for( col = 0 ; col <
nCols ; ++
col )
274 output[ 0 ][
col ] = input[ 0 ][
col ];
275 output[ lastRowIdx ][
col ] = input[ lastRowIdx ][
col ];
278 for( row = 1 ; row < lastRowIdx ; ++row )
283 for( col = 1 ; col < lastColIdx ; ++
col )
288 output[ row ][
col ] =
290 input[ row ][ prevCol ]
291 + input[ row ][ nextCol ]
292 + input[ prevRow ][ prevCol ]
293 + input[ prevRow ][
col ]
294 + input[ prevRow ][ nextCol ]
295 + input[ nextRow ][ prevCol ]
296 + input[ nextRow ][
col ]
297 + input[ nextRow ][ nextCol ]
312 template<
typename MatrixElementT >
327 if( ! magnitude.
reset( nRows,nCols ) )
331 unsigned int row = 0;
332 unsigned int col = 0;
336 for( row = 0 ; row < nRows ; ++row )
338 for( col = 0 ; col <
nCols ; ++
col )
340 xValue = xMap[ row ][
col ];
341 yValue = yMap[ row ][
col ];
343 magnitude[ row ][
col ] = std::sqrt( ( xValue * xValue ) +
344 ( yValue * yValue ) );
358 bool getEdgeStrengthMap(
370 void createTifFromVecField(
374 const unsigned int vecPixelStep,
375 const std::string& tifFileName )
const;
401 bool createSkeletonStrengthMap(
bool getMagnitude(const te::rp::Matrix< double > &xMap, const te::rp::Matrix< double > &yMap, te::rp::Matrix< MatrixElementT > &magnitude) const
Generate the magnitude map from the input vectors.
te::rp::Matrix< double > const * m_initialYBufPtr
A pointer to the input buffer initial Y component.
std::unique_ptr< te::rst::Raster > m_outputRasterPtr
The generated output registered raster.
double * m_currentIterationResiduePtr
A pointer the the current iteration residue;.
Skeleton::InputParameters m_inputParameters
Input execution parameters.
Skeleton output parameters.
te::rp::Matrix< double > const * m_inputMagBufPtr
A pointer to the input magnitude buffer.
bool m_isInitialized
Tells if this instance is initialized.
This class can be used to inform the progress of a task.
Raster Processing algorithm output parameters base interface.
std::string m_rType
Output raster data source type (as described in te::raster::RasterFactory ).
double m_diffusionRegularization
The diffusion regularization parameter.
#define TERPEXPORT
You can use this macro in order to export/import classes and functions from this module.
Raster Processing algorithm base interface class.
te::rp::Matrix< double > const * m_initialXBufPtr
A pointer to the input buffer initial X component.
boost::mutex * m_mutexPtr
A pointer to the sync mutex.
bool applyMeanSmooth(const te::rp::Matrix< MatrixElementT > &input, te::rp::Matrix< MatrixElementT > &output) const
Apply a mean filter.
unsigned int unsigned int nCols
Raster Processing algorithm base interface.
An abstract class for raster data strucutures.
unsigned int getColumnsNumber() const
The number of current matrix columns.
unsigned int m_firstRowIdx
First row to process.
te::rp::Matrix< double > const * m_inputBufXPtr
A pointer to the input buffer X component.
ApplyVecDiffusionThreadParams & operator=(const ApplyVecDiffusionThreadParams &other)
te::rp::Matrix< double > * m_outputBufXPtr
A pointer to the output buffer X component.
te::rp::Matrix< double > const * m_inputBufYPtr
A pointer to the input buffer Y component.
std::map< std::string, std::string > m_rInfo
The necessary information to create the output rasters (as described in te::raster::RasterFactory).
unsigned int m_lastRowIdx
Last row to process.
void reset()
Reset (clear) the active instance data.
Creation of skeleton images.
rasterPointer reset(te::rst::RasterFactory::make("MEM", new te::rst::Grid(nCols, nLines), bandsProps, std::map< std::string, std::string >(), 0, 0))
te::rp::Matrix< double > * m_outputMagBufPtr
A pointer to the output magnitude buffer.
~ApplyVecDiffusionThreadParams()
ApplyVecDiffusionThreadParams(const ApplyVecDiffusionThreadParams &other)
ApplyVecDiffusionThreadParams()
unsigned int getLinesNumber() const
The number of current matrix lines.
te::rp::Matrix< double > * m_outputBufYPtr
A pointer to the output buffer X component.