static void Main(string[] args) { string[] pathes = Directory.GetFiles("C:\\Users\\Tanya\\Documents\\tests_data\\db"); StreamWriter writer = new StreamWriter("C:\\Users\\Tanya\\Documents\\Results\\AlgorithmVSCOMEResult.txt", true); for (int i = 0; i < 3 /*pathes.GetLength(0)*/; i++) { Tuple <int, int> redPoint = ImageHelper.FindColorPoint(pathes[i]); double[,] imgBytes = ImageEnhancementHelper.EnhanceImage(ImageHelper.LoadImage(pathes[i])); double[,] orientationField = OrientationFieldGenerator.GenerateOrientationField(imgBytes.Select2D(x => (int)x)); Complex[,] complexOrientationField = orientationField.Select2D(x => (new Complex(Math.Cos(2 * x), Math.Sin(2 * x)))); Complex[,] filter = Filter.GetFilter(orientationField); Complex[,] complexFilteredField = ConvolutionHelper.ComplexConvolve(complexOrientationField, filter); double[,] filteredField = complexFilteredField.Select2D(x => x.Magnitude); VSCOME vscome = new VSCOME(orientationField, filteredField); double[,] vscomeValue = vscome.CalculateVscomeValue(); Tuple <int, int> corePoint = KernelHelper.Max2dPosition(vscomeValue); writer.WriteLine(GetDistance(redPoint, corePoint)); // ImageHelper.SaveArray(orientationField, "C:\\Users\\Tanya\\Documents\\Results\\orientationField.jpg"); // ImageHelper.SaveArray(filteredField, "C:\\Users\\Tanya\\Documents\\Results\\filteredField.jpg"); //ImageHelper.SaveArray(vscomeValue, "C:\\Users\\Tanya\\Documents\\Results\\vscomeValue_1.jpg"); } writer.Close(); }
static void Main(string[] args) { string[] pathes = Directory.GetFiles("C:\\Users\\Tanya\\Documents\\tests_data\\db"); StreamWriter writer = new StreamWriter("C:\\Users\\Tanya\\Documents\\Results\\ModelBasedAlgorithmResult.txt", true); StreamWriter writerResult = new StreamWriter("C:\\Users\\Tanya\\Documents\\Results\\ModelBasedAlgorithmSummaryResult.txt", true); List <double> distances = new List <double>(); double sum15 = 0; double sum30 = 0; double sumOther = 0; double distance = 0; for (int i = 0; i < pathes.GetLength(0); i++) { break; Tuple <int, int> redPoint = ImageHelper.FindColorPoint(pathes[i]); double[,] imgBytes = ImageEnhancementHelper.EnhanceImage(ImageHelper.LoadImage(pathes[i])); double[,] orientationField = PixelwiseOrientationFieldGenerator.GenerateOrientationField(imgBytes); List <Tuple <int, int> > singularPoints = PoincareIndexMethod.FindSingularPoins(orientationField); ModelBasedAlgorithmCUDAFingerprinting.ReferencePoint.HoughPoincare.ModelBasedAlgorithm modelBasedAlgorithm = new ModelBasedAlgorithmCUDAFingerprinting.ReferencePoint.HoughPoincare.ModelBasedAlgorithm(orientationField); List <Tuple <int, int> > corePoints = modelBasedAlgorithm.FindSingularPoints(singularPoints); writer.WriteLine("---Fingerprint---"); foreach (Tuple <int, int> corePoint in corePoints) { distance = GetDistance(redPoint, corePoint); distances.Add(distance); writer.WriteLine(distance); } //ImageHelper.SaveArray(orientationField, "C:\\Users\\Tanya\\Documents\\Results\\china\\orientationField.jpg"); } foreach (double d in distances) { if (d <= 15) { sum15 += d; } else if (d <= 30) { sum30 += d; } else { sumOther += d; } } writerResult.WriteLine("0..15 => {0}", sum15); writerResult.WriteLine("15..30 => {0}", sum30); writerResult.WriteLine(">30 => {0}", sumOther); writer.Close(); }
public float[] BinarizeImage(float[] image, int rows, int columns, bool useCuda = false) { if (useCuda) { var result = new float[rows * columns]; CudaGlobalBinarization((float)Constants.BinarizationThreshold, result, image, columns, rows); return(result); } var newImage = ImageEnhancementHelper.EnhanceImage(image.Make2D(rows, columns).Select2D(x => (double)x)); return (GlobalBinarization.Binarization(newImage, Constants.BinarizationThreshold) .Make1D() .Select(x => (float)x) .ToArray()); }
public static double[,] BinarizeImage(double[,] image, int rows, int columns) { var newImage = ImageEnhancementHelper.EnhanceImage(image); return(GlobalBinarization.Binarization(newImage, Constants.BinarizationThreshold)); }