public static void SaveGrayscaleImage(string sourceFilePath, byte[,] grayscaleImage)
        {
            string newFilePath = ProbA1.NewFilePath(sourceFilePath, "Grayscale");

            Utility.SaveGrayscaleImage(grayscaleImage, newFilePath);

            Console.WriteLine($"Saved grayscale image to \'{newFilePath}\'");
        }
        public static void ApplyPrewittFilterAndSave(
            string sourceFilePath, byte[,] sourceImage)
        {
            byte[,] resultImage = ImageFiltering.ApplyPrewittFilter(sourceImage, true);
            string newFilePath = ProbA1.NewFilePath(sourceFilePath, "PrewittFilter");

            Utility.SaveGrayscaleImage(resultImage, newFilePath);

            Console.WriteLine($"Prewitt filter applied and saved to \'{newFilePath}\'");
        }
        public static void ApplyAveragingFilterAndSave(
            string sourceFilePath, byte[,] sourceImage, int filterSize)
        {
            byte[,] resultImage = ImageFiltering.ApplyAveragingFilter(sourceImage, filterSize);
            string newFilePath = ProbA1.NewFilePath(sourceFilePath, $"AveragingFilter{filterSize}");

            Utility.SaveGrayscaleImage(resultImage, newFilePath);

            Console.WriteLine($"Averaging filter (size: {filterSize}) " +
                              $"applied and saved to \'{newFilePath}\'");
        }
        public static void ApplySharpeningFilterAndSave(
            string sourceFilePath, byte[,] sourceImage, int filterSize, double k)
        {
            byte[,] resultImage = ImageFiltering.ApplySharpeningFilter(sourceImage, filterSize, k);
            string newFilePath = ProbA1.NewFilePath(
                sourceFilePath, $"SharpeningFilter{filterSize}-{k}");

            Utility.SaveGrayscaleImage(resultImage, newFilePath);

            Console.WriteLine($"Sharpening filter applied and saved to \'{newFilePath}\'");
        }
        public static void DetectEdgesAndSave(
            string sourceFilePath, byte[,] sourceImage, int filterSize, double standardDeviation)
        {
            byte[,] resultImage = ImageFiltering.DetectEdges(
                sourceImage, filterSize, standardDeviation);
            string newFilePath = ProbA1.NewFilePath(
                sourceFilePath, $"DetectEdges{filterSize}-{standardDeviation}");

            Utility.SaveGrayscaleImage(resultImage, newFilePath);

            Console.WriteLine($"Edge detection done and file saved to \'{newFilePath}\'");
        }
        public static void ApplyGaussianFilterAndSave(
            string sourceFilePath, byte[,] sourceImage, int filterSize, double standardDeviation)
        {
            byte[,] resultImage = ImageFiltering.ApplyGaussianFilter(
                sourceImage, filterSize, standardDeviation);
            string newFilePath = ProbA1.NewFilePath(
                sourceFilePath, $"GaussianFilter{filterSize}-{standardDeviation}");

            Utility.SaveGrayscaleImage(resultImage, newFilePath);

            Console.WriteLine($"Gaussian filter (size: {filterSize}, " +
                              $"standard deviation: {standardDeviation}) " +
                              $"applied and saved to \'{newFilePath}\'");
        }