示例#1
0
        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();
        }
示例#3
0
        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());
        }
示例#4
0
        public static double[,] BinarizeImage(double[,] image, int rows, int columns)
        {
            var newImage = ImageEnhancementHelper.EnhanceImage(image);

            return(GlobalBinarization.Binarization(newImage, Constants.BinarizationThreshold));
        }