All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
te::rp::TiePointsLocatorSURFStrategy Class Reference

Tie-points locator SURF strategy. More...

#include <TiePointsLocatorSURFStrategy.h>

Inheritance diagram for te::rp::TiePointsLocatorSURFStrategy:
te::rp::TiePointsLocatorStrategy

Classes

class  ExecuteMatchingByEuclideanDistThreadEntryParams
 The parameters passed to the executeMatchingByEuclideanDistThreadEntry method. More...
 
class  SurfLocatorThreadParams
 The parameters passed to the surfLocatorThreadEntry method. More...
 

Public Member Functions

 ~TiePointsLocatorSURFStrategy ()
 

Protected Types

typedef te::rp::Matrix< double > DoublesMatrix
 A matrix do store double values. More...
 
typedef te::rp::Matrix< float > FloatsMatrix
 A matrix do store float values. More...
 
typedef std::list< InterestPointTInterestPointsListT
 
typedef std::multiset
< InterestPointT
InterestPointsSetT
 
typedef std::multiset
< MatchedInterestPointsT
MatchedInterestPointsSetT
 
typedef te::rp::Matrix
< unsigned char > 
UCharsMatrix
 A matrix do store unsigned char values. More...
 

Protected Member Functions

bool executeMatchingByEuclideanDist (const FloatsMatrix &featuresSet1, const FloatsMatrix &featuresSet2, const InterestPointsSetT &interestPointsSet1, const InterestPointsSetT &interestPointsSet2, te::gm::GeometricTransformation const *const raster1ToRaster2TransfPtr, const double raster1ToRaster2TransfDMapError, MatchedInterestPointsSetT &matchedPoints) const
 Match each feature using eucliean distance. More...
 
unsigned int getAutoMaxTiePointsNumber () const
 Returns a automatically calculated optimum maximum amount tie-points following the current parameters. More...
 
bool getMatchedInterestPoints (te::gm::GeometricTransformation const *const raster1ToRaster2TransfPtr, const double raster1ToRaster2TransfDMapError, MatchedInterestPointsSetT &matchedInterestPoints)
 Try to find matched interest points. More...
 
bool initialize (const te::rp::TiePointsLocatorInputParameters &inputParameters)
 Initialize the strategy. More...
 
bool locateSurfInterestPoints (const unsigned int maxInterestPoints, const FloatsMatrix &integralRasterData, UCharsMatrix const *maskRasterDataPtr, InterestPointsSetT &interestPoints) const
 SURF interest points locator. More...
 
void reset ()
 Clear all internal allocated resources and go back to the initial not-initialized state. More...
 
 TiePointsLocatorSURFStrategy ()
 

Static Protected Member Functions

static bool checkForDuplicatedInterestPoints (const InterestPointsSetT &interestPoints, double &x, double &y)
 Check for duplicated interest points. More...
 
static bool createIntegralImage (const FloatsMatrix &inputData, FloatsMatrix &outputData)
 Create an integral image. More...
 
static void createTifFromMatrix (const FloatsMatrix &rasterData, const InterestPointsSetT &interestPoints, const std::string &tifFileName)
 Moravec interest points locator. More...
 
static void executeMatchingByEuclideanDistThreadEntry (ExecuteMatchingByEuclideanDistThreadEntryParams *paramsPtr)
 Correlation/Euclidean match thread entry. More...
 
static void features2Tiff (const DoublesMatrix &features, const InterestPointsSetT &interestPoints, const std::string &fileNameBeginning)
 Save the generated features to tif files. More...
 
static bool generateSurfFeatures (const InterestPointsSetT &interestPoints, const FloatsMatrix &integralRasterData, InterestPointsSetT &validInterestPoints, FloatsMatrix &features)
 Generate a Surf features matrix for the given interes points. More...
 
template<typename BufferType >
static float getHaarXVectorIntensity (BufferType &buffer, const unsigned int &centerX, const unsigned int &centerY, const unsigned int &radius)
 Return a Haar X intesity vector for the window centered at the given point. More...
 
template<typename BufferType >
static float getHaarYVectorIntensity (BufferType &buffer, const unsigned int &centerX, const unsigned int &centerY, const unsigned int &radius)
 Return a Haar Y intesity vector for the window centered at the given point. More...
 
template<typename BufferType >
static float getIntegralBoxSum (BufferType &buffer, const unsigned int &upperLeftX, const unsigned int &upperLeftY, const unsigned int &lowerRightX, const unsigned int &lowerRightY)
 Return a sum of all pixels inside a box over the given integral image buffer. More...
 
static float getSurfDxxDerivative (float **bufferPtr, const unsigned int &centerX, const unsigned int &centerY, const unsigned int &lobeWidth, const unsigned int &lobeRadius)
 Return a SURF box filter Dyy derivative centered over the given position from the given integral image buffer. More...
 
