public static Image <Bgr, byte> FastGuidedFilterEnchacement(Image <Bgr, byte> image) { Image <Bgr, byte> result; var bmp = image.Bitmap; var fastGuidedFilter = new FastGuidedFilter { KernelSize = 16, Epsilon = 0.16f, SubSamplingRatio = 0.25f, OverlayImage = (Bitmap)bmp.Clone() }; var guidedImage = fastGuidedFilter.Apply(bmp); var subtracted = new AForge.Imaging.Filters.Subtract(guidedImage).Apply(fastGuidedFilter.OverlayImage); guidedImage.Dispose(); //var mul = 100; //var Multiply = FastGuidedFilter.GetFilledImage( // subtracted.Width, subtracted.Height, // subtracted.PixelFormat, Color.FromArgb(mul, mul, mul)); //new Multiply(Multiply).ApplyInPlace(subtracted); //Multiply.Dispose(); new AForge.Imaging.Filters.Add(subtracted).ApplyInPlace(fastGuidedFilter.OverlayImage); subtracted.Dispose(); fastGuidedFilter.OverlayImage.Dispose(); result = new Image <Bgr, byte>(fastGuidedFilter.OverlayImage); return(result); }
private void button2_Click(object sender, EventArgs e) { _elapsedTime.Restart(); using (var bmp = AForge.Imaging.Image.Convert8bppTo16bpp((Bitmap)pictureBox1.Image)) { var fastGuidedFilter = new FastGuidedFilter { KernelSize = 8, Epsilon = 0.02f, SubSamplingRatio = 0.25f, OverlayImage = (Bitmap)bmp.Clone() }; fastGuidedFilter.ApplyInPlace(bmp); fastGuidedFilter.OverlayImage.Dispose(); pictureBox2.Image?.Dispose(); pictureBox2.Image = AForge.Imaging.Image.Convert16bppTo8bpp(bmp); } _elapsedTime.Stop(); Text = $"{_elapsedTime.Elapsed.Milliseconds} (ms)"; }
// On Filters->Texture private void fastGuidedFilterFiltersItem_Click(object sender, EventArgs e) { ClearCurrentImage(); // Spreading pixels values from 0 to 65535 instead of byte values for less loosing data when applying the filter. // Of course, we could use the source image in 8-bit (easiest and fastest way but slightly losing data). using (var bmp = Accord.Imaging.Image.Convert8bppTo16bpp(sourceImage)) { var fastGuidedFilter = new FastGuidedFilter { KernelSize = 8, Epsilon = 0.02f, SubSamplingRatio = 0.25f, OverlayImage = (Bitmap)bmp.Clone() }; // apply filter fastGuidedFilter.ApplyInPlace(bmp); fastGuidedFilter.OverlayImage.Dispose(); if (pictureBox.Image != null) { pictureBox.Image.Dispose(); } // display filtered image pictureBox.Image = Accord.Imaging.Image.Convert16bppTo8bpp(bmp); } }
public static Bitmap FastGuidedFilterEnchacement(Bitmap bmp) { var fastGuidedFilter = new FastGuidedFilter { KernelSize = 16, Epsilon = 0.16f, SubSamplingRatio = 0.25f, OverlayImage = (Bitmap)bmp.Clone() }; var guidedImage = fastGuidedFilter.Apply(bmp); var subtracted = new Subtract(guidedImage).Apply(fastGuidedFilter.OverlayImage); guidedImage.Dispose(); //var mul = 100; //var Multiply = FastGuidedFilter.GetFilledImage( // subtracted.Width, subtracted.Height, // subtracted.PixelFormat, Color.FromArgb(mul, mul, mul)); //new Multiply(Multiply).ApplyInPlace(subtracted); //Multiply.Dispose(); new Add(subtracted).ApplyInPlace(fastGuidedFilter.OverlayImage); subtracted.Dispose(); return(AForge.Imaging.Image.Convert16bppTo8bpp(fastGuidedFilter.OverlayImage)); }
public void ApplyTest_bw() { Bitmap image = Accord.Imaging.Image.Clone(Properties.Resources.lena512); Bitmap overlay = Accord.Imaging.Image.Clone(Properties.Resources.lena512); Assert.AreEqual(image.PixelFormat, PixelFormat.Format8bppIndexed); var fg = new FastGuidedFilter(overlay); // Apply the filter Bitmap result = fg.Apply(image); // ImageBox.Show(result); Assert.IsNotNull(result); }
// Use method from forked Accord v.3.0.2 repository that uses AForge.Net // https://github.com/hzawary/CSharpDemoFastGuidedFilter public static Bitmap FastGuidedFilter(Bitmap bmp) { var fastGuidedFilter = new FastGuidedFilter { KernelSize = 8, Epsilon = 0.02f, SubSamplingRatio = 0.25f, OverlayImage = (Bitmap)bmp.Clone() }; fastGuidedFilter.ApplyInPlace(bmp); fastGuidedFilter.OverlayImage.Dispose(); return(AForge.Imaging.Image.Convert16bppTo8bpp(bmp)); }
public void ApplyTest_bw() { Bitmap image = Accord.Imaging.Image.FromFile(Path.Combine(basePath, "lena512.bmp")); Bitmap overlay = Accord.Imaging.Image.FromFile(Path.Combine(basePath, "lena512.bmp")); Assert.AreEqual(image.PixelFormat, PixelFormat.Format8bppIndexed); var fg = new FastGuidedFilter(overlay); // Apply the filter Bitmap result = fg.Apply(image); // ImageBox.Show(result); Assert.IsNotNull(result); }
public void ApplyTest_color32() { Bitmap image = Accord.Imaging.Image.Clone(Properties.Resources.lena_color); Bitmap overlay = Accord.Imaging.Image.Clone(Properties.Resources.lena_color); image.MakeTransparent(); overlay.MakeTransparent(); Assert.AreEqual(image.PixelFormat, PixelFormat.Format32bppArgb); var fg = new FastGuidedFilter(overlay); // Apply the filter Bitmap result = fg.Apply(image); // ImageBox.Show(result); Assert.IsNotNull(result); }
public void ApplyTest_color32() { Bitmap image = Accord.Imaging.Image.FromFile(Path.Combine(basePath, "lena_color.jpg")); Bitmap overlay = Accord.Imaging.Image.FromFile(Path.Combine(basePath, "lena_color.jpg")); image.MakeTransparent(); overlay.MakeTransparent(); Assert.AreEqual(image.PixelFormat, PixelFormat.Format32bppArgb); var fg = new FastGuidedFilter(overlay); // Apply the filter Bitmap result = fg.Apply(image); // ImageBox.Show(result); Assert.IsNotNull(result); }
private void button3_Click(object sender, EventArgs e) { button2_Click(sender, e); _elapsedTime.Restart(); using (var bmp = AForge.Imaging.Image.Convert8bppTo16bpp((Bitmap)pictureBox2.Image)) { var fastGuidedFilter = new FastGuidedFilter { KernelSize = 16, Epsilon = 0.16f, SubSamplingRatio = 0.25f, OverlayImage = (Bitmap)bmp.Clone() }; var guidedImage = fastGuidedFilter.Apply(bmp); var subtracted = new Subtract(guidedImage).Apply(fastGuidedFilter.OverlayImage); guidedImage.Dispose(); //var mul = 100; //var Multiply = FastGuidedFilter.GetFilledImage( // subtracted.Width, subtracted.Height, // subtracted.PixelFormat, Color.FromArgb(mul, mul, mul)); //new Multiply(Multiply).ApplyInPlace(subtracted); //Multiply.Dispose(); new Add(subtracted).ApplyInPlace(fastGuidedFilter.OverlayImage); subtracted.Dispose(); pictureBox2.Image?.Dispose(); pictureBox2.Image = AForge.Imaging.Image.Convert16bppTo8bpp(fastGuidedFilter.OverlayImage); fastGuidedFilter.OverlayImage.Dispose(); } _elapsedTime.Stop(); Text = $"{_elapsedTime.Elapsed.Milliseconds} (ms)"; }