Пример #1
0
        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);
        }
Пример #2
0
        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)";
        }
Пример #3
0
        // 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);
            }
        }
Пример #4
0
        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);
        }
Пример #6
0
        // 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));
        }
Пример #7
0
        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);
        }
Пример #9
0
        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);
        }
Пример #10
0
        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)";
        }