static float getSurfDxyDerivative (float **bufferPtr, const unsigned int &centerX, const unsigned int &centerY, const unsigned int &lobeWidth)
 Return a SURF box filter Dxy derivative centered over the given position from the given integral image buffer. More...
 
static float getSurfDyyDerivative (float **bufferPtr, const unsigned int &centerX, const unsigned int &centerY, const unsigned int &lobeWidth, const unsigned int &lobeRadius)
 Return a SURF box filter Dxx derivative centered over the given position from the given integral image buffer. More...
 
static unsigned int getSurfFilterSize (const unsigned int &octaveIndex, const unsigned int &scaleIndex)
 Return the surf octave filter size (width). More...
 
static unsigned int getSurfOctaveBaseFilterSize (const unsigned int &octaveIndex)
 Return the surf octave base filter size (width). More...
 
static unsigned int getSurfOctaveFilterStepSize (const unsigned int &octaveIndex)
 Return the surf octave filter step size (width). More...
 
static bool loadRasterData (te::rst::Raster const *rasterPtr, const std::vector< unsigned int > &rasterBands, te::rst::Raster const *maskRasterPtr, const unsigned int maskRasterBand, const unsigned int rasterTargetAreaLineStart, const unsigned int rasterTargetAreaColStart, const unsigned int rasterTargetAreaWidth, const unsigned int rasterTargetAreaHeight, const double desiredRescaleFactorX, const double desiredRescaleFactorY, const te::rst::Interpolator::Method rasterInterpMethod, const unsigned char maxMemPercentUsage, std::vector< boost::shared_ptr< FloatsMatrix > > &loadedRasterData, UCharsMatrix &loadedMaskRasterData, double &achievedRescaleFactorX, double &achievedRescaleFactorY)
 Load rasters data (normalized between 0 and 1). More...
 
static void locateSurfInterestPointsThreadEntry (SurfLocatorThreadParams *paramsPtr)
 Surf locator thread entry. More...
 
template<typename BufferElementT >
static void roolUpBuffer (BufferElementT **bufferPtr, const unsigned int &bufferLinesNumber)
 RoolUp a buffer of lines. More...
 

Protected Attributes

te::rp::TiePointsLocatorInputParameters m_inputParameters
 Input parameters. More...
 
bool m_isInitialized
 true if this instance is initialized. More...
 

Friends

class TiePointsLocator
 

Detailed Description

Tie-points locator SURF strategy.

Definition at line 45 of file TiePointsLocatorSURFStrategy.h.

Member Typedef Documentation

A matrix do store double values.

Definition at line 71 of file TiePointsLocatorStrategy.h.

A matrix do store float values.

Definition at line 65 of file TiePointsLocatorStrategy.h.

Interest points list container type

Definition at line 128 of file TiePointsLocatorStrategy.h.

typedef std::multiset< InterestPointT > te::rp::TiePointsLocatorStrategy::InterestPointsSetT
protectedinherited

Interest points set container type

Definition at line 124 of file TiePointsLocatorStrategy.h.

Matched interest points container type

Definition at line 171 of file TiePointsLocatorStrategy.h.

A matrix do store unsigned char values.

Definition at line 77 of file TiePointsLocatorStrategy.h.

Constructor & Destructor Documentation

te::rp::TiePointsLocatorSURFStrategy::~TiePointsLocatorSURFStrategy ( )

Definition at line 43 of file TiePointsLocatorSURFStrategy.cpp.

References reset().

te::rp::TiePointsLocatorSURFStrategy::TiePointsLocatorSURFStrategy ( )
protected

Definition at line 38 of file TiePointsLocatorSURFStrategy.cpp.

References reset().

Member Function Documentation

bool te::rp::TiePointsLocatorStrategy::checkForDuplicatedInterestPoints ( const InterestPointsSetT interestPoints,
double &  x,
double &  y 
)
staticprotectedinherited

Check for duplicated interest points.

Parameters
xThe duplicated tie-points X coord.
yThe duplicated tie-points Y coord.
Returns
false if duplicated interest points were found.

Definition at line 363 of file TiePointsLocatorStrategy.cpp.

Referenced by locateSurfInterestPointsThreadEntry().

bool te::rp::TiePointsLocatorSURFStrategy::createIntegralImage ( const FloatsMatrix inputData,
FloatsMatrix outputData 
)
staticprotected

Create an integral image.

Parameters
inputDataThe input data.
outputDataThe output data.
Note
The entry of an integral image IΣ(x) at a location x = (x, y) represents the sum of all pixels in the input image I of a rectangular region formed by the point x and the origi.
Returns
true if ok, false on errors.

Definition at line 678 of file TiePointsLocatorSURFStrategy.cpp.

