25#ifndef __TERRALIB_RP_INTERNAL_SKELETON_H
26#define __TERRALIB_RP_INTERNAL_SKELETON_H
36#include <boost/thread.hpp>
239 const bool unitVectors,
249 template<
typename MatrixElementT >
257 if( ! output.
reset( nRows,nCols ) )
260 const unsigned int lastRowIdx = nRows - 1;
261 const unsigned int lastColIdx = nCols - 1;
262 unsigned int row = 0;
263 unsigned int col = 0;
264 unsigned int nextRow = 0;
265 unsigned int nextCol = 0;
266 unsigned int prevRow = 0;
267 unsigned int prevCol = 0;
269 for( row = 0 ; row < nRows ; ++row )
271 output[ row ][ 0 ] = input[ row ][ 0 ];
272 output[ row ][ lastColIdx ] = input[ row ][ lastColIdx ];
275 for( col = 0 ; col < nCols ; ++col )
277 output[ 0 ][ col ] = input[ 0 ][ col ];
278 output[ lastRowIdx ][ col ] = input[ lastRowIdx ][ col ];
281 for( row = 1 ; row < lastRowIdx ; ++row )
286 for( col = 1 ; col < lastColIdx ; ++col )
291 output[ row ][ col ] =
293 input[ row ][ prevCol ]
294 + input[ row ][ nextCol ]
295 + input[ prevRow ][ prevCol ]
296 + input[ prevRow ][ col ]
297 + input[ prevRow ][ nextCol ]
298 + input[ nextRow ][ prevCol ]
299 + input[ nextRow ][ col ]
300 + input[ nextRow ][ nextCol ]
315 template<
typename MatrixElementT >
330 if( ! magnitude.
reset( nRows,nCols ) )
334 unsigned int row = 0;
335 unsigned int col = 0;
339 for( row = 0 ; row < nRows ; ++row )
341 for( col = 0 ; col < nCols ; ++col )
343 xValue = xMap[ row ][ col ];
344 yValue = yMap[ row ][ col ];
346 magnitude[ row ][ col ] = std::sqrt( ( xValue * xValue ) +
347 ( yValue * yValue ) );
377 const unsigned int vecPixelStep,
378 const std::string& tifFileName )
const;
It describes one band (or dimension) of a raster.
This class can be used to inform the progress of a task.
AbstractParameters()
Constructor.
This class can be used to inform the progress of a task.
Raster Processing algorithm output parameters base interface.
AlgorithmOutputParameters()
unsigned int getLinesNumber() const
The number of current matrix lines.
unsigned int getColumnsNumber() const
The number of current matrix columns.
void reset()
Reset (clear) the active instance data.
te::rp::Matrix< double > * m_outputMagBufPtr
A pointer to the output magnitude buffer.
ApplyVecDiffusionThreadParams & operator=(const ApplyVecDiffusionThreadParams &other)
~ApplyVecDiffusionThreadParams()
unsigned int m_lastRowIdx
Last row to process.
te::rp::Matrix< double > const * m_initialXBufPtr
A pointer to the input buffer initial X component.
unsigned int m_firstRowIdx
First row to process.
te::rp::Matrix< double > const * m_inputBufXPtr
A pointer to the input buffer X component.
ApplyVecDiffusionThreadParams()
boost::mutex * m_mutexPtr
A pointer to the sync mutex.
te::rp::Matrix< double > const * m_inputBufYPtr
A pointer to the input buffer Y component.
double m_diffusionRegularization
The diffusion regularization parameter.
ApplyVecDiffusionThreadParams(const ApplyVecDiffusionThreadParams &other)
te::rp::Matrix< double > * m_outputBufYPtr
A pointer to the output buffer X component.
te::rp::Matrix< double > * m_outputBufXPtr
A pointer to the output buffer X component.
te::rp::Matrix< double > const * m_initialYBufPtr
A pointer to the input buffer initial Y component.
te::rp::Matrix< double > const * m_inputMagBufPtr
A pointer to the input magnitude buffer.
double * m_currentIterationResiduePtr
A pointer the the current iteration residue;.
void reset() _NOEXCEPT_OP(false)
Clear all internal allocated resources and reset the parameters instance to its initial state.
std::map< std::string, std::string > m_rInfo
The necessary information to create the output rasters (as described in te::raster::RasterFactory).
std::unique_ptr< te::rst::Raster > m_outputRasterPtr
The generated output registered raster.
OutputParameters(const OutputParameters &)
AbstractParameters * clone() const
Create a clone copy of this instance.
std::string m_rType
Output raster data source type (as described in te::raster::RasterFactory ).
bool applyVecDiffusion(const te::rp::Matrix< double > &inputX, const te::rp::Matrix< double > &inputY, te::rp::Matrix< double > const *const, te::common::TaskProgress *progressPtr, te::rp::Matrix< double > &outputX, te::rp::Matrix< double > &outputY) const
Apply a vector diffusion over the given vector field.
bool applyMeanSmooth(const te::rp::Matrix< MatrixElementT > &input, te::rp::Matrix< MatrixElementT > &output) const
Apply a mean filter.
bool loadData(te::rp::Matrix< double > &rasterData) const
Load data from the input raster.
bool isInitialized() const
Returns true if the algorithm instance is initialized and ready for execution.
bool m_isInitialized
Tells if this instance is initialized.
bool initialize(const AlgorithmInputParameters &inputParams) _NOEXCEPT_OP(false)
Initialize the algorithm instance making it ready for execution.
bool getGradientMaps(const te::rp::Matrix< double > &inputData, const bool unitVectors, te::rp::Matrix< double > &gradXMap, te::rp::Matrix< double > &gradYMap) const
Create an gradient maps from the input image.
void createTifFromVecField(const te::rp::Matrix< double > &inputVecFieldX, const te::rp::Matrix< double > &inputVecFieldY, te::rp::Matrix< double > const *const backGroundMapPtr, const unsigned int vecPixelStep, const std::string &tifFileName) const
Create a tiff file from a vector field.
bool getEdgeStrengthMap(const te::rp::Matrix< double > &inputMap, te::rp::Matrix< double > &edgeStrengthMap) const
Create an Edge strenght Map from the input data.
void reset() _NOEXCEPT_OP(false)
Clear all internal allocated objects and reset the algorithm to its initial state.
static void applyVecDiffusionThreadEntry(ApplyVecDiffusionThreadParams *paramsPtr)
Vector diffusion thread entry.
Skeleton::InputParameters m_inputParameters
Input execution parameters.
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.
bool createSkeletonStrengthMap(const te::rp::Matrix< double > &inputX, const te::rp::Matrix< double > &inputY, const te::rp::Matrix< double > &edgeStrengthMap, te::rp::Matrix< double > &skelMap) const
Create a skeleton strength map.
bool execute(AlgorithmOutputParameters &outputParams) _NOEXCEPT_OP(false)
Executes the algorithm using the supplied parameters.
An abstract class for raster data strucutures.
Namespace for Raster Processing module of TerraLib.
A rectified grid is the spatial support for raster data.
This is the abstract factory for Rasters.
An abstract class for raster data strucutures.
Raster Processing algorithm base interface class.
#define TERPEXPORT
You can use this macro in order to export/import classes and functions from this module.