LSH 与二进制字符串一起使用,在索引和检索方面非常有效。虽然 SIFT 不是二进制描述符,但它仍然是那里可用的最佳描述符。是否可以将 SIFT 与 LSH 一起使用?此外,是否有更好的索引技术可用于 SIFT 功能?
我曾尝试在 OpenCV 中将 SIFT 与 FLANNBased Matcher 与 LSH 一起使用,但出现以下错误:
代码:
cv::Ptr<cv::FlannBasedMatcher> matcher = new cv::FlannBasedMatcher(new cv::flann::LshIndexParams(5, 24, 2));
matcher->match( descriptors, descriptors1, matches );
注意:这个问题在 dsp.stackexchange.com 上更合适,但它现在处于只读模式。
最佳答案
LSH 是一种输出二进制字符串的降维算法。它旨在用二进制代码索引实值、高维数据(但具有固有的低维数,例如流形)。
您可以尝试自己实现 LSH,以便它可以与 SIFT 描述符一起使用。最简单和最简单的方法是使用随机投影,但是使用 SIFT 描述符是梯度方向直方图的聚合这一事实的一些更聪明的方案可能可以用来产生更有效的哈希函数。
关于opencv - 如何在局部敏感哈希中使用 SIFT 描述符?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19881432/