References te::rp::Matrix< TemplateElementType >::getColumnsNumber(), te::rp::Matrix< TemplateElementType >::getLinesNumber(), te::rp::Matrix< TemplateElementType >::reset(), and TERP_TRUE_OR_RETURN_FALSE.

Referenced by getMatchedInterestPoints().

void te::rp::TiePointsLocatorStrategy::createTifFromMatrix ( const FloatsMatrix rasterData,
const InterestPointsSetT interestPoints,
const std::string &  tifFileName 
)
staticprotectedinherited

Moravec interest points locator.

Parameters
rasterDataThe loaded raster data.
interestPointsThe found raster 1 interest points (coords related to rasterData lines/cols).
tifFileNameTif file name.

Definition at line 222 of file TiePointsLocatorStrategy.cpp.

References te::rst::BlueCInt, te::rp::Matrix< TemplateElementType >::getColumnsNumber(), te::rp::Matrix< TemplateElementType >::getLinesNumber(), te::rst::GreenCInt, te::sa::Grid, te::rst::RasterFactory::make(), te::rst::RedCInt, TERP_TRUE_OR_THROW, and te::dt::UCHAR_TYPE.

bool te::rp::TiePointsLocatorSURFStrategy::executeMatchingByEuclideanDist ( const FloatsMatrix featuresSet1,
const FloatsMatrix featuresSet2,
const InterestPointsSetT interestPointsSet1,
const InterestPointsSetT interestPointsSet2,
te::gm::GeometricTransformation const *const  raster1ToRaster2TransfPtr,
const double  raster1ToRaster2TransfDMapError,
MatchedInterestPointsSetT matchedPoints 
) const
protected

Match each feature using eucliean distance.

Parameters
featuresSet1Features set 1.
featuresSet2Features set 2.
interestPointsSet1The interest pionts set 1 (full raster 1 indexed coods reference)..
interestPointsSet2The interest pionts set 2 (full raster 1 indexed coods reference)..
raster1ToRaster2TransfPtrA pointer to a transformation direct mapping raster 1 indexed coords into raster 2 indexed coords, of an empty pointer if there is no transformation avaliable.
raster1ToRaster2TransfDMapErrorThe expected transformation error.
matchedPointsThe matched points.
Note
Each matched point feature value ( MatchedInterestPoint::m_feature ) will be set to the distance value between both features.

Definition at line 1778 of file TiePointsLocatorSURFStrategy.cpp.

References executeMatchingByEuclideanDistThreadEntry(), te::rp::Matrix< TemplateElementType >::getColumnsNumber(), te::rp::Matrix< TemplateElementType >::getLinesNumber(), te::rp::Matrix< TemplateElementType >::getMemPolicy(), te::common::GetPhysProcNumber(), te::rp::TiePointsLocatorSURFStrategy::ExecuteMatchingByEuclideanDistThreadEntryParams::m_distMatrixPtr, te::rp::TiePointsLocatorInputParameters::m_enableMultiThread, te::rp::TiePointsLocatorStrategy::MatchedInterestPointsT::m_feature, te::rp::TiePointsLocatorSURFStrategy::ExecuteMatchingByEuclideanDistThreadEntryParams::m_featuresSet1Ptr, te::rp::TiePointsLocatorSURFStrategy::ExecuteMatchingByEuclideanDistThreadEntryParams::m_featuresSet2Ptr, m_inputParameters, te::rp::TiePointsLocatorSURFStrategy::ExecuteMatchingByEuclideanDistThreadEntryParams::m_interestPointsSet1Ptr, te::rp::TiePointsLocatorSURFStrategy::ExecuteMatchingByEuclideanDistThreadEntryParams::m_interestPointsSet2Ptr, te::rp::TiePointsLocatorSURFStrategy::ExecuteMatchingByEuclideanDistThreadEntryParams::m_nextFeatureIdx1ToProcessPtr, te::rp::TiePointsLocatorStrategy::MatchedInterestPointsT::m_point1, te::rp::TiePointsLocatorStrategy::MatchedInterestPointsT::m_point2, te::rp::TiePointsLocatorSURFStrategy::ExecuteMatchingByEuclideanDistThreadEntryParams::m_raster1ToRaster2TransfPtr, te::rp::TiePointsLocatorSURFStrategy::ExecuteMatchingByEuclideanDistThreadEntryParams::m_searchOptTreeSearchRadius, te::rp::TiePointsLocatorInputParameters::m_surfMaxNormEuclideanDist, te::rp::TiePointsLocatorSURFStrategy::ExecuteMatchingByEuclideanDistThreadEntryParams::m_syncMutexPtr, te::rp::Matrix< TemplateElementType >::RAMMemPol, te::rp::Matrix< TemplateElementType >::reset(), and TERP_TRUE_OR_RETURN_FALSE.

