Застосування фільтрів Median і Wiener до зображень у 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 та ініціалізуйте його розміром радіуса та згладженим значенням.
  • (Необов’язково) Щоб отримати зображення у відтінках сірого, установіть для властивості 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");
}

Нижче наведено зображення до та після застосування Вінер-фільтра Гауса з опцією відтінків сірого.

Застосуйте фільтр Гауса Вайнера до відтінків сірого зображення

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

Застосуйте кольоровий фільтр Гауса Вайнера до зображення

Застосування фільтра Motion Wiener до зображення в C#

Вінер-фільтр руху використовується для усунення розмиття зображення, яке виникає через рух об’єктів. Нижче наведено кроки, щоб застосувати фільтр руху Вінера до зображення в C#.

  • Спочатку завантажте зображення за допомогою методу Image.Load().
  • Потім переведіть зображення до типу RasterImage.
  • Створіть екземпляр класу MotionWienerFilterOptions та ініціалізуйте його довжиною, згладженим значенням і кутом.
  • Застосуйте фільтр руху Вінера за допомогою методу 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 за допомогою документації. Крім того, ви можете поділитися своїми запитами з нами через наш форум.

Дивись також