Esempio n. 1
0
        public IEnumerable <Match> Match(IStoreProvider <TFeature> storage, Bitmap bitmap, int skip, int take)
        {
            var extract = Extract(ImageProvider.AdaptImage(bitmap));

            var list = new List <Match>();

            foreach (var candidate in storage.GetCandidates(skip, take))
            {
                var retrieved = storage.Retrieve(candidate);
                var score     = Match(extract, retrieved, out var matchingMtiae);

                if (Math.Abs(score) < double.Epsilon || matchingMtiae == null)
                {
                    continue;
                }

                if (matchingMtiae.Count > 10)
                {
                    list.Add(new Match
                    {
                        Confidence     = score,
                        EntryId        = candidate,
                        MatchingPoints = matchingMtiae.Count
                    });
                }
            }
            return(list);
        }
Esempio n. 2
0
        public override MtripletsFeature Extract(Bitmap image)
        {
            var minutiae  = MinutiaeExtractor.ExtractFeatures(ImageProvider.AdaptImage(image));
            var mtriplets = new List <MTriplet>();
            var triplets  = new Dictionary <int, int>();

            foreach (var triangle in Delaunay2D.Triangulate(minutiae))
            {
                var idxArr = new[]
                {
                    (short)triangle.A,
                    (short)triangle.B,
                    (short)triangle.C
                };
                var newMTriplet = new MTriplet(idxArr, minutiae);
                var newHash     = newMTriplet.GetHashCode();
                if (!triplets.ContainsKey(newHash))
                {
                    triplets.Add(newHash, 0);
                    mtriplets.Add(newMTriplet);
                }
            }

            mtriplets.TrimExcess();
            return(new MtripletsFeature(mtriplets, minutiae));
        }
Esempio n. 3
0
        public void Store(IStoreProvider <TFeature> storage, Bitmap bitmap, string subjectId)
        {
            var extract = Extract(ImageProvider.AdaptImage(bitmap));

            storage.Add(new Candidate <TFeature>
            {
                EntryId   = subjectId,
                Feautures = extract
            });
        }