Referenced by getMatchedInterestPoints().

void te::rp::TiePointsLocatorSURFStrategy::executeMatchingByEuclideanDistThreadEntry ( ExecuteMatchingByEuclideanDistThreadEntryParams paramsPtr)
staticprotected

Correlation/Euclidean match thread entry.

Parameters
paramsPtrA pointer to the thread parameters.

Definition at line 1945 of file TiePointsLocatorSURFStrategy.cpp.

References te::gm::GeometricTransformation::clone(), te::rp::Matrix< TemplateElementType >::getColumnsNumber(), te::rp::Matrix< TemplateElementType >::getLinesNumber(), te::rp::Matrix< TemplateElementType >::getMemPolicy(), te::sam::rtree::Index< DATATYPE, MAXNODES, MINNODES >::insert(), te::rp::TiePointsLocatorSURFStrategy::ExecuteMatchingByEuclideanDistThreadEntryParams::m_distMatrixPtr, te::rp::TiePointsLocatorStrategy::InterestPointT::m_feature2, te::rp::TiePointsLocatorStrategy::InterestPointT::m_feature3, te::rp::TiePointsLocatorSURFStrategy::ExecuteMatchingByEuclideanDistThreadEntryParams::m_featuresSet1Ptr, te::rp::TiePointsLocatorSURFStrategy::ExecuteMatchingByEuclideanDistThreadEntryParams::m_featuresSet2Ptr, te::rp::TiePointsLocatorSURFStrategy::ExecuteMatchingByEuclideanDistThreadEntryParams::m_interestPointsSet1Ptr, te::rp::TiePointsLocatorSURFStrategy::ExecuteMatchingByEuclideanDistThreadEntryParams::m_interestPointsSet2Ptr, te::gm::Envelope::m_llx, te::gm::Envelope::m_lly, te::rp::TiePointsLocatorSURFStrategy::ExecuteMatchingByEuclideanDistThreadEntryParams::m_nextFeatureIdx1ToProcessPtr, te::rp::TiePointsLocatorSURFStrategy::ExecuteMatchingByEuclideanDistThreadEntryParams::m_raster1ToRaster2TransfPtr, te::rp::TiePointsLocatorSURFStrategy::ExecuteMatchingByEuclideanDistThreadEntryParams::m_searchOptTreeSearchRadius, te::rp::TiePointsLocatorSURFStrategy::ExecuteMatchingByEuclideanDistThreadEntryParams::m_syncMutexPtr, te::gm::Envelope::m_urx, te::gm::Envelope::m_ury, te::rp::TiePointsLocatorStrategy::InterestPointT::m_x, te::rp::TiePointsLocatorStrategy::InterestPointT::m_y, te::rp::Matrix< TemplateElementType >::RAMMemPol, and te::sam::rtree::Index< DATATYPE, MAXNODES, MINNODES >::search().

Referenced by executeMatchingByEuclideanDist().

void te::rp::TiePointsLocatorStrategy::features2Tiff ( const DoublesMatrix features,
const InterestPointsSetT interestPoints,
const std::string &  fileNameBeginning 
)
staticprotectedinherited

Save the generated features to tif files.

Parameters
featuresThe features to be saved.
validInteresPointsThe interest pionts related to each feature inside the features matrix.
fileNameStartThe output file name beginning.

Definition at line 298 of file TiePointsLocatorStrategy.cpp.

References te::rp::Matrix< TemplateElementType >::getColumnsNumber(), te::rp::Matrix< TemplateElementType >::getLinesNumber(), te::sa::Grid, te::rst::RasterFactory::make(), MAX, MIN, te::rst::RedCInt, TERP_TRUE_OR_THROW, and te::dt::UCHAR_TYPE.

bool te::rp::TiePointsLocatorSURFStrategy::generateSurfFeatures ( const InterestPointsSetT interestPoints,
const FloatsMatrix integralRasterData,
InterestPointsSetT validInterestPoints,
FloatsMatrix features 
)
staticprotected

Generate a Surf features matrix for the given interes points.

Parameters
interestPointsThe interest points (coords related to rasterData lines/cols).
integralRasterDataThe integral raster data.
validInterestPointsThe valid interest points.
featuresThe generated features matrix (one feature per line, one feature per interest point).
Returns
true if ok, false on errors.

Definition at line 1449 of file TiePointsLocatorSURFStrategy.cpp.

References te::rp::Matrix< TemplateElementType >::getColumnsNumber(), getHaarXVectorIntensity(), getHaarYVectorIntensity(), te::rp::Matrix< TemplateElementType >::getLinesNumber(), te::rp::Matrix< TemplateElementType >::reset(), ROUND, TERP_DEBUG_TRUE_OR_THROW, and TERP_TRUE_OR_RETURN_FALSE.

