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

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

API Java для применения фильтров изображений Median и Wiener — скачать бесплатно

Чтобы применить медианный фильтр и фильтр Винера к изображениям, мы будем использовать Aspose.Imaging for Java. Это мощный API для редактирования изображений, позволяющий манипулировать изображениями из приложений Java. Вы можете либо скачать API, либо установить его, используя следующие конфигурации Maven.

<repository>
    <id>AsposeJavaAPI</id>
    <name>Aspose Java API</name>
    <url>https://repository.aspose.com/repo/</url>
</repository> 

<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-imaging</artifactId>
    <version>22.9</version>
</dependency>

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

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

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

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

// Загрузите зашумленное изображение
Image image = Image.load("jack.jpg");

// вставить изображение в RasterImage
RasterImage rasterImage = (RasterImage) image;

if (rasterImage == null) {
	return;
}

// Создайте экземпляр класса MedianFilterOptions и установите размер.
MedianFilterOptions options = new MedianFilterOptions(4);

// Примените фильтр MedianFilterOptions к объекту RasterImage.
rasterImage.filter(image.getBounds(), options);

// Сохраните полученное изображение
image.save("Jac_median_denoise.jpg");

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

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

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

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

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

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

// Загрузите изображение
Image image = Image.load("jack.jpg");

// вставить изображение в RasterImage
RasterImage rasterImage = (RasterImage) image;

if (rasterImage == null) {
	return;
}

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

// Примените фильтр GaussWienerFilterOptions к объекту RasterImage.
rasterImage.filter(image.getBounds(), options);

// Сохраните полученное изображение
image.save("Jac_gauss_weiner.jpg");

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

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

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

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

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

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

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

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

// Загрузите изображение
Image image = Image.load("jack.jpg");

// вставить изображение в RasterImage
RasterImage rasterImage = (RasterImage) image;

if (rasterImage == null) {
	return;
}

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

// Примените фильтр MotionWienerFilterOptions к объекту RasterImage.
rasterImage.filter(image.getBounds(), options);

// Сохраните полученное изображение
image.save("Jac_motion_weiner.jpg");
Примените фильтр Motion Weiner к изображению в Java

Java Median и Wiener Image Filtering API — получите бесплатную лицензию

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

Вывод

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

Читать далее

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

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