コード例 #1
0
 public object Clone()
 {
     MinutiaPairing clone = new MinutiaPairing();
     clone.ProbeIndex = (PairInfo[])ProbeIndex.Clone();
     clone.CandidateIndex = (PairInfo[])CandidateIndex.Clone();
     clone.PairList = (PairInfo[])PairList.CloneItems();
     clone.PairCount = PairCount;
     return clone;
 }
コード例 #2
0
        public object Clone()
        {
            MinutiaPairing clone = new MinutiaPairing();

            clone.ProbeIndex     = (PairInfo[])ProbeIndex.Clone();
            clone.CandidateIndex = (PairInfo[])CandidateIndex.Clone();
            clone.PairList       = (PairInfo[])PairList.CloneItems();
            clone.PairCount      = PairCount;
            return(clone);
        }
コード例 #3
0
ファイル: PairSelector.cs プロジェクト: TristramN/SourceAFIS
 public void SkipPaired(MinutiaPairing pairing)
 {
     while (Queue.Count > 0 && (pairing.IsProbePaired(Queue.Peek().Neighbor.Probe)
         || pairing.IsCandidatePaired(Queue.Peek().Neighbor.Candidate)))
     {
         EdgePair edge = Queue.Dequeue();
         if (pairing.IsProbePaired(edge.Neighbor.Probe) && pairing.GetByProbe(edge.Neighbor.Probe).Pair.Candidate == edge.Neighbor.Candidate)
         {
             pairing.AddSupportByProbe(edge.Reference.Probe);
             pairing.AddSupportByProbe(edge.Neighbor.Probe);
         }
     }
 }
コード例 #4
0
ファイル: PairSelector.cs プロジェクト: mingyaaaa/SourceAFIS
 public void SkipPaired(MinutiaPairing pairing)
 {
     while (Queue.Count > 0 && (pairing.IsProbePaired(Queue.Peek().Neighbor.Probe) ||
                                pairing.IsCandidatePaired(Queue.Peek().Neighbor.Candidate)))
     {
         EdgePair edge = Queue.Dequeue();
         if (pairing.IsProbePaired(edge.Neighbor.Probe) && pairing.GetByProbe(edge.Neighbor.Probe).Pair.Candidate == edge.Neighbor.Candidate)
         {
             pairing.AddSupportByProbe(edge.Reference.Probe);
             pairing.AddSupportByProbe(edge.Neighbor.Probe);
         }
     }
 }
コード例 #5
0
ファイル: MatchAnalysis.cs プロジェクト: TristramN/SourceAFIS
        public void Analyze(MinutiaPairing pairing, EdgeLookup lookup, Template probe, Template candidate)
        {
            MaxDistanceError = lookup.MaxDistanceError;
            MaxAngleError = lookup.MaxAngleError;
            var innerDistanceRadius = Convert.ToInt32(DistanceErrorFlatness * MaxDistanceError);
            var innerAngleRadius = Convert.ToInt32(AngleErrorFlatness * MaxAngleError);

            PairCount = pairing.Count;

            EdgeCount = 0;
            SupportedCount = 0;
            CorrectTypeCount = 0;
            DistanceErrorSum = 0;
            AngleErrorSum = 0;

            for (int i = 0; i < PairCount; ++i)
            {
                PairInfo pair = pairing.GetPair(i);
                if (pair.SupportingEdges >= MinSupportingEdges)
                    ++SupportedCount;
                EdgeCount += pair.SupportingEdges + 1;
                if (probe.Minutiae[pair.Pair.Probe].Type == candidate.Minutiae[pair.Pair.Candidate].Type)
                    ++CorrectTypeCount;
                if (i > 0)
                {
                    var probeEdge = EdgeConstructor.Construct(probe, pair.Reference.Probe, pair.Pair.Probe);
                    var candidateEdge = EdgeConstructor.Construct(candidate, pair.Reference.Candidate, pair.Pair.Candidate);
                    DistanceErrorSum += Math.Abs(probeEdge.Length - candidateEdge.Length);
                    AngleErrorSum += Math.Max(innerDistanceRadius, Angle.Distance(probeEdge.ReferenceAngle, candidateEdge.ReferenceAngle));
                    AngleErrorSum += Math.Max(innerAngleRadius, Angle.Distance(probeEdge.NeighborAngle, candidateEdge.NeighborAngle));
                }
            }

            float probeFraction = PairCount / (float)probe.Minutiae.Length;
            float candidateFraction = PairCount / (float)candidate.Minutiae.Length;
            PairFraction = (probeFraction + candidateFraction) / 2;
        }