Referenced by getMatchedInterestPoints().

template<typename BufferType >
static float te::rp::TiePointsLocatorSURFStrategy::getHaarXVectorIntensity ( BufferType &  buffer,
const unsigned int &  centerX,
const unsigned int &  centerY,
const unsigned int &  radius 
)
inlinestaticprotected

Return a Haar X intesity vector for the window centered at the given point.

Parameters
bufferIntegral image buffer.
centerXCenter X.
centerYCenter Y.
radiusWindow radius.

Definition at line 396 of file TiePointsLocatorSURFStrategy.h.

Referenced by generateSurfFeatures().

template<typename BufferType >
static float te::rp::TiePointsLocatorSURFStrategy::getHaarYVectorIntensity ( BufferType &  buffer,
const unsigned int &  centerX,
const unsigned int &  centerY,
const unsigned int &  radius 
)
inlinestaticprotected

Return a Haar Y intesity vector for the window centered at the given point.

Parameters
bufferIntegral image buffer.
centerXCenter X.
centerYCenter Y.
radiusWindow radius.

Definition at line 428 of file TiePointsLocatorSURFStrategy.h.

Referenced by generateSurfFeatures().

template<typename BufferType >
static float te::rp::TiePointsLocatorSURFStrategy::getIntegralBoxSum ( BufferType &  buffer,
const unsigned int &  upperLeftX,
const unsigned int &  upperLeftY,
const unsigned int &  lowerRightX,
const unsigned int &  lowerRightY 
)
inlinestaticprotected

Return a sum of all pixels inside a box over the given integral image buffer.

Parameters
bufferPtrBuffer pointer.
upperLeftXBox upper left X.
upperLeftYBox upper left Y.
lowerRightXBox lower right X.
lowerRightYBox lower right X.

Definition at line 259 of file TiePointsLocatorSURFStrategy.h.

bool te::rp::TiePointsLocatorSURFStrategy::getMatchedInterestPoints ( te::gm::GeometricTransformation const *const  raster1ToRaster2TransfPtr,
const double  raster1ToRaster2TransfDMapError,
MatchedInterestPointsSetT matchedInterestPoints 
)
protectedvirtual

Try to find matched interest points.

Parameters
matchedInterestPointsThe matched interest points.
raster1ToRaster2TransfPtrA pointer to a transformation (estimation) direct mapping raster 1 indexed coords into raster 2 indexed coords, of an empty pointer if there is no transformation avaliable.
raster1ToRaster2TransfDMapErrorThe expected transformation error.
Returns
true if OK, false on errors.

Implements te::rp::TiePointsLocatorStrategy.

Definition at line 86 of file TiePointsLocatorSURFStrategy.cpp.

References createIntegralImage(), executeMatchingByEuclideanDist(), generateSurfFeatures(), te::rp::Matrix< TemplateElementType >::getLinesNumber(), te::rp::TiePointsLocatorStrategy::loadRasterData(), locateSurfInterestPoints(), te::rp::TiePointsLocatorInputParameters::m_enableProgress, te::rp::TiePointsLocatorStrategy::MatchedInterestPointsT::m_feature, te::rp::TiePointsLocatorStrategy::InterestPointT::m_feature1, te::rp::TiePointsLocatorInputParameters::m_inMaskRaster1Ptr, te::rp::TiePointsLocatorInputParameters::m_inMaskRaster2Ptr, m_inputParameters, te::rp::TiePointsLocatorInputParameters::m_inRaster1Bands, te::rp::TiePointsLocatorInputParameters::m_inRaster1Ptr, te::rp::TiePointsLocatorInputParameters::m_inRaster2Bands, te::rp::TiePointsLocatorInputParameters::m_inRaster2Ptr, te::rp::TiePointsLocatorInputParameters::m_interpMethod, m_isInitialized, te::rp::TiePointsLocatorInputParameters::m_maxTiePoints, te::rp::TiePointsLocatorInputParameters::m_pixelSizeXRelation, te::rp::TiePointsLocatorInputParameters::m_pixelSizeYRelation, te::rp::TiePointsLocatorStrategy::MatchedInterestPointsT::m_point1, te::rp::TiePointsLocatorStrategy::MatchedInterestPointsT::m_point2, te::rp::TiePointsLocatorInputParameters::m_raster1TargetAreaColStart, te::rp::TiePointsLocatorInputParameters::m_raster1TargetAreaHeight, te::rp::TiePointsLocatorInputParameters::m_raster1TargetAreaLineStart, te::rp::TiePointsLocatorInputParameters::m_raster1TargetAreaWidth, te::rp::TiePointsLocatorInputParameters::m_raster2TargetAreaColStart, te::rp::TiePointsLocatorInputParameters::m_raster2TargetAreaHeight, te::rp::TiePointsLocatorInputParameters::m_raster2TargetAreaLineStart, te::rp::TiePointsLocatorInputParameters::m_raster2TargetAreaWidth, te::rp::TiePointsLocatorInputParameters::m_subSampleOptimizationRescaleFactor, te::rp::TiePointsLocatorStrategy::InterestPointT::m_x, te::rp::TiePointsLocatorStrategy::InterestPointT::m_y, and TERP_TRUE_OR_RETURN_FALSE.

