26#ifndef __TERRALIB_RASTER_INTERNAL_INTERPOLATOR_H
27#define __TERRALIB_RASTER_INTERNAL_INTERPOLATOR_H
38#include <boost/noncopyable.hpp>
90 const unsigned int windowRadius );
104 inline void getValue(
const double& c,
const double& r, std::complex<double>& v,
const std::size_t& b)
106 assert(b < m_raster->getNumberOfBands());
118 void getValues(
const double& c,
const double& r, std::vector<std::complex<double> >& values);
135 std::vector< std::pair< te::rst::InterpolationMethod, std::string > >& info );
167 void bilinearGetValue(
const double& c,
const double& r, std::complex<double>& v,
const std::size_t& b);
177 void bicubicGetValue(
const double& c,
const double& r, std::complex<double>& v,
const std::size_t& b);
187 void meanGetValue(
const double& c,
const double& r, std::complex<double>& v,
const std::size_t& b);
197 void minGetValue(
const double& c,
const double& r, std::complex<double>& v,
const std::size_t& b);
207 void maxGetValue(
const double& c,
const double& r, std::complex<double>& v,
const std::size_t& b);
217 void modeGetValue(
const double& c,
const double& r, std::complex<double>& v,
const std::size_t& b);
227 void medianGetValue(
const double& c,
const double& r, std::complex<double>& v,
const std::size_t& b);
239 const std::vector< std::complex<double> >& noDataValues,
240 const unsigned int windowRadius );
It interpolates one pixel based on a selected algorithm. Methods currently available are Nearest Neig...
std::vector< std::complex< double > > m_bilValues
Bilinear values;.
double m_bilLastCol
Last column available for bilinear interpolation.
std::complex< double > m_wInterpAuxCValue
void maxGetValue(const double &c, const double &r, std::complex< double > &v, const std::size_t &b)
Max interpolation method.
void minGetValue(const double &c, const double &r, std::complex< double > &v, const std::size_t &b)
Min interpolation method.
double m_nnLastCol
Last column available for nearest Neighbor interpolation.
long int m_wInterpWindowFirstCol
double m_bilColDifMax
Maximum difference between columns (min/max).
void getValue(const double &c, const double &r, std::complex< double > &v, const std::size_t &b)
Get the interpolated value at specific band.
unsigned int m_wInterpWindowValidElementsCount
double m_bilColMax
Maximum column for bilinear interpolation.
long int m_wInterpWindowFirstRow
double m_bilDistances[4]
Bilinear distances.
int m_method
The interpolation method.
void modeGetValue(const double &c, const double &r, std::complex< double > &v, const std::size_t &b)
Mode interpolation method.
std::vector< std::complex< double > > m_noDataValues
Raster no-data values (for each band);.
Interpolator(Raster const *r, int m, const std::vector< std::complex< double > > &noDataValues, const unsigned int windowRadius)
Constructor.
double m_bicReadRealValue
te::rst::Interpolator * clone() const
Create a clone copy of this instance.
unsigned int m_rasterNRows
Last raster row index.
void medianGetValue(const double &c, const double &r, std::complex< double > &v, const std::size_t &b)
Median interpolation method.
double m_nnLastRow
Last row available for nearest Neighbor interpolation.
InterpolationFunction m_function
The current interpolation function pointer.
double m_bicRowsValuesImag[4]
Interpolator(Raster const *r, int m)
Constructor.
virtual ~Interpolator()
Destructor.
double m_bicRowBound
Last row available for bicubic interpolation.
void meanGetValue(const double &c, const double &r, std::complex< double > &v, const std::size_t &b)
Mean interpolation method.
double m_bilRowDifMin
Minimum difference between rows (min/max).
void nearestNeighborGetValue(const double &c, const double &r, std::complex< double > &v, const std::size_t &b)
Nearest neighbor interpolation method.
double m_bicRowsValuesReal[4]
double m_bicBbufferReal[4][4]
void getValues(const double &c, const double &r, std::vector< std::complex< double > > &values)
Get the interpolated value for all bands.
double m_bicReadImagValue
static void getInterpMethodsInfo(std::vector< std::pair< te::rst::InterpolationMethod, std::string > > &info)
Raster const * m_raster
My input raster.
unsigned int m_rasterNCols
Last raster column index.
long int m_wInterpWindowRow
unsigned int getWindowRadius() const
Get the interpolator windows radius around the target pixel (when applicable).
void(Interpolator::* InterpolationFunction)(const double &c, const double &r, std::complex< double > &v, const std::size_t &b)
Type definition for the interpolation function.
double m_bilRowMin
Minimum row for bilinear interpolation.
std::vector< std::complex< double > > m_wInterpAuxCValues
unsigned int m_windowRadius
Interpolator windows radius around the target pixel (when applicable).
InterpolationMethod Method
Allowed interpolation methods.
double m_bilColDifMin
Minimum difference between columns (min/max).
double m_bicBbufferImag[4][4]
void bicubicGetValue(const double &c, const double &r, std::complex< double > &v, const std::size_t &b)
Bicubic interpolation method.
bool initialize(Raster const *const rasterPointer, int method, const std::vector< std::complex< double > > &noDataValues, const unsigned int windowRadius)
Initialize this instance..
double m_bilWeights[4]
Bilinear weights;.
std::vector< unsigned int > m_wInterpAuxCValuesFreq
long int m_wInterpWindowRowsBound
double m_bilRowDifMax
Maximum difference between rows (min/max).
double m_bicColBound
Last column available for bicubic interpolation.
void bilinearGetValue(const double &c, const double &r, std::complex< double > &v, const std::size_t &b)
Bilinear interpolation method.
double m_bilLastRow
Last row available for bilinear interpolation.
long int m_wInterpWindowColsBound
double m_bilColMin
Minimum column for bilinear interpolation.
std::size_t m_wInterpAuxCValuesSize
double m_bilRowMax
Maximum row for bilinear interpolation.
long int m_wInterpWindowCol
Interpolator(Raster const *r, int m, const std::vector< std::complex< double > > &noDataValues)
Constructor.
std::size_t m_wInterpAuxCValuesIdx
An abstract class for raster data strucutures.
Namespace for the Raster module of TerraLib.
InterpolationMethod
Allowed interpolation methods.
Enumerations for the Raster module.
An abstract class for raster data strucutures.
#define TERASTEREXPORT
You can use this macro in order to export/import classes and functions from this module.