37template <
class KE,
class VTYPE>
67template <
class KE,
class VTYPE>
82template <
class KE,
class VTYPE>
97template <
class KE,
class VTYPE>
162template <
class KE,
class VTYPE>
166 std::vector<VTYPE>
aMinVals(_dims, std::numeric_limits<VTYPE>::max());
167 std::vector<VTYPE>
aMaxVals(_dims, - std::numeric_limits<VTYPE>::max());
226template <
class KE,
class VTYPE>
230 for (
int n = 0 ;
n < _dims ; ++
n)
232 double aDiff = i1->getVectorElem(
n) - i2->getVectorElem(
n);
239template <
class KE,
class VTYPE>
257template <
class KE,
class VTYPE>
297 if (
iTarget.getVectorElem(_splitDim) > _pivot->getVectorElem(_splitDim))
340 typename std::list<QueueEntry<KE, VTYPE> >::iterator
aSQ,
aSmallestIt;
371template <
class KE,
class TYPE>
380template <
class KE,
class TYPE>
390template <
class KE,
class TYPE>
393 _rightBottom(std::vector<
TYPE>(
iOther._rightBottom)),
403template <
class KE,
class TYPE>
427template <
class KE,
class TYPE>
433 for (
int n = 0 ;
n < _dim ; ++
n)
458template <
class KE,
class TYPE>
472template <
class KE,
class TYPE>
475 for (
int n = 0 ;
n < _dim ; ++
n)
477 if (_leftTop[
n] > -std::numeric_limits<TYPE>::max()
478 || _rightBottom[
n] < std::numeric_limits<TYPE>::max())
480 std::cout <<
"dim[" <<
n <<
"] = {" << _leftTop[
n] <<
" , " << _rightBottom[
n] <<
"}" << std::endl;
483 std::cout << std::endl;
486template <
class KE,
class TYPE>
489 if (
iTarget.getVectorSize() != _dim)
491 std::cout <<
"is target in dimension mismatch" << std::endl;
494 for (
int n = 0 ;
n < _dim ; ++
n)
506template <
class KE,
class VTYPE>
509 return (
iA._dist <
iB._dist);
515 return (
iA._distance >
iB._distance);
bool split(HyperRectangle &oLeft, HyperRectangle &oRight, int iSplitDim, TYPE iSplitVal)
bool isTargetIn(const KE &iTarget)
double calcSqDistance(const KE &iTarget)
bool hasHyperSphereIntersect(const KE &iTarget, double iSqDistance)
KDTree(const ItemVector_t &iElemsList, int iDimensions)
std::list< QueueEntry< KE, VTYPE > > QueueEntryList_t
double calcSqDist(const KE *i1, const KE *i2)
void recurseNearestNeighboursBBF(const KE &iTarget, HyperRectangle< KE, VTYPE > &iHR, BestMatchLimitedSet_t &ioBestMatches, QueueEntryList_t &ioSearchQueue, int &ioRemainingUnqueues)
std::vector< KE >::const_iterator ItemVectorIt_t
ItemPtrVectorIt_t choosePivot(const ItemPtrVector_t &iElemsPtrList)
std::vector< constKE * >::const_iterator ItemPtrVectorIt_t
std::vector< KE > ItemVector_t
std::vector< const KE * > ItemPtrVector_t
void init(const ItemPtrVector_t &iElemsPtrList)
BestMatchSet_t getNearestNeighboursBBF(const KE &iTarget, int iNbBestMatches, int iNbSearchSteps)
KDTree< KE, VTYPE > * _kdTree
bool operator>(const BestMatch< KE > &iA, const BestMatch< KE > &iB)
bool operator<(const QueueEntry< KE, VTYPE > &iA, const QueueEntry< KE, VTYPE > &iB)
std::vector< deghosting::BImagePtr > threshold(const std::vector< deghosting::FImagePtr > &inputImages, const double threshold, const uint16_t flags)
Threshold function used for creating alpha masks for images.