public VectorOfVectorOfDMatch GetMatchesForModel(SurfData scene, SurfData model) { using (FlannBasedMatcher matcher = new FlannBasedMatcher(_hierarchicalParams, _searchParams)) { matcher.Add(model.Descriptors); VectorOfVectorOfDMatch matches = new VectorOfVectorOfDMatch(); matcher.KnnMatch(scene.Descriptors, matches, _kConstant, null); MDMatch[][] newMatches = matches .ToArrayOfArray() .OrderBy(m => m[0].Distance) .Take(_matchLimit) .ToArray(); VectorOfVectorOfDMatch limitMatches = new VectorOfVectorOfDMatch(newMatches); matches.Dispose(); return(limitMatches); } }
private static VectorOfVectorOfDMatch GetSceneMatchesForModel(SURFData sceneData, SURFData modelData) { FlannBasedMatcher matcher = new FlannBasedMatcher(new HierarchicalClusteringIndexParams(), new SearchParams()); matcher.Add(modelData.Descriptors); VectorOfVectorOfDMatch matches = new VectorOfVectorOfDMatch(); matcher.KnnMatch(sceneData.Descriptors, matches, 1, null); MDMatch[][] newMatches = matches .ToArrayOfArray() .OrderBy(m => m[0].Distance) .Take(8) .ToArray(); VectorOfVectorOfDMatch limitMatches = new VectorOfVectorOfDMatch(newMatches); matches.Dispose(); return(limitMatches); }