|
34 | 34 | struct FLANNParameters DEFAULT_FLANN_PARAMETERS = {
|
35 | 35 | FLANN_INDEX_KDTREE,
|
36 | 36 | 32, 0.2f, 0.0f,
|
| 37 | + 0, -1, 0, |
37 | 38 | 4, 4,
|
38 | 39 | 32, 11, FLANN_CENTERS_RANDOM,
|
39 | 40 | 0.9f, 0.01f, 0, 0.1f,
|
@@ -101,7 +102,17 @@ flann::IndexParams create_parameters(FLANNParameters* p)
|
101 | 102 | return params;
|
102 | 103 | }
|
103 | 104 |
|
| 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; |
104 | 113 |
|
| 114 | + return params; |
| 115 | +} |
105 | 116 |
|
106 | 117 |
|
107 | 118 | void update_flann_parameters(const IndexParams& params, FLANNParameters* flann_params)
|
@@ -429,9 +440,10 @@ int __flann_find_nearest_neighbors(typename Distance::ElementType* dataset, int
|
429 | 440 | index->buildIndex();
|
430 | 441 | Matrix<int> m_indices(result,tcount, nn);
|
431 | 442 | Matrix<DistanceType> m_dists(dists,tcount, nn);
|
| 443 | + SearchParams search_params = create_search_params(flann_params); |
432 | 444 | index->knnSearch(Matrix<ElementType>(testset, tcount, index->veclen()),
|
433 | 445 | m_indices,
|
434 |
| - m_dists, nn, SearchParams(flann_params->checks) ); |
| 446 | + m_dists, nn, search_params ); |
435 | 447 | delete index;
|
436 | 448 | return 0;
|
437 | 449 | }
|
@@ -517,9 +529,10 @@ int __flann_find_nearest_neighbors_index(flann_index_t index_ptr, typename Dista
|
517 | 529 | Matrix<int> m_indices(result,tcount, nn);
|
518 | 530 | Matrix<DistanceType> m_dists(dists, tcount, nn);
|
519 | 531 |
|
| 532 | + SearchParams search_params = create_search_params(flann_params); |
520 | 533 | index->knnSearch(Matrix<ElementType>(testset, tcount, index->veclen()),
|
521 | 534 | m_indices,
|
522 |
| - m_dists, nn, SearchParams(flann_params->checks) ); |
| 535 | + m_dists, nn, search_params ); |
523 | 536 |
|
524 | 537 | return 0;
|
525 | 538 | }
|
@@ -610,9 +623,10 @@ int __flann_radius_search(flann_index_t index_ptr,
|
610 | 623 |
|
611 | 624 | Matrix<int> m_indices(indices, 1, max_nn);
|
612 | 625 | Matrix<DistanceType> m_dists(dists, 1, max_nn);
|
| 626 | + SearchParams search_params = create_search_params(flann_params); |
613 | 627 | int count = index->radiusSearch(Matrix<ElementType>(query, 1, index->veclen()),
|
614 | 628 | m_indices,
|
615 |
| - m_dists, radius, SearchParams(flann_params->checks) ); |
| 629 | + m_dists, radius, search_params ); |
616 | 630 |
|
617 | 631 |
|
618 | 632 | return count;
|
|
0 commit comments