static void Main(string[] args) { if (args.Length < 3) { return; } string InputFileName = args[args.Length - 2], OutputFileName = args[args.Length - 1]; if (!File.Exists(InputFileName)) { return; } switch (args[0]) { case ("prewitt"): { ColorFloatImage image = ImageIO.FileToColorFloatImage(InputFileName); if (args.Length >= 4) { if (args[1] == "y") { ImageProcessing.Prewitt(image, "y"); } if (args[1] == "x") { ImageProcessing.Prewitt(image, "x"); } } else { ImageProcessing.Prewitt(image); } ImageIO.ImageToFile(image, OutputFileName); break; } case ("invert"): { ColorFloatImage image = ImageIO.FileToColorFloatImage(InputFileName); ImageProcessing.InvertImage(image); ImageIO.ImageToFile(image, OutputFileName); break; } case ("sobel"): { ColorFloatImage image = ImageIO.FileToColorFloatImage(InputFileName); if (args.Length >= 4) { if (args[1] == "y") { ImageProcessing.Sobel(image, "y"); } if (args[1] == "x") { ImageProcessing.Sobel(image, "x"); } } else { ImageProcessing.Sobel(image); } ImageIO.ImageToFile(image, OutputFileName); break; } case ("mirror"): { if (args.Length >= 4) { ColorFloatImage image = ImageIO.FileToColorFloatImage(InputFileName); if (args[1] == "y") { ImageProcessing.FlipImageY(image); } if (args[1] == "x") { ImageProcessing.FlipImageX(image); } ImageIO.ImageToFile(image, OutputFileName); } break; } case ("roberts"): { ColorFloatImage image = ImageIO.FileToColorFloatImage(InputFileName); if (args.Length >= 4) { if (args[1] == "1") { ImageProcessing.Roberts(image, 1); } if (args[1] == "2") { ImageProcessing.Roberts(image, 2); } } else { ImageProcessing.Roberts(image); } ImageIO.ImageToFile(image, OutputFileName); break; } case ("rotate"): { if (args.Length < 5) { return; } ColorFloatImage image = ImageIO.FileToColorFloatImage(InputFileName); ImageProcessing.Rotate(ref image, args[1], float.Parse(args[2], CultureInfo.InvariantCulture)); ImageIO.ImageToFile(image, OutputFileName); } break; case ("gauss"): { if (args.Length < 4) { return; } ColorFloatImage image = ImageIO.FileToColorFloatImage(InputFileName); if (args.Length < 5) { image = ImageProcessing.Gauss(image, float.Parse(args[1], CultureInfo.InvariantCulture)); } else { image = ImageProcessing.Gauss(image, float.Parse(args[1], CultureInfo.InvariantCulture), float.Parse(args[2], CultureInfo.InvariantCulture)); } ImageIO.ImageToFile(image, OutputFileName); break; } case ("median"): { if (args.Length < 4) { return; } ColorFloatImage image = ImageIO.FileToColorFloatImage(InputFileName); ImageProcessing.Median(image, Int32.Parse(args[1])); ImageIO.ImageToFile(image, OutputFileName); break; } case ("gabor"): { GrayscaleFloatImage image = ImageIO.FileToGrayscaleFloatImage(InputFileName); image = ImageProcessing.Gabor(image, Single.Parse(args[1], CultureInfo.InvariantCulture), Single.Parse(args[2], CultureInfo.InvariantCulture), Single.Parse(args[3], CultureInfo.InvariantCulture), Single.Parse(args[4], CultureInfo.InvariantCulture), Single.Parse(args[5], CultureInfo.InvariantCulture)); ImageIO.ImageToFile(image, OutputFileName); break; } case ("gradient"): { ColorFloatImage image = ImageIO.FileToColorFloatImage(InputFileName); ImageProcessing.gradient(ref image, Single.Parse(args[1], CultureInfo.InvariantCulture)); ImageIO.ImageToFile(ImageIO.BitmapToGrayscaleFloatImage(ImageIO.ImageToBitmap(image)), OutputFileName); break; } case ("vessels"): { ColorFloatImage image = ImageIO.FileToColorFloatImage(InputFileName); var result = ImageProcessing.vessels(image, Single.Parse(args[3], CultureInfo.InvariantCulture)); ImageIO.ImageToFile(result, OutputFileName); break; } case ("canny"): { ColorFloatImage image = ImageIO.FileToColorFloatImage(InputFileName); var result = EdgeDetection.Canny(image, Single.Parse(args[1], CultureInfo.InvariantCulture), Single.Parse(args[2], CultureInfo.InvariantCulture), Single.Parse(args[3], CultureInfo.InvariantCulture)); ImageIO.ImageToFile(result, OutputFileName); break; } case ("mse"): { ColorFloatImage image1 = ImageIO.FileToColorFloatImage(args[1]), image2 = ImageIO.FileToColorFloatImage(args[2]); Console.WriteLine(ImageInterpolation.MSE(image1, image2)); break; } case ("psnr"): { ColorFloatImage image1 = ImageIO.FileToColorFloatImage(args[1]), image2 = ImageIO.FileToColorFloatImage(args[2]); Console.WriteLine(ImageInterpolation.PSNR(image1, image2)); break; } case ("ssim"): { ColorFloatImage image1 = ImageIO.FileToColorFloatImage(args[1]), image2 = ImageIO.FileToColorFloatImage(args[2]); Console.WriteLine(ImageInterpolation.SSIM(image1, image2)); break; } case ("mssim"): { ColorFloatImage image1 = ImageIO.FileToColorFloatImage(args[1]), image2 = ImageIO.FileToColorFloatImage(args[2]); Console.WriteLine(ImageInterpolation.MSSIM(image1, image2)); break; } case ("unsharp"): { ColorFloatImage image = ImageIO.FileToColorFloatImage(InputFileName); var result = ImageProcessing.unsharp(image); ImageIO.ImageToFile(result, OutputFileName); break; } default: break; } //GrayscaleFloatImage image = ImageIO.FileToGrayscaleFloatImage(InputFileName); //FlipImage(image); }
static void Main(string[] args) { if (args.Length < 3) { return; } string InputFileName = args[0], OutputFileName = args[1]; if (!File.Exists(InputFileName)) { return; } switch (args[2]) { case ("harris"): { GrayscaleFloatImage image = ImageIO.FileToGrayscaleFloatImage(InputFileName); GrayscaleFloatImage Res = EdgeDetection.harris(image, float.Parse(args[3])); ImageIO.ImageToFile(Res, OutputFileName); break; } case ("canny"): { ColorFloatImage image = ImageIO.FileToColorFloatImage(InputFileName); GrayscaleFloatImage Reslut = EdgeDetection.Canny(image, float.Parse(args[3]), float.Parse(args[4]), float.Parse(args[5])); ImageIO.ImageToFile(Reslut, OutputFileName); break; } case ("nothing"): { ColorFloatImage image = ImageIO.FileToColorFloatImage(InputFileName); ImageIO.ImageToFile(image, OutputFileName); break; } case ("prewitt"): { ColorFloatImage image = ImageIO.FileToColorFloatImage(InputFileName); if (args.Length >= 4) { if (args[3] == "y") { ImageProcessing.Prewitt(image, "y"); } if (args[3] == "x") { ImageProcessing.Prewitt(image, "x"); } } else { ImageProcessing.Prewitt(image); } ImageIO.ImageToFile(image, OutputFileName); break; } case ("invert"): { ColorFloatImage image = ImageIO.FileToColorFloatImage(InputFileName); ImageProcessing.InvertImage(image); ImageIO.ImageToFile(image, OutputFileName); break; } case ("sobel"): { ColorFloatImage image = ImageIO.FileToColorFloatImage(InputFileName); if (args.Length >= 4) { if (args[3] == "y") { ImageProcessing.Sobel(image, "y"); } if (args[3] == "x") { ImageProcessing.Sobel(image, "x"); } } else { ImageProcessing.Sobel(image); } ImageIO.ImageToFile(image, OutputFileName); break; } case ("mirror"): { if (args.Length >= 4) { ColorFloatImage image = ImageIO.FileToColorFloatImage(InputFileName); if (args[3] == "y") { ImageProcessing.FlipImageY(image); } if (args[3] == "x") { ImageProcessing.FlipImageX(image); } ImageIO.ImageToFile(image, OutputFileName); } break; } case ("roberts"): { ColorFloatImage image = ImageIO.FileToColorFloatImage(InputFileName); if (args.Length >= 4) { if (args[3] == "1") { ImageProcessing.Roberts(image, 1); } if (args[3] == "2") { ImageProcessing.Roberts(image, 2); } } else { ImageProcessing.Roberts(image); } ImageIO.ImageToFile(image, OutputFileName); break; } case ("rotate"): { if (args.Length < 5) { return; } ColorFloatImage image = ImageIO.FileToColorFloatImage(InputFileName); if (args[3] == "cw") { if (args[4] == "90") { ImageProcessing.RotateCw90(ref image); } if (args[4] == "180") { ImageProcessing.RotateCw90(ref image); ImageProcessing.RotateCw90(ref image); } if (args[4] == "270") { ImageProcessing.RotateCw90(ref image); ImageProcessing.RotateCw90(ref image); ImageProcessing.RotateCw90(ref image); } } else if (args[3] == "ccw") { if (args[4] == "90") { ImageProcessing.RotateCw90(ref image); ImageProcessing.RotateCw90(ref image); ImageProcessing.RotateCw90(ref image); } if (args[4] == "180") { ImageProcessing.RotateCw90(ref image); ImageProcessing.RotateCw90(ref image); } if (args[4] == "270") { ImageProcessing.RotateCw90(ref image); } } ImageIO.ImageToFile(image, OutputFileName); } break; case ("gauss"): { if (args.Length < 4) { return; } ColorFloatImage image = ImageIO.FileToColorFloatImage(InputFileName); ImageProcessing.Gauss(ref image, float.Parse(args[3])); ImageIO.ImageToFile(image, OutputFileName); break; } case ("median"): { if (args.Length < 4) { return; } ColorFloatImage image = ImageIO.FileToColorFloatImage(InputFileName); ImageProcessing.Median(image, Int32.Parse(args[3])); ImageIO.ImageToFile(image, OutputFileName); break; } case ("gabor"): { ColorFloatImage image = ImageIO.FileToColorFloatImage(InputFileName); ImageProcessing.gabor(ref image, Single.Parse(args[3]), Single.Parse(args[4]), Single.Parse(args[5]), Single.Parse(args[6]), Single.Parse(args[7])); ImageIO.ImageToFile(image, OutputFileName); break; } default: break; } //GrayscaleFloatImage image = ImageIO.FileToGrayscaleFloatImage(InputFileName); //FlipImage(image); }