29 #define FLANN_FIRST_MATCH
45 using namespace flann;
68 if (p->
algorithm == FLANN_INDEX_KDTREE_CUDA) {
121 flann_params->
algorithm = get_param<flann_algorithm_t>(
params,
"algorithm");
124 flann_params->
trees = get_param<int>(
params,
"trees");
160 flann_params->
log_level = get_param<flann_log_level_t>(
params,
"log_level");
203 template<
typename Distance>
207 typedef typename Distance::ElementType ElementType;
211 if (flann_params ==
NULL) {
212 throw FLANNException(
"The flann_params argument must be non-null");
222 *speedup = get_param<float>(
params,
"speedup");
224 flann_params->
eps = search_params.
eps;
230 catch (std::runtime_error& e) {
240 return __flann_build_index<L2<T> >(dataset, rows, cols, speedup, flann_params);
243 return __flann_build_index<L1<T> >(dataset, rows, cols, speedup, flann_params);
249 return __flann_build_index<HistIntersectionDistance<T> >(dataset, rows, cols, speedup, flann_params);
252 return __flann_build_index<HellingerDistance<T> >(dataset, rows, cols, speedup, flann_params);
255 return __flann_build_index<ChiSquareDistance<T> >(dataset, rows, cols, speedup, flann_params);
258 return __flann_build_index<KL_Divergence<T> >(dataset, rows, cols, speedup, flann_params);
261 Logger::error(
"Distance type unsupported in the C bindings, use the C++ bindings instead\n");
268 return _flann_build_index<float>(dataset, rows, cols, speedup, flann_params);
273 return _flann_build_index<float>(dataset, rows, cols, speedup, flann_params);
278 return _flann_build_index<double>(dataset, rows, cols, speedup, flann_params);
283 return _flann_build_index<unsigned char>(dataset, rows, cols, speedup, flann_params);
288 return _flann_build_index<int>(dataset, rows, cols, speedup, flann_params);
291 template <
typename Distance>
293 typename Distance::ElementType*
points,
int rows,
int columns,
294 float rebuild_threshold) {
295 typedef typename Distance::ElementType ElementType;
297 if (index_ptr==
NULL) {
305 catch (std::runtime_error& e) {
312 template <
typename T>
314 float rebuild_threshold) {
316 return __flann_add_points<L2<T> >(index_ptr,
points, rows, columns, rebuild_threshold);
319 return __flann_add_points<L1<T> >(index_ptr,
points, rows, columns, rebuild_threshold);
322 return __flann_add_points<MinkowskiDistance<T> >(index_ptr,
points, rows, columns, rebuild_threshold);
325 return __flann_add_points<HistIntersectionDistance<T> >(index_ptr,
points, rows, columns, rebuild_threshold);
328 return __flann_add_points<HellingerDistance<T> >(index_ptr,
points, rows, columns, rebuild_threshold);
331 return __flann_add_points<ChiSquareDistance<T> >(index_ptr,
points, rows, columns, rebuild_threshold);
334 return __flann_add_points<KL_Divergence<T> >(index_ptr,
points, rows, columns, rebuild_threshold);
337 Logger::error(
"Distance type unsupported in the C bindings, use the C++ bindings instead\n");
344 return _flann_add_points<float>(index_ptr,
points, rows, columns, rebuild_threshold);
349 return _flann_add_points<float>(index_ptr,
points, rows, columns, rebuild_threshold);
354 return _flann_add_points<double>(index_ptr,
points, rows, columns, rebuild_threshold);
359 return _flann_add_points<unsigned char>(index_ptr,
points, rows, columns, rebuild_threshold);
364 return _flann_add_points<int>(index_ptr,
points, rows, columns, rebuild_threshold);
367 template <
typename Distance>
369 size_t point_id(point_id_uint);
371 if (index_ptr==
NULL) {
378 catch (std::runtime_error& e) {
385 template <
typename T>
388 return __flann_remove_point<L2<T> >(index_ptr, point_id);
391 return __flann_remove_point<L1<T> >(index_ptr, point_id);
394 return __flann_remove_point<MinkowskiDistance<T> >(index_ptr, point_id);
397 return __flann_remove_point<HistIntersectionDistance<T> >(index_ptr, point_id);
400 return __flann_remove_point<HellingerDistance<T> >(index_ptr, point_id);
403 return __flann_remove_point<ChiSquareDistance<T> >(index_ptr, point_id);
406 return __flann_remove_point<KL_Divergence<T> >(index_ptr, point_id);
409 Logger::error(
"Distance type unsupported in the C bindings, use the C++ bindings instead\n");
416 return _flann_remove_point<float>(index_ptr, point_id);
421 return _flann_remove_point<float>(index_ptr, point_id);
426 return _flann_remove_point<double>(index_ptr, point_id);
431 return _flann_remove_point<unsigned char>(index_ptr, point_id);
436 return _flann_remove_point<int>(index_ptr, point_id);
439 template <
typename Distance>
441 unsigned int point_id_uint) {
442 size_t point_id(point_id_uint);
444 if (index_ptr==
NULL) {
450 catch (std::runtime_error& e) {
456 template <
typename T>
459 return __flann_get_point<L2<T> >(index_ptr, point_id);
462 return __flann_get_point<L1<T> >(index_ptr, point_id);
465 return __flann_get_point<MinkowskiDistance<T> >(index_ptr, point_id);
468 return __flann_get_point<HistIntersectionDistance<T> >(index_ptr, point_id);
471 return __flann_get_point<HellingerDistance<T> >(index_ptr, point_id);
474 return __flann_get_point<ChiSquareDistance<T> >(index_ptr, point_id);
477 return __flann_get_point<KL_Divergence<T> >(index_ptr, point_id);
480 Logger::error(
"Distance type unsupported in the C bindings, use the C++ bindings instead\n");
487 return _flann_get_point<float>(index_ptr, point_id);
492 return _flann_get_point<float>(index_ptr, point_id);
497 return _flann_get_point<double>(index_ptr, point_id);
502 return _flann_get_point<unsigned char>(index_ptr, point_id);
507 return _flann_get_point<int>(index_ptr, point_id);
510 template <
typename Distance>
513 if (index_ptr==
NULL) {
519 catch (std::runtime_error& e) {
525 template <
typename T>
528 return __flann_veclen<L2<T> >(index_ptr);
531 return __flann_veclen<L1<T> >(index_ptr);
534 return __flann_veclen<MinkowskiDistance<T> >(index_ptr);
537 return __flann_veclen<HistIntersectionDistance<T> >(index_ptr);
540 return __flann_veclen<HellingerDistance<T> >(index_ptr);
543 return __flann_veclen<ChiSquareDistance<T> >(index_ptr);
546 return __flann_veclen<KL_Divergence<T> >(index_ptr);
549 Logger::error(
"Distance type unsupported in the C bindings, use the C++ bindings instead\n");
556 return _flann_veclen<float>(index_ptr);
561 return _flann_veclen<float>(index_ptr);
566 return _flann_veclen<double>(index_ptr);
571 return _flann_veclen<unsigned char>(index_ptr);
576 return _flann_veclen<int>(index_ptr);
579 template <
typename Distance>
582 if (index_ptr==
NULL) {
586 return index->
size();
588 catch (std::runtime_error& e) {
594 template <
typename T>
597 return __flann_size<L2<T> >(index_ptr);
600 return __flann_size<L1<T> >(index_ptr);
603 return __flann_size<MinkowskiDistance<T> >(index_ptr);
606 return __flann_size<HistIntersectionDistance<T> >(index_ptr);
609 return __flann_size<HellingerDistance<T> >(index_ptr);
612 return __flann_size<ChiSquareDistance<T> >(index_ptr);
615 return __flann_size<KL_Divergence<T> >(index_ptr);
618 Logger::error(
"Distance type unsupported in the C bindings, use the C++ bindings instead\n");
625 return _flann_size<float>(index_ptr);
630 return _flann_size<float>(index_ptr);
635 return _flann_size<double>(index_ptr);
640 return _flann_size<unsigned char>(index_ptr);
645 return _flann_size<int>(index_ptr);
648 template <
typename Distance>
651 if (index_ptr==
NULL) {
657 catch (std::runtime_error& e) {
663 template <
typename T>
666 return __flann_used_memory<L2<T> >(index_ptr);
669 return __flann_used_memory<L1<T> >(index_ptr);
672 return __flann_used_memory<MinkowskiDistance<T> >(index_ptr);
675 return __flann_used_memory<HistIntersectionDistance<T> >(index_ptr);
678 return __flann_used_memory<HellingerDistance<T> >(index_ptr);
681 return __flann_used_memory<ChiSquareDistance<T> >(index_ptr);
684 return __flann_used_memory<KL_Divergence<T> >(index_ptr);
687 Logger::error(
"Distance type unsupported in the C bindings, use the C++ bindings instead\n");
694 return _flann_used_memory<float>(index_ptr);
699 return _flann_used_memory<float>(index_ptr);
704 return _flann_used_memory<double>(index_ptr);
709 return _flann_used_memory<unsigned char>(index_ptr);
714 return _flann_used_memory<int>(index_ptr);
717 template<
typename Distance>
721 if (index_ptr==
NULL) {
730 catch (std::runtime_error& e) {
740 return __flann_save_index<L2<T> >(index_ptr,
filename);
743 return __flann_save_index<L1<T> >(index_ptr,
filename);
746 return __flann_save_index<MinkowskiDistance<T> >(index_ptr,
filename);
749 return __flann_save_index<HistIntersectionDistance<T> >(index_ptr,
filename);
752 return __flann_save_index<HellingerDistance<T> >(index_ptr,
filename);
755 return __flann_save_index<ChiSquareDistance<T> >(index_ptr,
filename);
758 return __flann_save_index<KL_Divergence<T> >(index_ptr,
filename);
761 Logger::error(
"Distance type unsupported in the C bindings, use the C++ bindings instead\n");
768 return _flann_save_index<float>(index_ptr,
filename);
773 return _flann_save_index<float>(index_ptr,
filename);
778 return _flann_save_index<double>(index_ptr,
filename);
783 return _flann_save_index<unsigned char>(index_ptr,
filename);
788 return _flann_save_index<int>(index_ptr,
filename);
792 template<
typename Distance>
800 catch (std::runtime_error& e) {
810 return __flann_load_index<L2<T> >(
filename, dataset, rows, cols);
813 return __flann_load_index<L1<T> >(
filename, dataset, rows, cols);
819 return __flann_load_index<HistIntersectionDistance<T> >(
filename, dataset, rows, cols);
822 return __flann_load_index<HellingerDistance<T> >(
filename, dataset, rows, cols);
825 return __flann_load_index<ChiSquareDistance<T> >(
filename, dataset, rows, cols);
828 return __flann_load_index<KL_Divergence<T> >(
filename, dataset, rows, cols);
831 Logger::error(
"Distance type unsupported in the C bindings, use the C++ bindings instead\n");
839 return _flann_load_index<float>(
filename, dataset, rows, cols);
844 return _flann_load_index<float>(
filename, dataset, rows, cols);
849 return _flann_load_index<double>(
filename, dataset, rows, cols);
854 return _flann_load_index<unsigned char>(
filename, dataset, rows, cols);
859 return _flann_load_index<int>(
filename, dataset, rows, cols);
864 template<
typename Distance>
868 typedef typename Distance::ElementType ElementType;
869 typedef typename Distance::ResultType DistanceType;
881 m_dists, nn, search_params );
885 catch (std::runtime_error& e) {
893 template<
typename T,
typename R>
898 return __flann_find_nearest_neighbors<L2<T> >(dataset, rows, cols, testset, tcount,
result, dists, nn, flann_params);
901 return __flann_find_nearest_neighbors<L1<T> >(dataset, rows, cols, testset, tcount,
result, dists, nn, flann_params);
907 return __flann_find_nearest_neighbors<HistIntersectionDistance<T> >(dataset, rows, cols, testset, tcount,
result, dists, nn, flann_params);
910 return __flann_find_nearest_neighbors<HellingerDistance<T> >(dataset, rows, cols, testset, tcount,
result, dists, nn, flann_params);
913 return __flann_find_nearest_neighbors<ChiSquareDistance<T> >(dataset, rows, cols, testset, tcount,
result, dists, nn, flann_params);
916 return __flann_find_nearest_neighbors<KL_Divergence<T> >(dataset, rows, cols, testset, tcount,
result, dists, nn, flann_params);
919 Logger::error(
"Distance type unsupported in the C bindings, use the C++ bindings instead\n");
950 template<
typename Distance>
954 typedef typename Distance::ElementType ElementType;
955 typedef typename Distance::ResultType DistanceType;
959 if (index_ptr==
NULL) {
970 m_dists, nn, search_params );
974 catch (std::runtime_error& e) {
982 template<
typename T,
typename R>
987 return __flann_find_nearest_neighbors_index<L2<T> >(index_ptr, testset, tcount,
result, dists, nn, flann_params);
990 return __flann_find_nearest_neighbors_index<L1<T> >(index_ptr, testset, tcount,
result, dists, nn, flann_params);
993 return __flann_find_nearest_neighbors_index<MinkowskiDistance<T> >(index_ptr, testset, tcount,
result, dists, nn, flann_params);
996 return __flann_find_nearest_neighbors_index<HistIntersectionDistance<T> >(index_ptr, testset, tcount,
result, dists, nn, flann_params);
999 return __flann_find_nearest_neighbors_index<HellingerDistance<T> >(index_ptr, testset, tcount,
result, dists, nn, flann_params);
1002 return __flann_find_nearest_neighbors_index<ChiSquareDistance<T> >(index_ptr, testset, tcount,
result, dists, nn, flann_params);
1005 return __flann_find_nearest_neighbors_index<KL_Divergence<T> >(index_ptr, testset, tcount,
result, dists, nn, flann_params);
1008 Logger::error(
"Distance type unsupported in the C bindings, use the C++ bindings instead\n");
1040 template<
typename Distance>
1042 typename Distance::ElementType* query,
1044 typename Distance::ResultType* dists,
1049 typedef typename Distance::ElementType ElementType;
1050 typedef typename Distance::ResultType DistanceType;
1054 if (index_ptr==
NULL) {
1064 m_dists, radius, search_params );
1069 catch (std::runtime_error& e) {
1075 template<
typename T,
typename R>
1085 return __flann_radius_search<L2<T> >(index_ptr, query, indices, dists, max_nn, radius, flann_params);
1088 return __flann_radius_search<L1<T> >(index_ptr, query, indices, dists, max_nn, radius, flann_params);
1091 return __flann_radius_search<MinkowskiDistance<T> >(index_ptr, query, indices, dists, max_nn, radius, flann_params);
1094 return __flann_radius_search<HistIntersectionDistance<T> >(index_ptr, query, indices, dists, max_nn, radius, flann_params);
1097 return __flann_radius_search<HellingerDistance<T> >(index_ptr, query, indices, dists, max_nn, radius, flann_params);
1100 return __flann_radius_search<ChiSquareDistance<T> >(index_ptr, query, indices, dists, max_nn, radius, flann_params);
1103 return __flann_radius_search<KL_Divergence<T> >(index_ptr, query, indices, dists, max_nn, radius, flann_params);
1106 Logger::error(
"Distance type unsupported in the C bindings, use the C++ bindings instead\n");
1145 unsigned char* query,
1167 template<
typename Distance>
1172 if (index_ptr==
NULL) {
1180 catch (std::runtime_error& e) {
1186 template<
typename T>
1190 return __flann_free_index<L2<T> >(index_ptr, flann_params);
1193 return __flann_free_index<L1<T> >(index_ptr, flann_params);
1196 return __flann_free_index<MinkowskiDistance<T> >(index_ptr, flann_params);
1199 return __flann_free_index<HistIntersectionDistance<T> >(index_ptr, flann_params);
1202 return __flann_free_index<HellingerDistance<T> >(index_ptr, flann_params);
1205 return __flann_free_index<ChiSquareDistance<T> >(index_ptr, flann_params);
1208 return __flann_free_index<KL_Divergence<T> >(index_ptr, flann_params);
1211 Logger::error(
"Distance type unsupported in the C bindings, use the C++ bindings instead\n");
1218 return _flann_free_index<float>(index_ptr, flann_params);
1223 return _flann_free_index<float>(index_ptr, flann_params);
1228 return _flann_free_index<double>(index_ptr, flann_params);
1233 return _flann_free_index<unsigned char>(index_ptr, flann_params);
1238 return _flann_free_index<int>(index_ptr, flann_params);
1242 template<
typename Distance>
1246 typedef typename Distance::ElementType ElementType;
1247 typedef typename Distance::ResultType DistanceType;
1255 int clusterNum = hierarchicalClustering<Distance>(inputData, centers,
params, d);
1259 catch (std::runtime_error& e) {
1266 template<
typename T,
typename R>
1270 return __flann_compute_cluster_centers<L2<T> >(dataset, rows, cols, clusters,
result, flann_params);
1273 return __flann_compute_cluster_centers<L1<T> >(dataset, rows, cols, clusters,
result, flann_params);
1279 return __flann_compute_cluster_centers<HistIntersectionDistance<T> >(dataset, rows, cols, clusters,
result, flann_params);
1282 return __flann_compute_cluster_centers<HellingerDistance<T> >(dataset, rows, cols, clusters,
result, flann_params);
1285 return __flann_compute_cluster_centers<ChiSquareDistance<T> >(dataset, rows, cols, clusters,
result, flann_params);
1288 return __flann_compute_cluster_centers<KL_Divergence<T> >(dataset, rows, cols, clusters,
result, flann_params);
1291 Logger::error(
"Distance type unsupported in the C bindings, use the C++ bindings instead\n");
double Distance(const Point3D< Real > &p1, const Point3D< Real > &p2)
cmdLineReadable * params[]
IndexParams getParameters() const
int knnSearch(const Matrix< ElementType > &queries, Matrix< size_t > &indices, Matrix< DistanceType > &dists, size_t knn, const SearchParams ¶ms) const
Perform k-nearest neighbor search.
int radiusSearch(const Matrix< ElementType > &queries, Matrix< size_t > &indices, Matrix< DistanceType > &dists, float radius, const SearchParams ¶ms) const
Perform radius search.
void save(std::string filename)
void addPoints(const Matrix< ElementType > &points, float rebuild_threshold=2)
ElementType * getPoint(size_t point_id)
void removePoint(size_t point_id)
static int error(const char *fmt,...)
@ FLANN_DIST_KULLBACK_LEIBLER
@ FLANN_DIST_HIST_INTERSECT
@ FLANN_INDEX_KDTREE_SINGLE
@ FLANN_INDEX_HIERARCHICAL
int _flann_add_points(flann_index_t index_ptr, T *points, int rows, int columns, float rebuild_threshold)
flann_index_t __flann_load_index(char *filename, typename Distance::ElementType *dataset, int rows, int cols, Distance d=Distance())
int flann_save_index_double(flann_index_t index_ptr, char *filename)
int flann_find_nearest_neighbors_index_byte(flann_index_t index_ptr, unsigned char *testset, int tcount, int *result, float *dists, int nn, FLANNParameters *flann_params)
int flann_add_points_int(flann_index_t index_ptr, int *points, int rows, int columns, float rebuild_threshold)
int __flann_find_nearest_neighbors(typename Distance::ElementType *dataset, int rows, int cols, typename Distance::ElementType *testset, int tcount, int *result, typename Distance::ResultType *dists, int nn, FLANNParameters *flann_params, Distance d=Distance())
flann_distance_t flann_get_distance_type()
int __flann_save_index(flann_index_t index_ptr, char *filename)
unsigned int flann_veclen_double(flann_index_t index_ptr)
int flann_compute_cluster_centers_float(float *dataset, int rows, int cols, int clusters, float *result, FLANNParameters *flann_params)
int flann_save_index_float(flann_index_t index_ptr, char *filename)
int flann_remove_point_float(flann_index_t index_ptr, unsigned int point_id)
int _flann_find_nearest_neighbors(T *dataset, int rows, int cols, T *testset, int tcount, int *result, R *dists, int nn, FLANNParameters *flann_params)
int flann_compute_cluster_centers_double(double *dataset, int rows, int cols, int clusters, double *result, FLANNParameters *flann_params)
unsigned int __flann_veclen(flann_index_t index_ptr)
int __flann_remove_point(flann_index_t index_ptr, unsigned int point_id_uint)
int flann_add_points_double(flann_index_t index_ptr, double *points, int rows, int columns, float rebuild_threshold)
int flann_used_memory_byte(flann_index_t index_ptr)
int flann_free_index_byte(flann_index_t index_ptr, FLANNParameters *flann_params)
int flann_used_memory(flann_index_t index_ptr)
int flann_save_index_int(flann_index_t index_ptr, char *filename)
int __flann_free_index(flann_index_t index_ptr, FLANNParameters *flann_params)
float * flann_get_point(flann_index_t index_ptr, unsigned int point_id)
unsigned int flann_size_float(flann_index_t index_ptr)
flann_index_t _flann_load_index(char *filename, T *dataset, int rows, int cols)
flann_index_t flann_build_index_float(float *dataset, int rows, int cols, float *speedup, FLANNParameters *flann_params)
unsigned int flann_veclen(flann_index_t index_ptr)
unsigned char * flann_get_point_byte(flann_index_t index_ptr, unsigned int point_id)
flann_index_t flann_load_index(char *filename, float *dataset, int rows, int cols)
void flann_set_distance_type(flann_distance_t distance_type, int order)
int _flann_save_index(flann_index_t index_ptr, char *filename)
double * flann_get_point_double(flann_index_t index_ptr, unsigned int point_id)
int flann_find_nearest_neighbors(float *dataset, int rows, int cols, float *testset, int tcount, int *result, float *dists, int nn, FLANNParameters *flann_params)
int flann_save_index(flann_index_t index_ptr, char *filename)
int flann_find_nearest_neighbors_byte(unsigned char *dataset, int rows, int cols, unsigned char *testset, int tcount, int *result, float *dists, int nn, FLANNParameters *flann_params)
int flann_free_index_double(flann_index_t index_ptr, FLANNParameters *flann_params)
int flann_find_nearest_neighbors_index_float(flann_index_t index_ptr, float *testset, int tcount, int *result, float *dists, int nn, FLANNParameters *flann_params)
int flann_save_index_byte(flann_index_t index_ptr, char *filename)
int flann_used_memory_int(flann_index_t index_ptr)
int flann_used_memory_float(flann_index_t index_ptr)
unsigned int flann_size_int(flann_index_t index_ptr)
int flann_compute_cluster_centers(float *dataset, int rows, int cols, int clusters, float *result, FLANNParameters *flann_params)
int flann_radius_search_byte(flann_index_t index_ptr, unsigned char *query, int *indices, float *dists, int max_nn, float radius, FLANNParameters *flann_params)
int flann_used_memory_double(flann_index_t index_ptr)
void update_flann_parameters(const IndexParams ¶ms, FLANNParameters *flann_params)
int flann_free_index_int(flann_index_t index_ptr, FLANNParameters *flann_params)
int _flann_radius_search(flann_index_t index_ptr, T *query, int *indices, R *dists, int max_nn, float radius, FLANNParameters *flann_params)
unsigned int flann_size(flann_index_t index_ptr)
int flann_compute_cluster_centers_int(int *dataset, int rows, int cols, int clusters, float *result, FLANNParameters *flann_params)
flann_index_t flann_load_index_byte(char *filename, unsigned char *dataset, int rows, int cols)
T * _flann_get_point(flann_index_t index_ptr, unsigned int point_id)
unsigned int __flann_size(flann_index_t index_ptr)
struct FLANNParameters DEFAULT_FLANN_PARAMETERS
float * flann_get_point_float(flann_index_t index_ptr, unsigned int point_id)
int flann_remove_point_int(flann_index_t index_ptr, unsigned int point_id)
int * flann_get_point_int(flann_index_t index_ptr, unsigned int point_id)
int flann_free_index_float(flann_index_t index_ptr, FLANNParameters *flann_params)
void init_flann_parameters(FLANNParameters *p)
int __flann_used_memory(flann_index_t index_ptr)
int flann_remove_point_byte(flann_index_t index_ptr, unsigned int point_id)
int flann_radius_search_double(flann_index_t index_ptr, double *query, int *indices, double *dists, int max_nn, float radius, FLANNParameters *flann_params)
int _flann_find_nearest_neighbors_index(flann_index_t index_ptr, T *testset, int tcount, int *result, R *dists, int nn, FLANNParameters *flann_params)
flann::IndexParams create_parameters(FLANNParameters *p)
int __flann_add_points(flann_index_t index_ptr, typename Distance::ElementType *points, int rows, int columns, float rebuild_threshold)
flann_index_t __flann_build_index(typename Distance::ElementType *dataset, int rows, int cols, float *speedup, FLANNParameters *flann_params, Distance d=Distance())
int __flann_find_nearest_neighbors_index(flann_index_t index_ptr, typename Distance::ElementType *testset, int tcount, int *result, typename Distance::ResultType *dists, int nn, FLANNParameters *flann_params)
int flann_find_nearest_neighbors_int(int *dataset, int rows, int cols, int *testset, int tcount, int *result, float *dists, int nn, FLANNParameters *flann_params)
int flann_find_nearest_neighbors_index_double(flann_index_t index_ptr, double *testset, int tcount, int *result, double *dists, int nn, FLANNParameters *flann_params)
void flann_log_verbosity(int level)
int flann_radius_search(flann_index_t index_ptr, float *query, int *indices, float *dists, int max_nn, float radius, FLANNParameters *flann_params)
int flann_free_index(flann_index_t index_ptr, FLANNParameters *flann_params)
flann_index_t _flann_build_index(T *dataset, int rows, int cols, float *speedup, FLANNParameters *flann_params)
int flann_remove_point_double(flann_index_t index_ptr, unsigned int point_id)
flann_index_t flann_load_index_int(char *filename, int *dataset, int rows, int cols)
flann_distance_t flann_distance_type
unsigned int flann_size_byte(flann_index_t index_ptr)
flann_index_t flann_load_index_float(char *filename, float *dataset, int rows, int cols)
Distance::ElementType * __flann_get_point(flann_index_t index_ptr, unsigned int point_id_uint)
int flann_find_nearest_neighbors_index_int(flann_index_t index_ptr, int *testset, int tcount, int *result, float *dists, int nn, FLANNParameters *flann_params)
unsigned int flann_veclen_int(flann_index_t index_ptr)
int _flann_used_memory(flann_index_t index_ptr)
unsigned int flann_size_double(flann_index_t index_ptr)
flann::SearchParams create_search_params(FLANNParameters *p)
int _flann_remove_point(flann_index_t index_ptr, unsigned int point_id)
int __flann_compute_cluster_centers(typename Distance::ElementType *dataset, int rows, int cols, int clusters, typename Distance::ResultType *result, FLANNParameters *flann_params, Distance d=Distance())
flann_index_t flann_build_index_byte(unsigned char *dataset, int rows, int cols, float *speedup, FLANNParameters *flann_params)
flann_index_t flann_build_index_int(int *dataset, int rows, int cols, float *speedup, FLANNParameters *flann_params)
int flann_add_points(flann_index_t index_ptr, float *points, int rows, int columns, float rebuild_threshold)
int flann_find_nearest_neighbors_index(flann_index_t index_ptr, float *testset, int tcount, int *result, float *dists, int nn, FLANNParameters *flann_params)
int _flann_free_index(flann_index_t index_ptr, FLANNParameters *flann_params)
int __flann_radius_search(flann_index_t index_ptr, typename Distance::ElementType *query, int *indices, typename Distance::ResultType *dists, int max_nn, float radius, FLANNParameters *flann_params)
int flann_find_nearest_neighbors_float(float *dataset, int rows, int cols, float *testset, int tcount, int *result, float *dists, int nn, FLANNParameters *flann_params)
int flann_radius_search_int(flann_index_t index_ptr, int *query, int *indices, float *dists, int max_nn, float radius, FLANNParameters *flann_params)
flann_index_t flann_load_index_double(char *filename, double *dataset, int rows, int cols)
int flann_add_points_byte(flann_index_t index_ptr, unsigned char *points, int rows, int columns, float rebuild_threshold)
unsigned int _flann_veclen(flann_index_t index_ptr)
int _flann_compute_cluster_centers(T *dataset, int rows, int cols, int clusters, R *result, FLANNParameters *flann_params)
unsigned int _flann_size(flann_index_t index_ptr)
int flann_compute_cluster_centers_byte(unsigned char *dataset, int rows, int cols, int clusters, float *result, FLANNParameters *flann_params)
unsigned int flann_veclen_float(flann_index_t index_ptr)
int flann_find_nearest_neighbors_double(double *dataset, int rows, int cols, double *testset, int tcount, int *result, double *dists, int nn, FLANNParameters *flann_params)
flann_index_t flann_build_index(float *dataset, int rows, int cols, float *speedup, FLANNParameters *flann_params)
int flann_radius_search_float(flann_index_t index_ptr, float *query, int *indices, float *dists, int max_nn, float radius, FLANNParameters *flann_params)
int flann_get_distance_order()
int flann_add_points_float(flann_index_t index_ptr, float *points, int rows, int columns, float rebuild_threshold)
int flann_remove_point(flann_index_t index_ptr, unsigned int point_id)
flann_index_t flann_build_index_double(double *dataset, int rows, int cols, float *speedup, FLANNParameters *flann_params)
unsigned int flann_veclen_byte(flann_index_t index_ptr)
void seed_random(unsigned int seed)
bool has_param(const IndexParams ¶ms, std::string name)
void log_verbosity(int level)
std::map< std::string, any > IndexParams
enum flann_centers_init_t centers_init
enum flann_log_level_t log_level
enum flann_algorithm_t algorithm
unsigned int multi_probe_level_
unsigned int table_number_