Beispiel #1
0
        /// <summary>
        ///     Extract features of type <see cref="PNFeatures"/> from the specified minutiae.
        /// </summary>
        /// <param name="minutiae">
        ///     The list of <see cref="Minutia"/> to extract the features from.
        /// </param>
        /// <returns>
        ///     Features of type <see cref="PNFeatures"/> extracted from the specified minutiae.
        /// </returns>
        public PNFeatures ExtractFeatures(List <Minutia> minutiae)
        {
            List <MtiaTriplet> result = new List <MtiaTriplet>();

            if (minutiae.Count > 3)
            {
                foreach (var triangle in Delaunay2D.Triangulate(minutiae))
                {
                    var idxArr = new short[]
                    {
                        (short)triangle.A,
                        (short)triangle.B,
                        (short)triangle.C
                    };
                    MtiaTriplet newMTriplet = new MtiaTriplet(idxArr, minutiae);
                    result.Add(newMTriplet);

                    idxArr = new short[]
                    {
                        (short)triangle.A,
                        (short)triangle.C,
                        (short)triangle.B
                    };
                    newMTriplet = new MtiaTriplet(idxArr, minutiae);
                    result.Add(newMTriplet);

                    idxArr = new short[]
                    {
                        (short)triangle.B,
                        (short)triangle.A,
                        (short)triangle.C
                    };
                    newMTriplet = new MtiaTriplet(idxArr, minutiae);
                    result.Add(newMTriplet);

                    idxArr = new short[]
                    {
                        (short)triangle.B,
                        (short)triangle.C,
                        (short)triangle.A
                    };
                    newMTriplet = new MtiaTriplet(idxArr, minutiae);
                    result.Add(newMTriplet);

                    idxArr = new short[]
                    {
                        (short)triangle.C,
                        (short)triangle.A,
                        (short)triangle.B
                    };
                    newMTriplet = new MtiaTriplet(idxArr, minutiae);
                    result.Add(newMTriplet);

                    idxArr = new short[]
                    {
                        (short)triangle.C,
                        (short)triangle.B,
                        (short)triangle.A
                    };
                    newMTriplet = new MtiaTriplet(idxArr, minutiae);
                    result.Add(newMTriplet);
                }
            }
            result.TrimExcess();
            return(new PNFeatures(result, minutiae));
        }
Beispiel #2
0
        public PNFeatures ExtractFeatures1(List <Minutia> minutiae)
        {
            List <MtiaTriplet> result = new List <MtiaTriplet>();

            if (minutiae.Count > 3)
            {
                List <int[]> triplets;
                SHullDelaunay.Triangulate(minutiae, out triplets);
                foreach (var triangle in triplets)
                {
                    var idxArr = new short[]
                    {
                        (short)triangle[0],
                        (short)triangle[1],
                        (short)triangle[2]
                    };
                    MtiaTriplet newMTriplet = new MtiaTriplet(idxArr, minutiae);
                    result.Add(newMTriplet);

                    idxArr = new short[]
                    {
                        (short)triangle[0],
                        (short)triangle[1],
                        (short)triangle[2]
                    };
                    newMTriplet = new MtiaTriplet(idxArr, minutiae);
                    result.Add(newMTriplet);

                    idxArr = new short[]
                    {
                        (short)triangle[0],
                        (short)triangle[1],
                        (short)triangle[2]
                    };
                    newMTriplet = new MtiaTriplet(idxArr, minutiae);
                    result.Add(newMTriplet);

                    idxArr = new short[]
                    {
                        (short)triangle[0],
                        (short)triangle[1],
                        (short)triangle[2]
                    };
                    newMTriplet = new MtiaTriplet(idxArr, minutiae);
                    result.Add(newMTriplet);

                    idxArr = new short[]
                    {
                        (short)triangle[0],
                        (short)triangle[1],
                        (short)triangle[2]
                    };
                    newMTriplet = new MtiaTriplet(idxArr, minutiae);
                    result.Add(newMTriplet);

                    idxArr = new short[]
                    {
                        (short)triangle[0],
                        (short)triangle[1],
                        (short)triangle[2]
                    };
                    newMTriplet = new MtiaTriplet(idxArr, minutiae);
                    result.Add(newMTriplet);
                }
            }

            result.TrimExcess();
            return(new PNFeatures(result, minutiae));
        }