31 #ifndef OPENCV_FLANN_RESULTSET_H
32 #define OPENCV_FLANN_RESULTSET_H
49 template <
typename T,
typename DistanceType>
58 bool operator<(const BranchStruct<T, DistanceType>& rhs)
const
65 template <
typename DistanceType>
71 virtual bool full()
const = 0;
75 virtual DistanceType
worstDist()
const = 0;
84 template <
typename DistanceType>
91 DistanceType worst_distance_;
98 void init(
int* indices_, DistanceType* dists_)
103 worst_distance_ = (std::numeric_limits<DistanceType>::max)();
104 dists[capacity-1] = worst_distance_;
114 return count == capacity;
120 if (dist >= worst_distance_)
return;
122 for (i=
count; i>0; --i) {
123 #ifdef FLANN_FIRST_MATCH
124 if ( (dists[i-1]>dist) || ((dist==dists[i-1])&&(
indices[i-1]>index)) )
130 dists[i] = dists[i-1];
139 worst_distance_ = dists[capacity-1];
144 return worst_distance_;
151 template <
typename DistanceType>
158 DistanceType worst_distance_;
165 void init(
int* indices_, DistanceType* dists_)
170 worst_distance_ = (std::numeric_limits<DistanceType>::max)();
171 dists[capacity-1] = worst_distance_;
181 return count == capacity;
187 if (dist >= worst_distance_)
return;
189 for (i =
count; i > 0; --i) {
190 #ifdef FLANN_FIRST_MATCH
191 if ( (dists[i-1]<=dist) && ((dist!=dists[i-1])||(
indices[i-1]<=index)) )
193 if (dists[i-1]<=dist)
198 while ((j >= 0) && (dists[j] == dist)) {
209 for (
int j =
count-1; j > i; --j) {
210 dists[j] = dists[j-1];
215 worst_distance_ = dists[capacity-1];
220 return worst_distance_;
228 template <
typename DistanceType>
238 RadiusResultSet(DistanceType radius_,
int* indices_, DistanceType* dists_,
int capacity_) :
239 radius(radius_),
indices(indices_), dists(dists_), capacity(capacity_)
266 if ((capacity>0)&&(
count < capacity)) {
286 template<
typename DistanceType>
320 virtual void clear() = 0;
329 if (n_neighbors < 0) {
330 for (
typename std::set<DistIndex>::const_iterator dist_index =
dist_indices_.begin(), dist_index_end =
332 *indices = dist_index->index_;
333 *dist = dist_index->dist_;
338 for (
typename std::set<DistIndex>::const_iterator dist_index =
dist_indices_.begin(), dist_index_end =
340 *indices = dist_index->index_;
341 *dist = dist_index->dist_;
353 copy(indices, dist, n_neighbors);
388 template<
typename DistanceType>
447 template<
typename DistanceType>
499 DistanceType radius_;
506 template<
typename DistanceType>
515 this->capacity_ = capacity;
535 unsigned int capacity_;
538 DistanceType radius_;
542 #endif //OPENCV_FLANN_RESULTSET_H
KNNRadiusUniqueResultSet(unsigned int capacity, DistanceType radius)
Definition: result_set.h:513
DistIndex(DistanceType dist, unsigned int index)
Definition: result_set.h:292
virtual bool full() const =0
virtual void addPoint(DistanceType dist, int index)=0
Definition: result_set.h:287
BranchStruct()
Definition: result_set.h:55
bool full() const
Definition: result_set.h:112
void init()
Definition: result_set.h:248
GLuint index
Definition: core_c.h:986
size_t size() const
Definition: result_set.h:107
bool full() const
Definition: result_set.h:258
const CvMat const CvMat const CvMat CvMat CvMat CvMat CvMat CvSize CvMat CvMat * T
Definition: calib3d.hpp:270
DistanceType worst_distance_
Definition: result_set.h:377
void init(int *indices_, DistanceType *dists_)
Definition: result_set.h:98
void addPoint(DistanceType dist, int index)
Definition: result_set.h:405
T node
Definition: result_set.h:52
KNNResultSet(int capacity_)
Definition: result_set.h:161
void addPoint(DistanceType dist, int index)
Definition: result_set.h:263
void init(int *indices_, DistanceType *dists_)
Definition: result_set.h:165
RadiusUniqueResultSet(DistanceType radius)
Definition: result_set.h:454
size_t size() const
Definition: result_set.h:253
void clear()
Definition: result_set.h:471
virtual void sortAndCopy(int *indices, DistanceType *dist, int n_neighbors=-1) const
Definition: result_set.h:351
Definition: result_set.h:229
void clear()
Definition: result_set.h:523
DistanceType dist_
Definition: result_set.h:300
GLuint GLuint GLsizei GLenum const GLvoid * indices
Definition: legacy.hpp:3084
DistanceType worstDist() const
Definition: result_set.h:274
int index
Definition: core_c.h:309
size_t size() const
Definition: result_set.h:359
virtual DistanceType worstDist() const =0
Definition: result_set.h:152
Definition: result_set.h:507
KNNUniqueResultSet(unsigned int capacity)
Definition: result_set.h:395
bool full() const
Definition: result_set.h:480
size_t size() const
Definition: result_set.h:174
GLuint GLuint GLsizei count
Definition: core_c.h:973
Definition: result_set.h:290
RadiusResultSet(DistanceType radius_, int *indices_, DistanceType *dists_, int capacity_)
Definition: result_set.h:238
void clear()
Definition: result_set.h:425
bool full() const
Definition: result_set.h:179
virtual ~ResultSet()
Definition: result_set.h:69
Definition: result_set.h:389
void addPoint(DistanceType dist, int index)
Definition: result_set.h:185
UniqueResultSet()
Definition: result_set.h:305
virtual void copy(int *indices, DistanceType *dist, int n_neighbors=-1) const
Definition: result_set.h:327
const CvMat CvMat * indices
Definition: legacy.hpp:3052
Definition: result_set.h:66
std::set< DistIndex > dist_indices_
Definition: result_set.h:380
UniqueResultSet< DistanceType >::DistIndex DistIndex
Definition: result_set.h:433
Definition: result_set.h:448
Definition: result_set.h:85
bool full() const
Definition: result_set.h:313
DistanceType mindist
Definition: result_set.h:53
DistanceType worstDist() const
Definition: result_set.h:368
bool operator<(const DistIndex dist_index) const
Definition: result_set.h:296
void addPoint(DistanceType dist, int index)
Definition: result_set.h:464
void addPoint(DistanceType dist, int index)
Definition: result_set.h:118
KNNSimpleResultSet(int capacity_)
Definition: result_set.h:94
DistanceType worstDist() const
Definition: result_set.h:218
DistanceType worstDist() const
Definition: result_set.h:142
CvPoint int radius
Definition: core_c.h:1290
CvPoint3D64f double * dist
Definition: legacy.hpp:556
~RadiusResultSet()
Definition: result_set.h:244
Definition: result_set.h:50
unsigned int capacity_
Definition: result_set.h:439
BranchStruct(const T &aNode, DistanceType dist)
Definition: result_set.h:56
bool is_full_
Definition: result_set.h:374
DistanceType worstDist() const
Definition: result_set.h:489
unsigned int index_
Definition: result_set.h:301