static float te::rp::TiePointsLocatorSURFStrategy::getSurfDxxDerivative ( float **  bufferPtr,
const unsigned int &  centerX,
const unsigned int &  centerY,
const unsigned int &  lobeWidth,
const unsigned int &  lobeRadius 
)
inlinestaticprotected

Return a SURF box filter Dyy derivative centered over the given position from the given integral image buffer.

Parameters
bufferPtrBuffer pointer.
centerXCenter X.
centerYCenter Y.
lobeWidthFilter lobe width.
lobeRadiusFilter lobe radius.

Definition at line 315 of file TiePointsLocatorSURFStrategy.h.

Referenced by locateSurfInterestPointsThreadEntry().

static float te::rp::TiePointsLocatorSURFStrategy::getSurfDxyDerivative ( float **  bufferPtr,
const unsigned int &  centerX,
const unsigned int &  centerY,
const unsigned int &  lobeWidth 
)
inlinestaticprotected

Return a SURF box filter Dxy derivative centered over the given position from the given integral image buffer.

Parameters
bufferPtrBuffer pointer.
centerXCenter X.
centerYCenter Y.
lobeWidthFilter lobe width.

Definition at line 346 of file TiePointsLocatorSURFStrategy.h.

Referenced by locateSurfInterestPointsThreadEntry().

static float te::rp::TiePointsLocatorSURFStrategy::getSurfDyyDerivative ( float **  bufferPtr,
const unsigned int &  centerX,
const unsigned int &  centerY,
const unsigned int &  lobeWidth,
const unsigned int &  lobeRadius 
)
inlinestaticprotected

Return a SURF box filter Dxx derivative centered over the given position from the given integral image buffer.

Parameters
bufferPtrBuffer pointer.
centerXCenter X.
centerYCenter Y.
lobeWidthFilter lobe width.
lobeRadiusFilter lobe radius.

Definition at line 282 of file TiePointsLocatorSURFStrategy.h.

Referenced by locateSurfInterestPointsThreadEntry().

static unsigned int te::rp::TiePointsLocatorSURFStrategy::getSurfFilterSize ( const unsigned int &  octaveIndex,
const unsigned int &  scaleIndex 
)
inlinestaticprotected

Return the surf octave filter size (width).

Parameters
octaveIndexOctave index (starting from zero).
scaleIndexScale index (starting from zero).

Definition at line 475 of file TiePointsLocatorSURFStrategy.h.

Referenced by getAutoMaxTiePointsNumber(), locateSurfInterestPoints(), and locateSurfInterestPointsThreadEntry().

static unsigned int te::rp::TiePointsLocatorSURFStrategy::getSurfOctaveBaseFilterSize ( const unsigned int &  octaveIndex)
inlinestaticprotected

Return the surf octave base filter size (width).

Parameters
octaveIndexOctave index (starting from zero).

Definition at line 463 of file TiePointsLocatorSURFStrategy.h.

Referenced by getAutoMaxTiePointsNumber().

static unsigned int te::rp::TiePointsLocatorSURFStrategy::getSurfOctaveFilterStepSize ( const unsigned int &  octaveIndex)
inlinestaticprotected

Return the surf octave filter step size (width).

Parameters
octaveIndexOctave index (starting from zero).

Definition at line 453 of file TiePointsLocatorSURFStrategy.h.

bool te::rp::TiePointsLocatorStrategy::loadRasterData ( te::rst::Raster const *  rasterPtr,
const std::vector< unsigned int > &  rasterBands,
te::rst::Raster const *  maskRasterPtr,
const unsigned int  maskRasterBand,
const unsigned int  rasterTargetAreaLineStart,
const unsigned int  rasterTargetAreaColStart,
const unsigned int  rasterTargetAreaWidth,
const unsigned int  rasterTargetAreaHeight,
const double  desiredRescaleFactorX,
const double  desiredRescaleFactorY,
const te::rst::Interpolator::Method  rasterInterpMethod,
const unsigned char  maxMemPercentUsage,
std::vector< boost::shared_ptr< FloatsMatrix > > &  loadedRasterData,
UCharsMatrix loadedMaskRasterData,
double &  achievedRescaleFactorX,
double &  achievedRescaleFactorY 
)
staticprotectedinherited

