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);
}
}
}