ACloudViewer  3.9.4
A Modern Library for 3D Data Processing
flann.h
Go to the documentation of this file.
1 /***********************************************************************
2  * Software License Agreement (BSD License)
3  *
4  * Copyright 2008-2009 Marius Muja (mariusm@cs.ubc.ca). All rights reserved.
5  * Copyright 2008-2009 David G. Lowe (lowe@cs.ubc.ca). All rights reserved.
6  *
7  * THE BSD LICENSE
8  *
9  * Redistribution and use in source and binary forms, with or without
10  * modification, are permitted provided that the following conditions
11  * are met:
12  *
13  * 1. Redistributions of source code must retain the above copyright
14  * notice, this list of conditions and the following disclaimer.
15  * 2. Redistributions in binary form must reproduce the above copyright
16  * notice, this list of conditions and the following disclaimer in the
17  * documentation and/or other materials provided with the distribution.
18  *
19  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
20  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
21  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
22  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
23  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
24  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
28  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29  *************************************************************************/
30 
31 #ifndef FLANN_H_
32 #define FLANN_H_
33 
34 #include "defines.h"
35 
36 #ifdef __cplusplus
37 extern "C"
38 {
39  using namespace flann;
40 #endif
41 
42 
44 {
45  enum flann_algorithm_t algorithm; /* the algorithm to use */
46 
47  /* search time parameters */
48  int checks; /* how many leafs (features) to check in one search */
49  float eps; /* eps parameter for eps-knn search */
50  int sorted; /* indicates if results returned by radius search should be sorted or not */
51  int max_neighbors; /* limits the maximum number of neighbors should be returned by radius search */
52  int cores; /* number of paralel cores to use for searching */
53 
54  /* kdtree index parameters */
55  int trees; /* number of randomized trees to use (for kdtree) */
57 
58  /* kmeans index parameters */
59  int branching; /* branching factor (for kmeans tree) */
60  int iterations; /* max iterations to perform in one kmeans cluetering (kmeans tree) */
61  enum flann_centers_init_t centers_init; /* algorithm used for picking the initial cluster centers for kmeans tree */
62  float cb_index; /* cluster boundary index. Used when searching the kmeans tree */
63 
64  /* autotuned index parameters */
65  float target_precision; /* precision desired (used for autotuning, -1 otherwise) */
66  float build_weight; /* build tree time weighting factor */
67  float memory_weight; /* index memory weigthing factor */
68  float sample_fraction; /* what fraction of the dataset to use for autotuning */
69 
70  /* LSH parameters */
71  unsigned int table_number_;
72  unsigned int key_size_;
73  unsigned int multi_probe_level_;
75  /* other parameters */
76  enum flann_log_level_t log_level; /* determines the verbosity of each flann function */
77  long random_seed; /* random seed to use */
78 };
79 
80 
81 typedef void* FLANN_INDEX; /* deprecated */
82 typedef void* flann_index_t;
83 
85 
93 FLANN_EXPORT void flann_log_verbosity(int level);
94 
95 
101 FLANN_EXPORT void flann_set_distance_type(enum flann_distance_t distance_type, int order);
102 
107 
113 
129  int rows,
130  int cols,
131  float* speedup,
132  struct FLANNParameters* flann_params);
133 
135  int rows,
136  int cols,
137  float* speedup,
138  struct FLANNParameters* flann_params);
139 
141  int rows,
142  int cols,
143  float* speedup,
144  struct FLANNParameters* flann_params);
145 
146 FLANN_EXPORT flann_index_t flann_build_index_byte(unsigned char* dataset,
147  int rows,
148  int cols,
149  float* speedup,
150  struct FLANNParameters* flann_params);
151 
153  int rows,
154  int cols,
155  float* speedup,
156  struct FLANNParameters* flann_params);
157 
172 FLANN_EXPORT int flann_add_points(flann_index_t index_ptr, float* points,
173  int rows, int columns,
174  float rebuild_threshold);
175 
177  int rows, int columns,
178  float rebuild_threshold);
179 
181  double* points, int rows, int columns,
182  float rebuild_threshold);
183 
185  unsigned char* points, int rows,
186  int columns, float rebuild_threshold);
187 
189  int rows, int columns,
190  float rebuild_threshold);
191 
199  unsigned int point_id);
200 
202  unsigned int point_id);
203 
205  unsigned int point_id);
206 
208  unsigned int point_id);
209 
211  unsigned int point_id);
212 
222  unsigned int point_id);
223 
225  unsigned int point_id);
226 
228  unsigned int point_id);
229 
230 FLANN_EXPORT unsigned char* flann_get_point_byte(flann_index_t index_ptr,
231  unsigned int point_id);
232 
234  unsigned int point_id);
235 
242 FLANN_EXPORT unsigned int flann_veclen(flann_index_t index_ptr);
243 
244 FLANN_EXPORT unsigned int flann_veclen_float(flann_index_t index_ptr);
245 
246 FLANN_EXPORT unsigned int flann_veclen_double(flann_index_t index_ptr);
247 
248 FLANN_EXPORT unsigned int flann_veclen_byte(flann_index_t index_ptr);
249 
250 FLANN_EXPORT unsigned int flann_veclen_int(flann_index_t index_ptr);
251 
258 FLANN_EXPORT unsigned int flann_size(flann_index_t index_ptr);
259 
260 FLANN_EXPORT unsigned int flann_size_float(flann_index_t index_ptr);
261 
262 FLANN_EXPORT unsigned int flann_size_double(flann_index_t index_ptr);
263 
264 FLANN_EXPORT unsigned int flann_size_byte(flann_index_t index_ptr);
265 
266 FLANN_EXPORT unsigned int flann_size_int(flann_index_t index_ptr);
267 
275 
277 
279 
281 
283 
284 
293  char* filename);
294 
296  char* filename);
297 
299  char* filename);
300 
302  char* filename);
303 
305  char* filename);
306 
317  float* dataset,
318  int rows,
319  int cols);
320 
322  float* dataset,
323  int rows,
324  int cols);
325 
327  double* dataset,
328  int rows,
329  int cols);
330 
332  unsigned char* dataset,
333  int rows,
334  int cols);
335 
337  int* dataset,
338  int rows,
339  int cols);
340 
341 
358 FLANN_EXPORT int flann_find_nearest_neighbors(float* dataset,
359  int rows,
360  int cols,
361  float* testset,
362  int trows,
363  int* indices,
364  float* dists,
365  int nn,
366  struct FLANNParameters* flann_params);
367 
369  int rows,
370  int cols,
371  float* testset,
372  int trows,
373  int* indices,
374  float* dists,
375  int nn,
376  struct FLANNParameters* flann_params);
377 
379  int rows,
380  int cols,
381  double* testset,
382  int trows,
383  int* indices,
384  double* dists,
385  int nn,
386  struct FLANNParameters* flann_params);
387 
388 FLANN_EXPORT int flann_find_nearest_neighbors_byte(unsigned char* dataset,
389  int rows,
390  int cols,
391  unsigned char* testset,
392  int trows,
393  int* indices,
394  float* dists,
395  int nn,
396  struct FLANNParameters* flann_params);
397 
399  int rows,
400  int cols,
401  int* testset,
402  int trows,
403  int* indices,
404  float* dists,
405  int nn,
406  struct FLANNParameters* flann_params);
407 
408 
426  float* testset,
427  int trows,
428  int* indices,
429  float* dists,
430  int nn,
431  struct FLANNParameters* flann_params);
432 
434  float* testset,
435  int trows,
436  int* indices,
437  float* dists,
438  int nn,
439  struct FLANNParameters* flann_params);
440 
442  double* testset,
443  int trows,
444  int* indices,
445  double* dists,
446  int nn,
447  struct FLANNParameters* flann_params);
448 
450  unsigned char* testset,
451  int trows,
452  int* indices,
453  float* dists,
454  int nn,
455  struct FLANNParameters* flann_params);
456 
458  int* testset,
459  int trows,
460  int* indices,
461  float* dists,
462  int nn,
463  struct FLANNParameters* flann_params);
464 
465 
480 FLANN_EXPORT int flann_radius_search(flann_index_t index_ptr, /* the index */
481  float* query, /* query point */
482  int* indices, /* array for storing the indices found (will be modified) */
483  float* dists, /* similar, but for storing distances */
484  int max_nn, /* size of arrays indices and dists */
485  float radius, /* search radius (squared radius for euclidian metric) */
486  struct FLANNParameters* flann_params);
487 
488 FLANN_EXPORT int flann_radius_search_float(flann_index_t index_ptr, /* the index */
489  float* query, /* query point */
490  int* indices, /* array for storing the indices found (will be modified) */
491  float* dists, /* similar, but for storing distances */
492  int max_nn, /* size of arrays indices and dists */
493  float radius, /* search radius (squared radius for euclidian metric) */
494  struct FLANNParameters* flann_params);
495 
496 FLANN_EXPORT int flann_radius_search_double(flann_index_t index_ptr, /* the index */
497  double* query, /* query point */
498  int* indices, /* array for storing the indices found (will be modified) */
499  double* dists, /* similar, but for storing distances */
500  int max_nn, /* size of arrays indices and dists */
501  float radius, /* search radius (squared radius for euclidian metric) */
502  struct FLANNParameters* flann_params);
503 
504 FLANN_EXPORT int flann_radius_search_byte(flann_index_t index_ptr, /* the index */
505  unsigned char* query, /* query point */
506  int* indices, /* array for storing the indices found (will be modified) */
507  float* dists, /* similar, but for storing distances */
508  int max_nn, /* size of arrays indices and dists */
509  float radius, /* search radius (squared radius for euclidian metric) */
510  struct FLANNParameters* flann_params);
511 
512 FLANN_EXPORT int flann_radius_search_int(flann_index_t index_ptr, /* the index */
513  int* query, /* query point */
514  int* indices, /* array for storing the indices found (will be modified) */
515  float* dists, /* similar, but for storing distances */
516  int max_nn, /* size of arrays indices and dists */
517  float radius, /* search radius (squared radius for euclidian metric) */
518  struct FLANNParameters* flann_params);
519 
530  struct FLANNParameters* flann_params);
531 
533  struct FLANNParameters* flann_params);
534 
536  struct FLANNParameters* flann_params);
537 
539  struct FLANNParameters* flann_params);
540 
542  struct FLANNParameters* flann_params);
543 
564  int rows,
565  int cols,
566  int clusters,
567  float* result,
568  struct FLANNParameters* flann_params);
569 
571  int rows,
572  int cols,
573  int clusters,
574  float* result,
575  struct FLANNParameters* flann_params);
576 
578  int rows,
579  int cols,
580  int clusters,
581  double* result,
582  struct FLANNParameters* flann_params);
583 
584 FLANN_EXPORT int flann_compute_cluster_centers_byte(unsigned char* dataset,
585  int rows,
586  int cols,
587  int clusters,
588  float* result,
589  struct FLANNParameters* flann_params);
590 
592  int rows,
593  int cols,
594  int clusters,
595  float* result,
596  struct FLANNParameters* flann_params);
597 
598 
599 #ifdef __cplusplus
600 }
601 
602 
603 #include "flann.hpp"
604 
605 #endif
606 
607 
608 #endif /*FLANN_H_*/
609 
std::string filename
int points
core::Tensor result
Definition: VtkUtils.cpp:76
#define FLANN_EXPORT
Definition: defines.h:48
flann_log_level_t
Definition: defines.h:104
flann_distance_t
Definition: defines.h:114
flann_algorithm_t
Definition: defines.h:80
flann_centers_init_t
Definition: defines.h:96
int flann_save_index_byte(flann_index_t index_id, char *filename)
Definition: flann.cpp:781
int flann_find_nearest_neighbors_float(float *dataset, int rows, int cols, float *testset, int trows, int *indices, float *dists, int nn, struct FLANNParameters *flann_params)
Definition: flann.cpp:929
int flann_find_nearest_neighbors(float *dataset, int rows, int cols, float *testset, int trows, int *indices, float *dists, int nn, struct FLANNParameters *flann_params)
Definition: flann.cpp:924
int flann_add_points_int(flann_index_t index_ptr, int *points, int rows, int columns, float rebuild_threshold)
Definition: flann.cpp:362
unsigned int flann_veclen_double(flann_index_t index_ptr)
Definition: flann.cpp:564
void * flann_index_t
Definition: flann.h:82
int flann_remove_point_float(flann_index_t index_ptr, unsigned int point_id)
Definition: flann.cpp:419
int flann_find_nearest_neighbors_index_float(flann_index_t index_id, float *testset, int trows, int *indices, float *dists, int nn, struct FLANNParameters *flann_params)
Definition: flann.cpp:1019
int flann_save_index_float(flann_index_t index_id, char *filename)
Definition: flann.cpp:771
int flann_compute_cluster_centers_byte(unsigned char *dataset, int rows, int cols, int clusters, float *result, struct FLANNParameters *flann_params)
Definition: flann.cpp:1311
int flann_add_points_double(flann_index_t index_ptr, double *points, int rows, int columns, float rebuild_threshold)
Definition: flann.cpp:352
int flann_used_memory_byte(flann_index_t index_ptr)
Definition: flann.cpp:707
int flann_used_memory(flann_index_t index_ptr)
Definition: flann.cpp:692
int flann_free_index_int(flann_index_t index_id, struct FLANNParameters *flann_params)
Definition: flann.cpp:1236
flann_index_t flann_build_index(float *dataset, int rows, int cols, float *speedup, struct FLANNParameters *flann_params)
Definition: flann.cpp:266
float * flann_get_point(flann_index_t index_ptr, unsigned int point_id)
Definition: flann.cpp:485
int flann_free_index_byte(flann_index_t index_id, struct FLANNParameters *flann_params)
Definition: flann.cpp:1231
unsigned int flann_size_float(flann_index_t index_ptr)
Definition: flann.cpp:628
unsigned int flann_veclen(flann_index_t index_ptr)
Definition: flann.cpp:554
int flann_compute_cluster_centers_double(double *dataset, int rows, int cols, int clusters, double *result, struct FLANNParameters *flann_params)
Definition: flann.cpp:1306
unsigned char * flann_get_point_byte(flann_index_t index_ptr, unsigned int point_id)
Definition: flann.cpp:500
flann_index_t flann_load_index(char *filename, float *dataset, int rows, int cols)
Definition: flann.cpp:837
int flann_radius_search_int(flann_index_t index_ptr, int *query, int *indices, float *dists, int max_nn, float radius, struct FLANNParameters *flann_params)
Definition: flann.cpp:1155
double * flann_get_point_double(flann_index_t index_ptr, unsigned int point_id)
Definition: flann.cpp:495
int flann_find_nearest_neighbors_index_byte(flann_index_t index_id, unsigned char *testset, int trows, int *indices, float *dists, int nn, struct FLANNParameters *flann_params)
Definition: flann.cpp:1029
int flann_save_index_double(flann_index_t index_id, char *filename)
Definition: flann.cpp:776
int flann_save_index_int(flann_index_t index_id, char *filename)
Definition: flann.cpp:786
int flann_radius_search(flann_index_t index_ptr, float *query, int *indices, float *dists, int max_nn, float radius, struct FLANNParameters *flann_params)
Definition: flann.cpp:1111
int flann_used_memory_int(flann_index_t index_ptr)
Definition: flann.cpp:712
int flann_used_memory_float(flann_index_t index_ptr)
Definition: flann.cpp:697
unsigned int flann_size_int(flann_index_t index_ptr)
Definition: flann.cpp:643
enum flann_distance_t flann_get_distance_type()
Definition: flann.cpp:194
int flann_free_index_double(flann_index_t index_id, struct FLANNParameters *flann_params)
Definition: flann.cpp:1226
int flann_used_memory_double(flann_index_t index_ptr)
Definition: flann.cpp:702
int flann_compute_cluster_centers(float *dataset, int rows, int cols, int clusters, float *result, struct FLANNParameters *flann_params)
Definition: flann.cpp:1296
unsigned int flann_size(flann_index_t index_ptr)
Definition: flann.cpp:623
int flann_find_nearest_neighbors_byte(unsigned char *dataset, int rows, int cols, unsigned char *testset, int trows, int *indices, float *dists, int nn, struct FLANNParameters *flann_params)
Definition: flann.cpp:939
int flann_find_nearest_neighbors_index(flann_index_t index_id, float *testset, int trows, int *indices, float *dists, int nn, struct FLANNParameters *flann_params)
Definition: flann.cpp:1014
flann_index_t flann_load_index_byte(char *filename, unsigned char *dataset, int rows, int cols)
Definition: flann.cpp:852
struct FLANNParameters DEFAULT_FLANN_PARAMETERS
Definition: flann.cpp:34
float * flann_get_point_float(flann_index_t index_ptr, unsigned int point_id)
Definition: flann.cpp:490
flann_index_t flann_build_index_byte(unsigned char *dataset, int rows, int cols, float *speedup, struct FLANNParameters *flann_params)
Definition: flann.cpp:281
int flann_remove_point_int(flann_index_t index_ptr, unsigned int point_id)
Definition: flann.cpp:434
int * flann_get_point_int(flann_index_t index_ptr, unsigned int point_id)
Definition: flann.cpp:505
int flann_find_nearest_neighbors_index_double(flann_index_t index_id, double *testset, int trows, int *indices, double *dists, int nn, struct FLANNParameters *flann_params)
Definition: flann.cpp:1024
void * FLANN_INDEX
Definition: flann.h:81
int flann_remove_point_byte(flann_index_t index_ptr, unsigned int point_id)
Definition: flann.cpp:429
int flann_radius_search_double(flann_index_t index_ptr, double *query, int *indices, double *dists, int max_nn, float radius, struct FLANNParameters *flann_params)
Definition: flann.cpp:1133
int flann_find_nearest_neighbors_int(int *dataset, int rows, int cols, int *testset, int trows, int *indices, float *dists, int nn, struct FLANNParameters *flann_params)
Definition: flann.cpp:944
flann_index_t flann_build_index_float(float *dataset, int rows, int cols, float *speedup, struct FLANNParameters *flann_params)
Definition: flann.cpp:271
int flann_radius_search_byte(flann_index_t index_ptr, unsigned char *query, int *indices, float *dists, int max_nn, float radius, struct FLANNParameters *flann_params)
Definition: flann.cpp:1144
void flann_log_verbosity(int level)
Definition: flann.cpp:179
int flann_compute_cluster_centers_int(int *dataset, int rows, int cols, int clusters, float *result, struct FLANNParameters *flann_params)
Definition: flann.cpp:1316
int flann_free_index(flann_index_t index_id, struct FLANNParameters *flann_params)
Definition: flann.cpp:1216
int flann_remove_point_double(flann_index_t index_ptr, unsigned int point_id)
Definition: flann.cpp:424
flann_index_t flann_load_index_int(char *filename, int *dataset, int rows, int cols)
Definition: flann.cpp:857
int flann_save_index(flann_index_t index_id, char *filename)
Definition: flann.cpp:766
unsigned int flann_size_byte(flann_index_t index_ptr)
Definition: flann.cpp:638
void flann_set_distance_type(enum flann_distance_t distance_type, int order)
Definition: flann.cpp:187
flann_index_t flann_load_index_float(char *filename, float *dataset, int rows, int cols)
Definition: flann.cpp:842
unsigned int flann_veclen_int(flann_index_t index_ptr)
Definition: flann.cpp:574
flann_index_t flann_build_index_int(int *dataset, int rows, int cols, float *speedup, struct FLANNParameters *flann_params)
Definition: flann.cpp:286
unsigned int flann_size_double(flann_index_t index_ptr)
Definition: flann.cpp:633
int flann_compute_cluster_centers_float(float *dataset, int rows, int cols, int clusters, float *result, struct FLANNParameters *flann_params)
Definition: flann.cpp:1301
int flann_find_nearest_neighbors_index_int(flann_index_t index_id, int *testset, int trows, int *indices, float *dists, int nn, struct FLANNParameters *flann_params)
Definition: flann.cpp:1034
int flann_add_points(flann_index_t index_ptr, float *points, int rows, int columns, float rebuild_threshold)
Definition: flann.cpp:342
flann_index_t flann_load_index_double(char *filename, double *dataset, int rows, int cols)
Definition: flann.cpp:847
flann_index_t flann_build_index_double(double *dataset, int rows, int cols, float *speedup, struct FLANNParameters *flann_params)
Definition: flann.cpp:276
int flann_add_points_byte(flann_index_t index_ptr, unsigned char *points, int rows, int columns, float rebuild_threshold)
Definition: flann.cpp:357
unsigned int flann_veclen_float(flann_index_t index_ptr)
Definition: flann.cpp:559
int flann_free_index_float(flann_index_t index_id, struct FLANNParameters *flann_params)
Definition: flann.cpp:1221
int flann_find_nearest_neighbors_double(double *dataset, int rows, int cols, double *testset, int trows, int *indices, double *dists, int nn, struct FLANNParameters *flann_params)
Definition: flann.cpp:934
int flann_radius_search_float(flann_index_t index_ptr, float *query, int *indices, float *dists, int max_nn, float radius, struct FLANNParameters *flann_params)
Definition: flann.cpp:1122
int flann_get_distance_order()
Definition: flann.cpp:198
int flann_add_points_float(flann_index_t index_ptr, float *points, int rows, int columns, float rebuild_threshold)
Definition: flann.cpp:347
int flann_remove_point(flann_index_t index_ptr, unsigned int point_id)
Definition: flann.cpp:414
unsigned int flann_veclen_byte(flann_index_t index_ptr)
Definition: flann.cpp:569
float target_precision
Definition: flann.h:65
unsigned int key_size_
Definition: flann.h:72
int leaf_max_size
Definition: flann.h:56
float sample_fraction
Definition: flann.h:68
float eps
Definition: flann.h:49
int branching
Definition: flann.h:59
float cb_index
Definition: flann.h:62
float build_weight
Definition: flann.h:66
float memory_weight
Definition: flann.h:67
int checks
Definition: flann.h:48
long random_seed
Definition: flann.h:77
unsigned int table_number_
Definition: flann.h:71
int max_neighbors
Definition: flann.h:51
int sorted
Definition: flann.h:50