[在标记为重复或投票反对之前,请阅读问题细节。我已经彻底搜索过,找不到解决方案,因此在此发布问题。]
我正在尝试比较一个图像与多个图像,并获取所有匹配的图像列表。我不想在图像之间绘制关键点。
我的解决方案基于以下源代码:
https://github.com/Itseez/opencv/blob/master/samples/cpp/matching_to_many_images.cpp
上述源代码将一个图像与多个图像进行匹配,并获取最佳匹配的图像。
我已修改上述示例并生成:
vector<vector<DMatch>> matches;
vector<vector<DMatch>> good_matches;
现在我的问题是如何应用最近邻搜索比率来获取多个图像的良好匹配?
编辑1:
我的实现如下:
1. 对于数据集中的每个图像,计算SURF描述符。 2. 将所有描述符合并成一个大矩阵。 3. 从连接矩阵中构建FLANN索引。 4. 计算查询图像的描述符。 5. 在FLANN索引上运行KNN搜索,以找到前20个或更少的最佳匹配图像。 K设置为20。 6. 过滤掉在上一步中计算出的所有不充分的匹配。(如何过滤?)
我已经成功完成了步骤1到5。 我在第6步遇到问题,无法删除错误的匹配项。