- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我将 BoW 与 SURF 和 FlannBasedMatcher 一起用于数据库内的图像检索。我使用 SURF 提取了数据库(训练)的所有特征,然后构建了词汇表,最后得到了数据库(训练)中每张图片的 BOF 频率直方图。
需要说明的是,我没有提供所有此过程的详细信息,但如果您需要一些详细信息,请告诉我。
所以在这一步我有:
cv::Mat allDescriptors --> 我所有数据库的描述符(训练)
cv::Mat Vocabulary --> codebook representation
cv::Mat responseDatabase --> 我数据库中每张图片的频率直方图
然后我使用查询并根据之前计算的词汇表计算其响应。最后我有这个数据:
现在我遇到了一些困难。我用过
cv::flann::Index flannIndex(responseDatabase, cv::flann::KDTreeIndexParams(), cvflann::FLANN_DIST_EUCLIDEAN);
cv::Mat results, dists;
int k=2;
flannIndex.knnSearch(responseQuery, results, dists, k, cv::flann::SearchParams() );
效果很好,我得到了这个结果:
但是现在有了这些结果,我怎样才能恢复与我的 2 个最近邻居相对应的两张图片?事实上,我的每个数据中都没有任何图片痕迹。
也许,我错过了一步,但哪一步呢?
感谢
最佳答案
我解决了,但我不知道这是不是最好的方法。
像这样计算每张图像后:
bowide.compute(img,keypoints,responseHist);
我将图片保存在一个大 vector 中,因此,我可以加载它们进行匹配。
vectorImg.push_back(img);
问题是,我必须将每张图片的名称保存在一个txt文件中,然后在匹配时读取txt文件。 (为了加载它们)事实上,数据库中每个图像的 BoWFeature 计算只完成一次,我不想每次都运行相同的过程,我想将查询与数据库进行比较。因此,一旦我的数据库经过训练,我只能进行匹配,因为我在一个 txt 文件中有我所有的图片和索引。
关于C++/OpenCV - 使用 flann::index 后如何获取我的图像? (与 BoF),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25379852/
http://opencv.willowgarage.com/documentation/cpp/features2d_common_interfaces_of_descriptor_matchers
我正在尝试运行检测图像特征的应用程序,但是当我运行 BRISK 的代码时功能,BRIEF描述符和 FlannBased匹配器,它崩溃并说: OpenCV Error: Unsupported form
我编写了一个程序来计算 SURF 特征,然后使用 FLANN(最近邻快速库)来匹配和显示最近邻。现在可以将 FLANN 的使用视为使用机器学习,因为我的理解是它是 k-最近邻搜索的近似版本,被视为机器
我正在尝试将 FLANN 与 ORB 描述符一起使用,但 opencv 会因以下简单代码而崩溃: vector > dbKeypoints; vector dbDescriptors; vector
还是用flann可能?我不是最有经验的编码员,我可能也只是忽略了一些基本的东西(C++,OpenCV 2.4.3)。 问题 : 我有两个点云,想要计算位移图。我正在尝试使用flann .lib从第二个
我正在尝试在大型 3D 点数据集中查找相邻节点的确切数量。目标是让数据集的每个点检索具有给定半径的区域中所有可能的邻居。 FLANN 确保对于低维数据可以检索到确切的邻居,而与蛮力搜索相比,情况似乎并
将所有描述符添加到 FLANN 索引后,我使用以下代码保存它: flann = cv2.flann.Index() for index, filename in enumerate(o
我一直在尝试设置一个基本的 3D 点 flann knnsearch,但到目前为止还没有成功地让它工作。我尝试了很多不同的东西,但都返回了错误。有一段时间我遇到了 cv::flann::Index k
您好,我正在尝试对整数数据进行最近邻查询。似乎 cv::flann 不支持这个。这是真的吗? 最佳答案 是的,可以对整数数据使用 FLANN 最近邻搜索。您需要对整数使用距离度量。一些距离度量是模板,
我有一张全景图,以及在该全景图中看到的建筑物的较小图像。我想要做的是识别那个较小图像中的建筑物是否在那个全景图像中,以及这 2 个图像如何排列。 对于第一个示例,我使用的是全景图像的裁剪版本,因此像素
我正在使用 opencv 2.4.4 flann。 我指的是:http://docs.opencv.org/2.4.4/modules/flann/doc/flann_fast_approximate
这正常吗?当我尝试暴力匹配器时,结果每次都是一致的,但 flann 不是。少量的关键点会匹配到不同的地方。我正在使用 Android 包装器编写代码,关键点检测器和描述符是 SURF,如下所示: Ma
我将 flann 与使用大量 RAM 的大型索引一起使用。 我希望能够在多个进程之间共享 flann 索引。 是否可以让 flann 使用内存映射文件作为其索引,以便在多个进程之间共享? 最佳答案 我
我想利用 FLANN 库进行多标签分类。我知道 FLANN 库用于计算最近邻,但我不确定如何将它用于分类目的。有没有办法将其插入 Scikit-Learn 或其他库中。 最佳答案 FLANN写在 c+
我尝试用cmake编译FLANN,但唯一的结果就是头疼。 所以我找到了here这个解决方案通过 PCL 存储库和突触。安装似乎很顺利,但现在我不知道如何使用安装的包。 引用 FLANN 的 docum
编辑(感谢 Barry 的评论)我需要复制 FLANN 搜索索引以在 vector 中使用它们,但是当拷贝超出范围时它会产生访问冲突。崩溃的最小代码是: #include #include const
我想做半径搜索来找到所有有效的邻居,但它似乎给了我错误的结果。这是我的代码 #include "opencv/cv.hpp" #include #include int main () {
我正在编写一个基于 surf 的图像匹配算法。我用 400 hessian 阈值初始化 surf: surf = cv2.SURF(400) 并进行了 flann 匹配。 但它运行得太慢(在大量图像上
我写了一个程序来匹配两张图片。这是代码。但如果我使用 BruteForceMatcher>(不是 flann),它就可以工作。 #include #include "opencv2/core/cor
我有一组点云(点云数≈200万)。我想为点群中的每个点找到最近的 k 邻居。我做了这样的事情 flann::Index flann_index(data_m, flann::KDTreeIndexPa
我是一名优秀的程序员,十分优秀!