public void TestWithAdequateMinutiaeSet() { int[,] mask = Segmentator.Segmetator(img, windowSize, weight, threshold); double[,] binaryImage = img; // //--------------------------------------- double sigma = 1.4d; double[,] smoothing = LocalBinarizationCanny.Smoothing(binaryImage, sigma); double[,] sobel = LocalBinarizationCanny.Sobel(smoothing); double[,] nonMax = LocalBinarizationCanny.NonMaximumSupperession(sobel); nonMax = GlobalBinarization.Binarization(nonMax, 60); nonMax = LocalBinarizationCanny.Inv(nonMax); int sizeWin = 16; binaryImage = LocalBinarizationCanny.LocalBinarization(binaryImage, nonMax, sizeWin, 1.3d); //--------------------------------------- binaryImage = Thining.ThinPicture(binaryImage); //--------------------------------------- List <Minutia> minutiae = MinutiaeDetection.FindMinutiae(binaryImage); for (int i = 0; i < minutiae.Count; i++) { if (mask[minutiae[i].Y, minutiae[i].X] == 0) { minutiae.Remove(minutiae[i]); i--; } } minutiae = MinutiaeDetection.FindBigMinutiae(minutiae); var response = MCC.MCCMethod(minutiae, img.GetLength(0), img.GetLength(1)); SaveResponse(response, minutiae); }
public void TestMcc() { int[,] maskOfSegmentation2D = Segmentator.Segmetator(img, windowSize, weight, threshold); var thining = Thining.ThinPicture(GlobalBinarization.Binarization(img, board)); List <Minutia> minutiaList = MinutiaeDetection.FindMinutiae(thining); List <Minutia> validMinutiae = new List <Minutia>(); foreach (Minutia minutia in minutiaList) { if (maskOfSegmentation2D[minutia.Y, minutia.X] == 1) // coordinates swap - ok { validMinutiae.Add(minutia); } } var response = MCC.MCCMethod(validMinutiae, thining.GetLength(0), thining.GetLength(1)); SaveResponse(response, validMinutiae); }
public void SimpleTestMcc() { List <Minutia> twoMinutiae = new List <Minutia>(); Minutia firstMinutia = new Minutia(); firstMinutia.X = 40; firstMinutia.Y = 60; firstMinutia.Angle = 0; twoMinutiae.Add(firstMinutia); Minutia secondMinutia = new Minutia(); secondMinutia.X = 70; secondMinutia.Y = 100; secondMinutia.Angle = Math.PI / 6; twoMinutiae.Add(secondMinutia); Dictionary <Minutia, Tuple <int[, , ], int[, , ]> > response = MCC.MCCMethod(twoMinutiae, 364, 256); SaveResponse(response, twoMinutiae); }
public void SimpleTestNumerationMcc() { List <Minutia> twoMinutiae = new List <Minutia>(); Minutia firstMinutia = new Minutia(); firstMinutia.X = 40; firstMinutia.Y = 60; firstMinutia.Angle = 0; twoMinutiae.Add(firstMinutia); Minutia secondMinutia = new Minutia(); secondMinutia.X = 70; secondMinutia.Y = 100; secondMinutia.Angle = Math.PI / 6; twoMinutiae.Add(secondMinutia); Dictionary <Minutia, Tuple <int[, , ], int[, , ]> > response = MCC.MCCMethod(twoMinutiae, 364, 256); for (int i = 0; i < response.Count; i++) { int[] valueN = Numeration.numerizationBlock(response[twoMinutiae[i]].Item1); int[] maskN = Numeration.numerizationBlock(response[twoMinutiae[i]].Item2); for (int j = 0; j < maskN.GetLength(0); j++) { //System.Console.Write(valueN[j] + " "); BitArray b = new BitArray(new int[] { maskN[j] }); bool[] bits = new bool[b.Count]; b.CopyTo(bits, 0); if (j % (maskN.Count() / 6) == 0) { // System.Console.Write(" j = " + j + "\n"); } for (int k = 0; k < bits.GetLength(0); k++) { System.Console.Write(bits[k]? 1 : 0); if (k == 15) { System.Console.Write(" i = " + i + "\n"); } } System.Console.Write(" j = " + j + "\n"); } System.Console.WriteLine(); System.Console.WriteLine(); for (int j = 0; j < valueN.GetLength(0); j++) { //System.Console.Write(valueN[j] + " "); BitArray b = new BitArray(new int[] { valueN[j] }); bool[] bits = new bool[b.Count]; b.CopyTo(bits, 0); if (j % (valueN.Count() / 6) == 0) { // System.Console.Write(" j = " + j + "\n"); } for (int k = 0; k < bits.GetLength(0); k++) { System.Console.Write(bits[k]? 1 : 0); if (k == 15) { System.Console.Write(" i = " + i + "\n"); } } System.Console.Write(" j = " + j + "\n"); } System.Console.WriteLine(); System.Console.WriteLine(); System.Console.WriteLine(); System.Console.WriteLine(); } }