コード例 #1
0
        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);
            }
        }
コード例 #2
0
ファイル: Program.cs プロジェクト: NasC0/EmguCV-Playground
        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);
        }