Skip to content

Commit 15da6aa

Browse files
committed
Updating search parameters in the C and Python bindings
1 parent 82b8bc8 commit 15da6aa

File tree

3 files changed

+26
-3
lines changed

3 files changed

+26
-3
lines changed

src/cpp/flann/flann.cpp

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
struct FLANNParameters DEFAULT_FLANN_PARAMETERS = {
3535
FLANN_INDEX_KDTREE,
3636
32, 0.2f, 0.0f,
37+
0, -1, 0,
3738
4, 4,
3839
32, 11, FLANN_CENTERS_RANDOM,
3940
0.9f, 0.01f, 0, 0.1f,
@@ -101,7 +102,17 @@ flann::IndexParams create_parameters(FLANNParameters* p)
101102
return params;
102103
}
103104

105+
flann::SearchParams create_search_params(FLANNParameters* p)
106+
{
107+
flann::SearchParams params;
108+
params.checks = p->checks;
109+
params.eps = p->eps;
110+
params.sorted = p->sorted;
111+
params.max_neighbors = p->max_neighbors;
112+
params.cores = p->cores;
104113

114+
return params;
115+
}
105116

106117

107118
void update_flann_parameters(const IndexParams& params, FLANNParameters* flann_params)
@@ -429,9 +440,10 @@ int __flann_find_nearest_neighbors(typename Distance::ElementType* dataset, int
429440
index->buildIndex();
430441
Matrix<int> m_indices(result,tcount, nn);
431442
Matrix<DistanceType> m_dists(dists,tcount, nn);
443+
SearchParams search_params = create_search_params(flann_params);
432444
index->knnSearch(Matrix<ElementType>(testset, tcount, index->veclen()),
433445
m_indices,
434-
m_dists, nn, SearchParams(flann_params->checks) );
446+
m_dists, nn, search_params );
435447
delete index;
436448
return 0;
437449
}
@@ -517,9 +529,10 @@ int __flann_find_nearest_neighbors_index(flann_index_t index_ptr, typename Dista
517529
Matrix<int> m_indices(result,tcount, nn);
518530
Matrix<DistanceType> m_dists(dists, tcount, nn);
519531

532+
SearchParams search_params = create_search_params(flann_params);
520533
index->knnSearch(Matrix<ElementType>(testset, tcount, index->veclen()),
521534
m_indices,
522-
m_dists, nn, SearchParams(flann_params->checks) );
535+
m_dists, nn, search_params );
523536

524537
return 0;
525538
}
@@ -610,9 +623,10 @@ int __flann_radius_search(flann_index_t index_ptr,
610623

611624
Matrix<int> m_indices(indices, 1, max_nn);
612625
Matrix<DistanceType> m_dists(dists, 1, max_nn);
626+
SearchParams search_params = create_search_params(flann_params);
613627
int count = index->radiusSearch(Matrix<ElementType>(query, 1, index->veclen()),
614628
m_indices,
615-
m_dists, radius, SearchParams(flann_params->checks) );
629+
m_dists, radius, search_params );
616630

617631

618632
return count;

src/cpp/flann/flann.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,9 @@ struct FLANNParameters
4848
int checks; /* how many leafs (features) to check in one search */
4949
float cb_index; /* cluster boundary index. Used when searching the kmeans tree */
5050
float eps; /* eps parameter for eps-knn search */
51+
int sorted; /* indicates if results returned by radius search should be sorted or not */
52+
int max_neighbors; /* limits the maximum number of neighbors should be returned by radius search */
53+
int cores; /* number of paralel cores to use for searching */
5154

5255
/* kdtree index parameters */
5356
int trees; /* number of randomized trees to use (for kdtree) */

src/python/pyflann/flann_ctypes.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,9 @@ class FLANNParameters(CustomStructure):
8585
('checks', c_int),
8686
('cb_index', c_float),
8787
('eps', c_float),
88+
('sorted', c_int),
89+
('max_neighbors', c_int),
90+
('cores', c_int),
8891
('trees', c_int),
8992
('leaf_max_size', c_int),
9093
('branching', c_int),
@@ -105,6 +108,9 @@ class FLANNParameters(CustomStructure):
105108
'checks' : 32,
106109
'eps' : 0.0,
107110
'cb_index' : 0.5,
111+
'sorted' : 1,
112+
'max_neighbors' : -1,
113+
'cores' : 0,
108114
'trees' : 1,
109115
'leaf_max_size' : 4,
110116
'branching' : 32,

0 commit comments

Comments
 (0)