为什么基于flann的描述符匹配器每次都匹配不同的关键点?

时间:2011-11-12 11:50:32

标签: android opencv surf

这是正常的吗?当我尝试使用蛮力匹配器时,结果每次都是一致的,但不是flann。 少量关键点将匹配不同的地方。我正在使用Android包装器编写代码,关键点检测器和描述符是SURF,如下所示:

Mat queryDescriptors = new Mat();
Mat trainDescriptors = new Mat();
DescriptorExtractor surfDE = DescriptorExtractor.create(DescriptorExtractor.SURF);
surfDE.compute(queryImage, queryKeyPoints, queryDescriptors);
surfDE.compute(trainImage, trainKeyPoints, trainDescriptors);
DescriptorMatcher dm = DescriptorMatcher.create(DescriptorMatcher.FLANNBASED);
List<DMatch> matches = new ArrayList<DMatch>();
dm.match(queryDescriptors, trainDescriptors, matches);

2 个答案:

答案 0 :(得分:5)

FLANN代表近似最近邻居的快速库。近似最近邻算法是非确定性的,通常是随机的KD树。

答案 1 :(得分:2)

安德烈说,this is the reason!是的,这是正常的。要找到更多,就必须剖析算法!