OpenCV:在群集上运行FLANN

Ash*_*iya 6 opencv image-processing pattern-matching nearest-neighbor flann

我正在尝试为大量图像缩放"matching_to_many_images.cpp".(20K +图像) https://github.com/kipr/opencv/blob/master/samples/cpp/matching_to_many_images.cpp

我使用基于FLANN的匹配器匹配图像(使用SURF关键点和描述符提取器).我尝试按照本文中描述的方法("在计算群集上搜索"一节) http://www.cs.ubc.ca/research /flann/uploads/FLANN/flann_pami2014.pdf,

我有一个训练图像集C,总共n个图像.

C = {B(1)... B(N)}.

我将集合C分成N个"桶",其中每个桶包含(n/N)个图像.对于每个存储桶,我分别执行"detectKeyPoints","computeDescriptors"和"trainMatcher".这意味着每个image -bucket都有一个单独的"DescriptorMatcher".总共N个DescriptorMatchers.

然后对于查询图像,我执行"detectKeyPoints","computeDescriptors",然后对N个DescriptorMatchers中的每一个执行"匹配".

最后从每个DescriptorMatcher接收DMatch列表,将local-image-bucket-indices映射到global-image-index并计算每个image的匹配描述符数.将此数字最接近查询图像.

我用N = 1运行它,得到正确的结果.但是当我增加N(> 1)时,我注意到我没有得到正确的匹配结果.

我的问题是:

1)我是否根据论文做了正确的步骤?我试图了解如何完成"减少"步骤,如本文所述.

2)我可以从DMatch对象中提取两个因素; "距离"和"每个图像的总匹配数".如何使用这两个因素找到最接近的匹配图像?