C ++ / OpenCV - 为什么FLANN ::带ORB和LSH的索引工作得非常糟糕?

时间:2014-08-19 18:51:59

标签: c++ opencv matching flann

我在数据库中寻找图片(1000张图片)。为了做到这一点,我使用ORB功能袋。 然后,我使用LSH。

有些事我根本不懂。 有了KD-TREE,我得到了我最近的3个邻居之一,那么其他结果非常糟糕。 我认为这是因为KD-TREE在高维数据中的表现非常糟糕。

指数:[47,194,1118] 区:[0,0.01984383,0.021690277]

然后,当我使用具有汉明距离的LSH时,无论我的查询图像如何,我总会得到相同的不良结果。

指数:[0,1,2] 区:[0,0,0]

 responseDatabase.convertTo(responseDatabase,CV_8U);
 cv::flann::Index flannIndex(responseDatabase,cv::flann::LshIndexParams(20,10,2), cvflann::FLANN_DIST_HAMMING);
cv::Mat results, dists;
 int k=3; // find the 3 nearest neighbors


// search (nearest neighbor)
responseQuery.convertTo(responseQuery,CV_8U);
flannIndex.knnSearch(responseQuery, results, dists, k, cv::flann::SearchParams() );

 cv::flann::Index flannIndex(responseDatabase,cv::flann::KDTreeIndexParams,cvflann::FLANN_DIST_EUCLIDEAN);
cv::Mat results, dists;
 int k=3; // find the 3 nearest neighbors


// search (nearest neighbor)
flannIndex.knnSearch(responseQuery, results, dists, k, cv::flann::SearchParams() );

responseQuery - > cv :: Mat,包含查询的响应直方图 databaseQuery - > cv :: Mat,其中包含我数据库所有图片的响应直方图

我想念一下吗?也许和ORB一样,除了其他东西之外我还有什么需要做的? 我确切地说,首先我使用SIFT和SURF与LSH和KD-TREE,即使它不完美我也得到了相当不错的结果。

任何人都可以解释为什么吗?我真的不明白为什么。

但是我使用BruteForce-Hamming作为匹配器。

0 个答案:

没有答案