Commit 53e6bab6 authored by Marius Muja's avatar Marius Muja

Prefixed constants in flann with FLANN_ to prevent clashes with constants from…

Prefixed constants in flann with FLANN_ to prevent clashes with constants from other includes, closes bug #890
parent 0725a31e
...@@ -49,19 +49,19 @@ NNIndex<T>* create_index_by_type(const Matrix<T>& dataset, const IndexParams& pa ...@@ -49,19 +49,19 @@ NNIndex<T>* create_index_by_type(const Matrix<T>& dataset, const IndexParams& pa
NNIndex<T>* nnIndex; NNIndex<T>* nnIndex;
switch (index_type) { switch (index_type) {
case LINEAR: case FLANN_INDEX_LINEAR:
nnIndex = new LinearIndex<T>(dataset, (const LinearIndexParams&)params); nnIndex = new LinearIndex<T>(dataset, (const LinearIndexParams&)params);
break; break;
case KDTREE: case FLANN_INDEX_KDTREE:
nnIndex = new KDTreeIndex<T>(dataset, (const KDTreeIndexParams&)params); nnIndex = new KDTreeIndex<T>(dataset, (const KDTreeIndexParams&)params);
break; break;
case KMEANS: case FLANN_INDEX_KMEANS:
nnIndex = new KMeansIndex<T>(dataset, (const KMeansIndexParams&)params); nnIndex = new KMeansIndex<T>(dataset, (const KMeansIndexParams&)params);
break; break;
case COMPOSITE: case FLANN_INDEX_COMPOSITE:
nnIndex = new CompositeIndex<T>(dataset, (const CompositeIndexParams&) params); nnIndex = new CompositeIndex<T>(dataset, (const CompositeIndexParams&) params);
break; break;
case AUTOTUNED: case FLANN_INDEX_AUTOTUNED:
nnIndex = new AutotunedIndex<T>(dataset, (const AutotunedIndexParams&) params); nnIndex = new AutotunedIndex<T>(dataset, (const AutotunedIndexParams&) params);
break; break;
default: default:
......
...@@ -44,7 +44,7 @@ namespace cvflann ...@@ -44,7 +44,7 @@ namespace cvflann
struct AutotunedIndexParams : public IndexParams { struct AutotunedIndexParams : public IndexParams {
AutotunedIndexParams( float target_precision_ = 0.8, float build_weight_ = 0.01, AutotunedIndexParams( float target_precision_ = 0.8, float build_weight_ = 0.01,
float memory_weight_ = 0, float sample_fraction_ = 0.1) : float memory_weight_ = 0, float sample_fraction_ = 0.1) :
IndexParams(AUTOTUNED), IndexParams(FLANN_INDEX_AUTOTUNED),
target_precision(target_precision_), target_precision(target_precision_),
build_weight(build_weight_), build_weight(build_weight_),
memory_weight(memory_weight_), memory_weight(memory_weight_),
...@@ -55,8 +55,6 @@ struct AutotunedIndexParams : public IndexParams { ...@@ -55,8 +55,6 @@ struct AutotunedIndexParams : public IndexParams {
float memory_weight; // index memory weighting factor float memory_weight; // index memory weighting factor
float sample_fraction; // what fraction of the dataset to use for autotuning float sample_fraction; // what fraction of the dataset to use for autotuning
flann_algorithm_t getIndexType() const { return algorithm; }
void print() const void print() const
{ {
logger().info("Index type: %d\n",(int)algorithm); logger().info("Index type: %d\n",(int)algorithm);
...@@ -123,13 +121,13 @@ public: ...@@ -123,13 +121,13 @@ public:
logger().info("----------------------------------------------------\n"); logger().info("----------------------------------------------------\n");
flann_algorithm_t index_type = bestParams->getIndexType(); flann_algorithm_t index_type = bestParams->getIndexType();
switch (index_type) { switch (index_type) {
case LINEAR: case FLANN_INDEX_LINEAR:
bestIndex = new LinearIndex<ELEM_TYPE>(dataset, (const LinearIndexParams&)*bestParams); bestIndex = new LinearIndex<ELEM_TYPE>(dataset, (const LinearIndexParams&)*bestParams);
break; break;
case KDTREE: case FLANN_INDEX_KDTREE:
bestIndex = new KDTreeIndex<ELEM_TYPE>(dataset, (const KDTreeIndexParams&)*bestParams); bestIndex = new KDTreeIndex<ELEM_TYPE>(dataset, (const KDTreeIndexParams&)*bestParams);
break; break;
case KMEANS: case FLANN_INDEX_KMEANS:
bestIndex = new KMeansIndex<ELEM_TYPE>(dataset, (const KMeansIndexParams&)*bestParams); bestIndex = new KMeansIndex<ELEM_TYPE>(dataset, (const KMeansIndexParams&)*bestParams);
break; break;
default: default:
...@@ -211,7 +209,7 @@ public: ...@@ -211,7 +209,7 @@ public:
*/ */
virtual flann_algorithm_t getType() const virtual flann_algorithm_t getType() const
{ {
return AUTOTUNED; return FLANN_INDEX_AUTOTUNED;
} }
private: private:
...@@ -347,7 +345,7 @@ private: ...@@ -347,7 +345,7 @@ private:
for (size_t i=0; i<ARRAY_LEN(maxIterations); ++i) { for (size_t i=0; i<ARRAY_LEN(maxIterations); ++i) {
for (size_t j=0; j<ARRAY_LEN(branchingFactors); ++j) { for (size_t j=0; j<ARRAY_LEN(branchingFactors); ++j) {
kmeansCosts[cnt].second.centers_init = CENTERS_RANDOM; kmeansCosts[cnt].second.centers_init = FLANN_CENTERS_RANDOM;
kmeansCosts[cnt].second.iterations = maxIterations[i]; kmeansCosts[cnt].second.iterations = maxIterations[i];
kmeansCosts[cnt].second.branching = branchingFactors[j]; kmeansCosts[cnt].second.branching = branchingFactors[j];
...@@ -569,7 +567,7 @@ private: ...@@ -569,7 +567,7 @@ private:
float searchTime; float searchTime;
float cb_index; float cb_index;
if (bestIndex->getType() == KMEANS) { if (bestIndex->getType() == FLANN_INDEX_KMEANS) {
logger().info("KMeans algorithm, estimating cluster border factor\n"); logger().info("KMeans algorithm, estimating cluster border factor\n");
KMeansIndex<ELEM_TYPE>* kmeans = (KMeansIndex<ELEM_TYPE>*)bestIndex; KMeansIndex<ELEM_TYPE>* kmeans = (KMeansIndex<ELEM_TYPE>*)bestIndex;
float bestSearchTime = -1; float bestSearchTime = -1;
......
...@@ -40,8 +40,8 @@ namespace cvflann ...@@ -40,8 +40,8 @@ namespace cvflann
struct CompositeIndexParams : public IndexParams { struct CompositeIndexParams : public IndexParams {
CompositeIndexParams(int trees_ = 4, int branching_ = 32, int iterations_ = 11, CompositeIndexParams(int trees_ = 4, int branching_ = 32, int iterations_ = 11,
flann_centers_init_t centers_init_ = CENTERS_RANDOM, float cb_index_ = 0.2 ) : flann_centers_init_t centers_init_ = FLANN_CENTERS_RANDOM, float cb_index_ = 0.2 ) :
IndexParams(COMPOSITE), IndexParams(FLANN_INDEX_COMPOSITE),
trees(trees_), trees(trees_),
branching(branching_), branching(branching_),
iterations(iterations_), iterations(iterations_),
...@@ -54,8 +54,6 @@ struct CompositeIndexParams : public IndexParams { ...@@ -54,8 +54,6 @@ struct CompositeIndexParams : public IndexParams {
flann_centers_init_t centers_init; // algorithm used for picking the initial cluster centers for kmeans tree flann_centers_init_t centers_init; // algorithm used for picking the initial cluster centers for kmeans tree
float cb_index; // cluster boundary index. Used when searching the kmeans tree float cb_index; // cluster boundary index. Used when searching the kmeans tree
flann_algorithm_t getIndexType() const { return algorithm; }
void print() const void print() const
{ {
logger().info("Index type: %d\n",(int)algorithm); logger().info("Index type: %d\n",(int)algorithm);
...@@ -102,7 +100,7 @@ public: ...@@ -102,7 +100,7 @@ public:
flann_algorithm_t getType() const flann_algorithm_t getType() const
{ {
return COMPOSITE; return FLANN_INDEX_COMPOSITE;
} }
......
...@@ -304,21 +304,21 @@ template <typename Iterator1, typename Iterator2> ...@@ -304,21 +304,21 @@ template <typename Iterator1, typename Iterator2>
double custom_dist(Iterator1 first1, Iterator1 last1, Iterator2 first2, double acc = 0) double custom_dist(Iterator1 first1, Iterator1 last1, Iterator2 first2, double acc = 0)
{ {
switch (flann_distance_type()) { switch (flann_distance_type()) {
case EUCLIDEAN: case FLANN_DIST_EUCLIDEAN:
return euclidean_dist(first1, last1, first2, acc); return euclidean_dist(first1, last1, first2, acc);
case MANHATTAN: case FLANN_DIST_MANHATTAN:
return manhattan_dist(first1, last1, first2, acc); return manhattan_dist(first1, last1, first2, acc);
case MINKOWSKI: case FLANN_DIST_MINKOWSKI:
return minkowski_dist(first1, last1, first2, acc); return minkowski_dist(first1, last1, first2, acc);
case MAX_DIST: case FLANN_DIST_MAX:
return max_dist(first1, last1, first2, acc); return max_dist(first1, last1, first2, acc);
case HIK: case FLANN_DIST_HIST_INTERSECT:
return hist_intersection_dist_sq(first1, last1, first2, acc); return hist_intersection_dist_sq(first1, last1, first2, acc);
case HELLINGER: case FLANN_DIST_HELLINGER:
return hellinger_dist(first1, last1, first2, acc); return hellinger_dist(first1, last1, first2, acc);
case CS: case FLANN_DIST_CS:
return chi_square_dist(first1, last1, first2, acc); return chi_square_dist(first1, last1, first2, acc);
case KL: case FLANN_DIST_KL:
return kl_divergence(first1, last1, first2, acc); return kl_divergence(first1, last1, first2, acc);
default: default:
return euclidean_dist(first1, last1, first2, acc); return euclidean_dist(first1, last1, first2, acc);
......
...@@ -67,12 +67,10 @@ CV_EXPORTS void set_distance_type(flann_distance_t distance_type, int order); ...@@ -67,12 +67,10 @@ CV_EXPORTS void set_distance_type(flann_distance_t distance_type, int order);
struct CV_EXPORTS SavedIndexParams : public IndexParams { struct CV_EXPORTS SavedIndexParams : public IndexParams {
SavedIndexParams(std::string filename_) : IndexParams(SAVED), filename(filename_) {} SavedIndexParams(std::string filename_) : IndexParams(FLANN_INDEX_SAVED), filename(filename_) {}
std::string filename; // filename of the stored index std::string filename; // filename of the stored index
flann_algorithm_t getIndexType() const { return algorithm; }
void print() const void print() const
{ {
logger().info("Index type: %d\n",(int)algorithm); logger().info("Index type: %d\n",(int)algorithm);
...@@ -138,7 +136,7 @@ Index<T>::Index(const Matrix<T>& dataset, const IndexParams& params) ...@@ -138,7 +136,7 @@ Index<T>::Index(const Matrix<T>& dataset, const IndexParams& params)
flann_algorithm_t index_type = params.getIndexType(); flann_algorithm_t index_type = params.getIndexType();
built = false; built = false;
if (index_type==SAVED) { if (index_type==FLANN_INDEX_SAVED) {
nnIndex = load_saved_index(dataset, ((const SavedIndexParams&)params).filename); nnIndex = load_saved_index(dataset, ((const SavedIndexParams&)params).filename);
built = true; built = true;
} }
......
...@@ -44,18 +44,18 @@ namespace cvflann { ...@@ -44,18 +44,18 @@ namespace cvflann {
/* Nearest neighbour index algorithms */ /* Nearest neighbour index algorithms */
enum flann_algorithm_t { enum flann_algorithm_t {
LINEAR = 0, FLANN_INDEX_LINEAR = 0,
KDTREE = 1, FLANN_INDEX_KDTREE = 1,
KMEANS = 2, FLANN_INDEX_KMEANS = 2,
COMPOSITE = 3, FLANN_INDEX_COMPOSITE = 3,
SAVED = 254, FLANN_INDEX_SAVED = 254,
AUTOTUNED = 255 FLANN_INDEX_AUTOTUNED = 255
}; };
enum flann_centers_init_t { enum flann_centers_init_t {
CENTERS_RANDOM = 0, FLANN_CENTERS_RANDOM = 0,
CENTERS_GONZALES = 1, FLANN_CENTERS_GONZALES = 1,
CENTERS_KMEANSPP = 2 FLANN_CENTERS_KMEANSPP = 2
}; };
enum flann_log_level_t { enum flann_log_level_t {
...@@ -67,29 +67,31 @@ enum flann_log_level_t { ...@@ -67,29 +67,31 @@ enum flann_log_level_t {
}; };
enum flann_distance_t { enum flann_distance_t {
EUCLIDEAN = 1, FLANN_DIST_EUCLIDEAN = 1,
MANHATTAN = 2, FLANN_DIST_L2 = 1,
MINKOWSKI = 3, FLANN_DIST_MANHATTAN = 2,
MAX_DIST = 4, FLANN_DIST_L1 = 2,
HIK = 5, FLANN_DIST_MINKOWSKI = 3,
HELLINGER = 6, FLANN_DIST_MAX = 4,
CS = 7, FLANN_DIST_HIST_INTERSECT = 5,
CHI_SQUARE = 7, FLANN_DIST_HELLINGER = 6,
KL = 8, FLANN_DIST_CHI_SQUARE = 7,
KULLBACK_LEIBLER = 8 FLANN_DIST_CS = 7,
FLANN_DIST_KULLBACK_LEIBLER = 8,
FLANN_DIST_KL = 8
}; };
enum flann_datatype_t { enum flann_datatype_t {
INT8 = 0, FLANN_INT8 = 0,
INT16 = 1, FLANN_INT16 = 1,
INT32 = 2, FLANN_INT32 = 2,
INT64 = 3, FLANN_INT64 = 3,
UINT8 = 4, FLANN_UINT8 = 4,
UINT16 = 5, FLANN_UINT16 = 5,
UINT32 = 6, FLANN_UINT32 = 6,
UINT64 = 7, FLANN_UINT64 = 7,
FLOAT32 = 8, FLANN_FLOAT32 = 8,
FLOAT64 = 9 FLANN_FLOAT64 = 9
}; };
template <typename ELEM_TYPE> template <typename ELEM_TYPE>
...@@ -125,7 +127,7 @@ protected: ...@@ -125,7 +127,7 @@ protected:
public: public:
virtual ~IndexParams() {} virtual ~IndexParams() {}
virtual flann_algorithm_t getIndexType() const = 0; virtual flann_algorithm_t getIndexType() const { return algorithm; }
virtual void print() const = 0; virtual void print() const = 0;
......
...@@ -50,12 +50,10 @@ namespace cvflann ...@@ -50,12 +50,10 @@ namespace cvflann
{ {
struct CV_EXPORTS KDTreeIndexParams : public IndexParams { struct CV_EXPORTS KDTreeIndexParams : public IndexParams {
KDTreeIndexParams(int trees_ = 4) : IndexParams(KDTREE), trees(trees_) {}; KDTreeIndexParams(int trees_ = 4) : IndexParams(FLANN_INDEX_KDTREE), trees(trees_) {};
int trees; // number of randomized trees to use (for kdtree) int trees; // number of randomized trees to use (for kdtree)
flann_algorithm_t getIndexType() const { return algorithm; }
void print() const void print() const
{ {
logger().info("Index type: %d\n",(int)algorithm); logger().info("Index type: %d\n",(int)algorithm);
...@@ -167,7 +165,7 @@ public: ...@@ -167,7 +165,7 @@ public:
flann_algorithm_t getType() const flann_algorithm_t getType() const
{ {
return KDTREE; return FLANN_INDEX_KDTREE;
} }
/** /**
......
...@@ -52,8 +52,8 @@ namespace cvflann ...@@ -52,8 +52,8 @@ namespace cvflann
struct CV_EXPORTS KMeansIndexParams : public IndexParams { struct CV_EXPORTS KMeansIndexParams : public IndexParams {
KMeansIndexParams(int branching_ = 32, int iterations_ = 11, KMeansIndexParams(int branching_ = 32, int iterations_ = 11,
flann_centers_init_t centers_init_ = CENTERS_RANDOM, float cb_index_ = 0.2 ) : flann_centers_init_t centers_init_ = FLANN_CENTERS_RANDOM, float cb_index_ = 0.2 ) :
IndexParams(KMEANS), IndexParams(FLANN_INDEX_KMEANS),
branching(branching_), branching(branching_),
iterations(iterations_), iterations(iterations_),
centers_init(centers_init_), centers_init(centers_init_),
...@@ -64,8 +64,6 @@ struct CV_EXPORTS KMeansIndexParams : public IndexParams { ...@@ -64,8 +64,6 @@ struct CV_EXPORTS KMeansIndexParams : public IndexParams {
flann_centers_init_t centers_init; // algorithm used for picking the initial cluster centers for kmeans tree flann_centers_init_t centers_init; // algorithm used for picking the initial cluster centers for kmeans tree
float cb_index; // cluster boundary index. Used when searching the kmeans tree float cb_index; // cluster boundary index. Used when searching the kmeans tree
flann_algorithm_t getIndexType() const { return KMEANS; }
void print() const void print() const
{ {
logger().info("Index type: %d\n",(int)algorithm); logger().info("Index type: %d\n",(int)algorithm);
...@@ -379,7 +377,7 @@ public: ...@@ -379,7 +377,7 @@ public:
flann_algorithm_t getType() const flann_algorithm_t getType() const
{ {
return KMEANS; return FLANN_INDEX_KMEANS;
} }
/** /**
...@@ -404,13 +402,13 @@ public: ...@@ -404,13 +402,13 @@ public:
} }
flann_centers_init_t centersInit = params.centers_init; flann_centers_init_t centersInit = params.centers_init;
if (centersInit==CENTERS_RANDOM) { if (centersInit==FLANN_CENTERS_RANDOM) {
chooseCenters = &KMeansIndex::chooseCentersRandom; chooseCenters = &KMeansIndex::chooseCentersRandom;
} }
else if (centersInit==CENTERS_GONZALES) { else if (centersInit==FLANN_CENTERS_GONZALES) {
chooseCenters = &KMeansIndex::chooseCentersGonzales; chooseCenters = &KMeansIndex::chooseCentersGonzales;
} }
else if (centersInit==CENTERS_KMEANSPP) { else if (centersInit==FLANN_CENTERS_KMEANSPP) {
chooseCenters = &KMeansIndex::chooseCentersKMeanspp; chooseCenters = &KMeansIndex::chooseCentersKMeanspp;
} }
else { else {
......
...@@ -39,9 +39,7 @@ namespace cvflann ...@@ -39,9 +39,7 @@ namespace cvflann
{ {
struct CV_EXPORTS LinearIndexParams : public IndexParams { struct CV_EXPORTS LinearIndexParams : public IndexParams {
LinearIndexParams() : IndexParams(LINEAR) {}; LinearIndexParams() : IndexParams(FLANN_INDEX_LINEAR) {};
flann_algorithm_t getIndexType() const { return algorithm; }
void print() const void print() const
{ {
...@@ -65,7 +63,7 @@ public: ...@@ -65,7 +63,7 @@ public:
flann_algorithm_t getType() const flann_algorithm_t getType() const
{ {
return LINEAR; return FLANN_INDEX_LINEAR;
} }
......
...@@ -37,14 +37,14 @@ ...@@ -37,14 +37,14 @@
namespace cvflann namespace cvflann
{ {
template <typename T> struct Datatype {}; template <typename T> struct Datatype {};
template<> struct Datatype<char> { static flann_datatype_t type() { return INT8; } }; template<> struct Datatype<char> { static flann_datatype_t type() { return FLANN_INT8; } };
template<> struct Datatype<short> { static flann_datatype_t type() { return INT16; } }; template<> struct Datatype<short> { static flann_datatype_t type() { return FLANN_INT16; } };
template<> struct Datatype<int> { static flann_datatype_t type() { return INT32; } }; template<> struct Datatype<int> { static flann_datatype_t type() { return FLANN_INT32; } };
template<> struct Datatype<unsigned char> { static flann_datatype_t type() { return UINT8; } }; template<> struct Datatype<unsigned char> { static flann_datatype_t type() { return FLANN_UINT8; } };
template<> struct Datatype<unsigned short> { static flann_datatype_t type() { return UINT16; } }; template<> struct Datatype<unsigned short> { static flann_datatype_t type() { return FLANN_UINT16; } };
template<> struct Datatype<unsigned int> { static flann_datatype_t type() { return UINT32; } }; template<> struct Datatype<unsigned int> { static flann_datatype_t type() { return FLANN_UINT32; } };
template<> struct Datatype<float> { static flann_datatype_t type() { return FLOAT32; } }; template<> struct Datatype<float> { static flann_datatype_t type() { return FLANN_FLOAT32; } };
template<> struct Datatype<double> { static flann_datatype_t type() { return FLOAT64; } }; template<> struct Datatype<double> { static flann_datatype_t type() { return FLANN_FLOAT64; } };
CV_EXPORTS const char* FLANN_SIGNATURE(); CV_EXPORTS const char* FLANN_SIGNATURE();
......
...@@ -35,7 +35,7 @@ namespace cvflann ...@@ -35,7 +35,7 @@ namespace cvflann
/** Global variable indicating the distance metric /** Global variable indicating the distance metric
* to be used. * to be used.
*/ */
flann_distance_t flann_distance_type_ = EUCLIDEAN; flann_distance_t flann_distance_type_ = FLANN_DIST_EUCLIDEAN;
flann_distance_t flann_distance_type() { return flann_distance_type_; } flann_distance_t flann_distance_type() { return flann_distance_type_; }
/** /**
...@@ -208,12 +208,12 @@ class StaticInit ...@@ -208,12 +208,12 @@ class StaticInit
public: public:
StaticInit() StaticInit()
{ {
ParamsFactory_instance().register_<LinearIndexParams>(LINEAR); ParamsFactory_instance().register_<LinearIndexParams>(FLANN_INDEX_LINEAR);
ParamsFactory_instance().register_<KDTreeIndexParams>(KDTREE); ParamsFactory_instance().register_<KDTreeIndexParams>(FLANN_INDEX_KDTREE);
ParamsFactory_instance().register_<KMeansIndexParams>(KMEANS); ParamsFactory_instance().register_<KMeansIndexParams>(FLANN_INDEX_KMEANS);
ParamsFactory_instance().register_<CompositeIndexParams>(COMPOSITE); ParamsFactory_instance().register_<CompositeIndexParams>(FLANN_INDEX_COMPOSITE);
ParamsFactory_instance().register_<AutotunedIndexParams>(AUTOTUNED); ParamsFactory_instance().register_<AutotunedIndexParams>(FLANN_INDEX_AUTOTUNED);
// ParamsFactory::instance().register_<SavedIndexParams>(SAVED); // ParamsFactory::instance().register_<SavedIndexParams>(FLANN_INDEX_SAVED);
} }
}; };
StaticInit __init; StaticInit __init;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment