Применение медианных фильтров и фильтров Винера к изображениям в C#

Редактирование изображений используется в различных приложениях для управления изображениями для дальнейшей обработки. Мы написали серию блогов, т. е. обрезка, вращение, размытие и т. д., которые помогут вам реализовать функции редактирования изображений в ваших приложениях. В этой статье мы покажем вам, как применять медианный и винеровский фильтры, которые обычно используются для шумоподавления и сглаживания изображений. Итак, давайте посмотрим, как программно применить фильтры медианы и Винера к изображению на C#.

C# API для применения медианных и винеровских фильтров изображений — скачать бесплатно

Aspose.Imaging for .NET — это замечательный API для реализации функций редактирования изображений в приложениях .NET. Мы будем использовать этот API для применения медианных и винеровских фильтров к изображениям. Вы можете либо скачать API, либо установить его из NuGet.

PM> Install-Package Aspose.Imaging

Применение медианного фильтра к изображению в C#

Медианный фильтр — это метод нелинейной цифровой фильтрации, который используется для уменьшения шума на изображениях. Ниже приведены шаги по применению медианного фильтра к изображению в C#.

  • Сначала загрузите изображение с помощью метода Image.Load().
  • Затем приведите изображение к типу RasterImage.
  • Создайте экземпляр класса MedianFilterOptions и инициализируйте его размером прямоугольника.
  • Примените медианный фильтр, используя метод RasterImage.Filter(Rectangle, MedianFilterOptions).
  • Наконец, сохраните полученное изображение с помощью метода RasterImage.Save().

В следующем примере кода показано, как применить медианный фильтр к изображению в C#.

// Загрузите зашумленное изображение 
using (Image image = Image.Load("jack.jpg"))
{
    // Вставьте изображение в RasterImage
    RasterImage rasterImage = image as RasterImage;
    if (rasterImage == null)
    {
        return;
    }

    // Создайте экземпляр класса MedianFilterOptions и установите размер
    MedianFilterOptions options = new MedianFilterOptions(4);
    
    // Применить фильтр и сохранить изображение
    rasterImage.Filter(image.Bounds, options);
    image.Save("jack_median.jpg");
}

Ниже представлено изображение до и после применения медианного фильтра.

Применить медианный фильтр к изображению C#

Применение фильтра Винера Гаусса к изображению в C#

Другим широко используемым методом минимизации аддитивного шума и размытия изображений является метод Гаусса Винера. Ниже приведены шаги по применению фильтра Винера Гаусса к изображению в C#.

  • Сначала загрузите изображение с помощью метода Image.Load().
  • Затем приведите изображение к типу RasterImage.
  • Создайте экземпляр класса GaussWienerFilterOptions и инициализируйте его размером радиуса и значением Smooth.
  • (Необязательно) Чтобы получить изображение в градациях серого, установите для свойства GaussWienerFilterOptions.Grayscale значение true.
  • Примените фильтр Гаусса Винера, используя метод RasterImage.Filter(Rectangle, GaussWienerFilterOptions).
  • Наконец, сохраните полученное изображение с помощью метода RasterImage.Save().

В следующем примере кода показано, как применить фильтр Винера Гаусса к изображению на C#.

// Загрузите зашумленное изображение 
using (Image image = Image.Load("jack.jpg"))
{
    // Вставьте изображение в RasterImage
    RasterImage rasterImage = image as RasterImage;
    if (rasterImage == null)
    {
        return;
    }

    // Создайте экземпляр класса GaussWienerFilterOptions и установите размер радиуса и значение сглаживания.
    GaussWienerFilterOptions options = new GaussWienerFilterOptions(12, 3);
    options.Grayscale = true;

    // Примените фильтр MedianFilterOptions к объекту RasterImage и сохраните полученное изображение.
    rasterImage.Filter(image.Bounds, options);
    image.Save("jack_guass.jpg");
}

Ниже приведено изображение до и после применения фильтра Винера Гаусса с опцией оттенков серого.

Примените фильтр Гаусса-Вайнера к шкале серого изображения

Ниже приведено изображение до и после применения фильтра Винера Гаусса без шкалы серого.

Примените цветовой фильтр Gauss Weiner к изображению

Применение фильтра Motion Wiener к изображению в C#

Винеровский фильтр движения используется для устранения размытия изображения, возникающего из-за движущихся объектов. Ниже приведены шаги по применению фильтра Винера движения к изображению в C#.

  • Сначала загрузите изображение с помощью метода Image.Load().
  • Затем приведите изображение к типу RasterImage.
  • Создайте экземпляр класса MotionWienerFilterOptions и инициализируйте его длиной, значением сглаживания и углом.
  • Примените фильтр Motion Wiener с помощью метода RasterImage.Filter(Rectangle, MotionWienerFilterOptions).
  • Наконец, сохраните полученное изображение с помощью метода RasterImage.Save().

В следующем примере кода показано, как применить фильтр Винера движения к изображению в C#.

// Загрузите зашумленное изображение 
using (Image image = Image.Load("jack.jpg"))
{
    // Вставьте изображение в RasterImage
    RasterImage rasterImage = image as RasterImage;
    if (rasterImage == null)
    {
        return;
    }

    // Создайте экземпляр класса MotionWienerFilterOptions и установите длину, значение сглаживания и угол
    MotionWienerFilterOptions options = new MotionWienerFilterOptions(50, 9, 90);
    options.Grayscale = true;

    // Примените фильтр MedianFilterOptions к объекту RasterImage и сохраните полученное изображение.
    rasterImage.Filter(image.Bounds, options);
    image.Save("jack_MotionWiener.jpg");
}
Применение фильтра Motion Weiner к изображению в C#

C# Median и Wiener Image Filtering API — бесплатная лицензия

Вы можете получить бесплатную временную лицензию и применять медианный и винеровский фильтры к изображениям без ограничений оценки.

Вывод

В этой статье вы узнали, как применять медианный фильтр и фильтр Винера к изображениям в C#. Кроме того, мы рассмотрели, как уменьшить шум движущихся объектов на изображении. Вы можете легко использовать эти функции в своем приложении C# для интеграции возможностей редактирования изображений.

Читать далее

Вы можете узнать больше об API обработки изображений .NET, используя документацию. Кроме того, вы можете поделиться с нами своими вопросами через наш форум.

Смотрите также