/// <summary>
 /// Brightnesses
 /// </summary>
 /// <param name="image">The image.</param>
 /// <param name="percent">The percent.</param>
 /// <returns>Image.</returns>
 public static Image Brightness(this Image image, int percent)
 {
     ImageFilter imageFilter = new ImageFilter();
     return imageFilter.Brightness(new Bitmap(image), percent);
 }
 /// <summary>
 /// Channel filter
 /// </summary>
 /// <param name="image">The image.</param>
 /// <param name="comparingImage">The comparing image.</param>
 /// <param name="filter">The filter.</param>
 /// <returns>Image.</returns>
 public static Image Channel(this Image image, Image comparingImage,  Rgb filter)
 {
     ImageFilter imageFilter = new ImageFilter();
     return imageFilter.Channel(new Bitmap(image), new Bitmap(comparingImage), filter);
 }
 /// <summary>
 /// Sobel filter
 /// </summary>
 /// <param name="image">The image.</param>
 /// <returns>Image.</returns>
 public static Image Sobel(this Image image)
 {
     ImageFilter imageFilter = new ImageFilter();
     return imageFilter.Sobel(new Bitmap(image));
 }
 /// <summary>
 /// Blur filter
 /// </summary>
 /// <param name="image">The image.</param>
 /// <param name="rectangle">The rectangle.</param>
 /// <param name="blur">The blur.</param>
 /// <returns>Image.</returns>
 public static Image Blur(this Image image, Rectangle rectangle, int blur = 5)
 {
     ImageFilter imageFilter = new ImageFilter();
     return imageFilter.Blur(new Bitmap(image), rectangle, blur);
 }
        /// <summary>
        /// Overlay a color on a image
        /// </summary>
        /// <param name="image">The image.</param>
        /// <param name="brush">The brush.</param>
        /// <param name="alpha">The alpha.</param>
        /// <returns>Image.</returns>
        public static Image Overlay(this Image image, Brush brush, double alpha = 0.5)
        {
            Bitmap colorBitmap = new Bitmap(image.Width, image.Height);

            using (Graphics graph = Graphics.FromImage(colorBitmap))
            {
                Rectangle rectangle = new Rectangle(0, 0, colorBitmap.Width, colorBitmap.Height);
                graph.FillRectangle(brush, rectangle);
            }

            ImageFilter imageFilter = new ImageFilter();

            return imageFilter.Overlay(new Bitmap(image), colorBitmap, alpha);
        }
 /// <summary>
 /// Blur filter
 /// </summary>
 /// <param name="image">The image.</param>
 /// <param name="blur">The blur.</param>
 /// <returns>Image.</returns>
 public static Image Blur(this Image image, int blur = 5)
 {
     ImageFilter imageFilter = new ImageFilter();
     return imageFilter.Blur(new Bitmap(image), new Rectangle(0, 0, image.Width, image.Height), blur);
 }
 /// <summary>
 /// Overlay two images
 /// </summary>
 /// <param name="image">The image.</param>
 /// <param name="overlayingImage">The overlaying image.</param>
 /// <param name="alpha">The alpha.</param>
 /// <returns>Image.</returns>
 public static Image Overlay(this Image image, Image overlayingImage, double alpha = 0.5)
 {
     ImageFilter imageFilter = new ImageFilter();
     return imageFilter.Overlay(new Bitmap(image),  new Bitmap(overlayingImage), alpha);
 }
 /// <summary>
 /// Balance filter
 /// </summary>
 /// <param name="image">The image.</param>
 /// <param name="red">The red.</param>
 /// <param name="blue">The blue.</param>
 /// <param name="green">The green.</param>
 /// <returns>Image.</returns>
 public static Image Balance(this Image image, int red, int blue, int green)
 {
     ImageFilter imageFilter = new ImageFilter();
     return imageFilter.Balance(new Bitmap(image), red, blue, green);
 }
 /// <summary>
 /// Grayscale filter
 /// </summary>
 /// <param name="image">The image.</param>
 /// <returns>Image.</returns>
 public static Image Grayscale(this Image image)
 {
     ImageFilter imageFilter = new ImageFilter();
     return imageFilter.Grayscale(new Bitmap(image));
 }
        /// <summary>
        /// Erosion filter
        /// </summary>
        /// <param name="image">The image.</param>
        /// <param name="matrixSize">Size of the matrix.</param>
        /// <param name="applyBlue">if set to <c>true</c> [apply blue].</param>
        /// <param name="applyGreen">if set to <c>true</c> [apply green].</param>
        /// <param name="applyRed">if set to <c>true</c> [apply red].</param>
        /// <param name="edgeType">Type of the edge.</param>
        /// <returns>Image.</returns>
        public static Image Erosion(this Image image, int matrixSize, bool applyBlue = true, bool applyGreen = true, bool applyRed = true, MorphologyEdgeType edgeType = MorphologyEdgeType.None)
        {
            ImageFilter imageFilter = new ImageFilter();

            return imageFilter.DilateAndErodeFilter(new Bitmap(image), matrixSize, MorphologyType.Erosion, applyBlue, applyGreen, applyRed, edgeType);
        }
 /// <summary>
 /// Difference filter
 /// </summary>
 /// <param name="image">The image.</param>
 /// <param name="comparingImage">The comparing image.</param>
 /// <returns>Image.</returns>
 public static Image Difference(this Image image, Image comparingImage)
 {
     ImageFilter imageFilter = new ImageFilter();
     return imageFilter.Difference(new Bitmap(image), new Bitmap(comparingImage));
 }