Load rasters data (normalized between 0 and 1).

Parameters
rasterPtrInput raster pointer.
rasterBandsInput raster bands.
maskRasterPtrThe related input mask raster pointer (or zero, if no mask raster is avaliable).
maskRasterBandThe input mask raster band to use.
rasterTargetAreaLineStartThe raster target area initial line.
rasterTargetAreaColStartThe raster target area initial column.
rasterTargetAreaWidthThe raster target area width.
rasterTargetAreaHeightThe raster target area height.
desiredRescaleFactorXThe desired Scale factor to be applied on the loaded data.
desiredRescaleFactorYThe desired Scale factor to be applied on the loaded data.
rasterInterpMethodThe interpolation used when loading the input raster.
maxMemPercentUsageThe maximum amount (percent) of memory to use for the loaded data [0,100].
loadedRasterDataThe loaded raster data.
loadedMaskRasterDataThe loaded mask raster data.
desiredRescaleFactorXThe real achieved Scale factor.
desiredRescaleFactorYThe real achieved Scale factor.
Returns
true if ok, false on errors.

Definition at line 54 of file TiePointsLocatorStrategy.cpp.

References te::rp::Matrix< TemplateElementType >::AutoMemPol, te::rp::Matrix< double >::AutoMemPol, te::rst::Raster::getBand(), te::rst::Interpolator::getValue(), te::rst::Band::getValue(), MAX, te::rp::Matrix< TemplateElementType >::reset(), te::rp::TiePointsLocatorStrategy::reset(), and TERP_TRUE_OR_RETURN_FALSE.

Referenced by te::rp::TiePointsLocatorMoravecStrategy::getMatchedInterestPoints(), and getMatchedInterestPoints().

bool te::rp::TiePointsLocatorSURFStrategy::locateSurfInterestPoints ( const unsigned int  maxInterestPoints,
const FloatsMatrix integralRasterData,
UCharsMatrix const *  maskRasterDataPtr,
InterestPointsSetT interestPoints 
) const
protected

SURF interest points locator.

Parameters
maxInterestPointsThe maximum number of interest points to find.
integralRasterDataIntegral image raster data.
maskRasterDataPtrThe loaded mask raster data pointer (or zero if no mask is avaliable).
interestPointsThe found interest points (coords related to rasterData lines/cols).
Returns
true if ok, false on errors.
Note
InterestPointT::m_feature1 will be sum of differences between the hessian matrix determinant each pixel and its neighborhoods (always a positive value).
InterestPointT::m_feature2 will be used filter width (pixels).
InterestPointT::m_feature3 will 1 if the laplacian sign is positive, or zero if negative.

Definition at line 708 of file TiePointsLocatorSURFStrategy.cpp.

References te::rp::Matrix< TemplateElementType >::getColumnsNumber(), te::rp::Matrix< TemplateElementType >::getLinesNumber(), te::common::GetPhysProcNumber(), getSurfFilterSize(), locateSurfInterestPointsThreadEntry(), te::rp::TiePointsLocatorInputParameters::m_enableMultiThread, m_inputParameters, te::rp::TiePointsLocatorSURFStrategy::SurfLocatorThreadParams::m_integralRasterDataPtr, te::rp::TiePointsLocatorSURFStrategy::SurfLocatorThreadParams::m_interestPointsAccessMutexPtr, te::rp::TiePointsLocatorSURFStrategy::SurfLocatorThreadParams::m_interestPointsSubSectorsPtr, te::rp::TiePointsLocatorSURFStrategy::SurfLocatorThreadParams::m_maskRasterDataPtr, te::rp::TiePointsLocatorSURFStrategy::SurfLocatorThreadParams::m_maxInterestPointsBySubSector, te::rp::TiePointsLocatorSURFStrategy::SurfLocatorThreadParams::m_nextRasterLinesBlockToProcessValuePtr, te::rp::TiePointsLocatorSURFStrategy::SurfLocatorThreadParams::m_octavesNumber, te::rp::TiePointsLocatorSURFStrategy::SurfLocatorThreadParams::m_processingBlocksNumber, te::rp::TiePointsLocatorSURFStrategy::SurfLocatorThreadParams::m_rastaDataAccessMutexPtr, te::rp::TiePointsLocatorSURFStrategy::SurfLocatorThreadParams::m_returnValuePtr, te::rp::TiePointsLocatorSURFStrategy::SurfLocatorThreadParams::m_scalesNumber, te::rp::TiePointsLocatorInputParameters::m_surfOctavesNumber, te::rp::TiePointsLocatorInputParameters::m_surfScalesNumber, te::rp::TiePointsLocatorSURFStrategy::SurfLocatorThreadParams::m_tiePointsSubSectorsSplitFactor, and te::rp::TiePointsLocatorInputParameters::m_tiePointsSubSectorsSplitFactor.

