Example #1
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);
            }
        }
Example #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)";
        }
        // 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));
        }