Referenced by getMatchedInterestPoints().

void te::rp::TiePointsLocatorSURFStrategy::locateSurfInterestPointsThreadEntry ( SurfLocatorThreadParams paramsPtr)
staticprotected

Surf locator thread entry.

Parameters
paramsPtrA pointer to the thread parameters.

Definition at line 791 of file TiePointsLocatorSURFStrategy.cpp.

References te::rp::TiePointsLocatorStrategy::checkForDuplicatedInterestPoints(), te::rp::Matrix< TemplateElementType >::getColumnsNumber(), te::rp::Matrix< TemplateElementType >::getLinesNumber(), getSurfDxxDerivative(), getSurfDxyDerivative(), getSurfDyyDerivative(), getSurfFilterSize(), insert(), te::rp::TiePointsLocatorStrategy::InterestPointT::m_feature1, te::rp::TiePointsLocatorStrategy::InterestPointT::m_feature2, te::rp::TiePointsLocatorStrategy::InterestPointT::m_feature3, te::rp::TiePointsLocatorSURFStrategy::SurfLocatorThreadParams::m_integralRasterDataPtr, te::rp::TiePointsLocatorSURFStrategy::SurfLocatorThreadParams::m_interestPointsAccessMutexPtr, te::rp::TiePointsLocatorSURFStrategy::SurfLocatorThreadParams::m_interestPointsSubSectorsPtr, te::rp::TiePointsLocatorSURFStrategy::SurfLocatorThreadParams::m_maskRasterDataPtr, te::rp::TiePointsLocatorSURFStrategy::SurfLocatorThreadParams::m_maxInterestPointsBySubSector, te::rp::TiePointsLocatorSURFStrategy::SurfLocatorThreadParams::m_nextRasterLinesBlockToProcessValuePtr, te::rp::TiePointsLocatorSURFStrategy::SurfLocatorThreadParams::m_octavesNumber, te::rp::TiePointsLocatorSURFStrategy::SurfLocatorThreadParams::m_processingBlocksNumber, te::rp::TiePointsLocatorSURFStrategy::SurfLocatorThreadParams::m_rastaDataAccessMutexPtr, te::rp::TiePointsLocatorSURFStrategy::SurfLocatorThreadParams::m_returnValuePtr, te::rp::TiePointsLocatorSURFStrategy::SurfLocatorThreadParams::m_scalesNumber, te::rp::TiePointsLocatorSURFStrategy::SurfLocatorThreadParams::m_tiePointsSubSectorsSplitFactor, te::rp::TiePointsLocatorStrategy::InterestPointT::m_x, te::rp::TiePointsLocatorStrategy::InterestPointT::m_y, te::rp::Matrix< TemplateElementType >::RAMMemPol, te::rp::Matrix< TemplateElementType >::reset(), te::rp::TiePointsLocatorStrategy::roolUpBuffer(), and TERP_TRUE_OR_THROW.

Referenced by locateSurfInterestPoints().

void te::rp::TiePointsLocatorSURFStrategy::reset ( )
protectedvirtual

Clear all internal allocated resources and go back to the initial not-initialized state.

Implements te::rp::TiePointsLocatorStrategy.

Definition at line 80 of file TiePointsLocatorSURFStrategy.cpp.

References m_inputParameters, m_isInitialized, and te::rp::TiePointsLocatorInputParameters::reset().

Referenced by TiePointsLocatorSURFStrategy(), and ~TiePointsLocatorSURFStrategy().

template<typename BufferElementT >
static void te::rp::TiePointsLocatorStrategy::roolUpBuffer ( BufferElementT **  bufferPtr,
const unsigned int &  bufferLinesNumber 
)
inlinestaticprotectedinherited

RoolUp a buffer of lines.

Parameters
bufferPtrBuffer pointer.
bufferLinesNumberBuffer lines number.

Definition at line 269 of file TiePointsLocatorStrategy.h.

Referenced by te::rp::TiePointsLocatorMoravecStrategy::locateMoravecInterestPointsThreadEntry(), and locateSurfInterestPointsThreadEntry().

Friends And Related Function Documentation

friend class TiePointsLocator
friend

Definition at line 47 of file TiePointsLocatorSURFStrategy.h.

Member Data Documentation

te::rp::TiePointsLocatorInputParameters te::rp::TiePointsLocatorSURFStrategy::m_inputParameters
protected
bool te::rp::TiePointsLocatorSURFStrategy::m_isInitialized
protected

true if this instance is initialized.

Definition at line 121 of file TiePointsLocatorSURFStrategy.h.

Referenced by getAutoMaxTiePointsNumber(), getMatchedInterestPoints(), initialize(), and reset().


The documentation for this class was generated from the following files: