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

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

Библиотека Python для применения фильтров медианных и винеровских изображений

Чтобы применить медианный и винеровский фильтры к изображениям, мы будем использовать Aspose.Imaging for Python — мощную библиотеку обработки изображений, позволяющую без труда манипулировать изображениями. Чтобы использовать библиотеку, вы можете либо скачать, либо установить ее с помощью следующей команды.

> pip install aspose-imaging-python-net 

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

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

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

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

import aspose.pycore as aspycore
from aspose.imaging import Image, RasterImage
from aspose.imaging.imagefilters.filteroptions import MedianFilterOptions
import os


if 'TEMPLATE_DIR' in os.environ:
	templates_folder = os.environ['TEMPLATE_DIR']
else:
	templates_folder = r"C:\Users\USER\Downloads\templates"

delete_output = 'SAVE_OUTPUT' not in os.environ
data_dir = templates_folder
# Загрузите зашумленное изображение 
with Image.load(os.path.join(data_dir, "template.gif")) as image:
	# Вставьте изображение в RasterImage
	if aspycore.is_assignable(image, RasterImage):
		raster_image = aspycore.as_of(image, RasterImage)
		# Создайте экземпляр класса MedianFilterOptions и установите размер, примените фильтр MedianFilterOptions к объекту RasterImage и сохраните полученное изображение.
		options = MedianFilterOptions(4)
		raster_image.filter(image.bounds, options)
		image.save(os.path.join(data_dir, "result.gif"))

if delete_output:
	os.remove(os.path.join(data_dir, "result.gif"))

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

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

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

Винер Гаусса — еще один широко используемый метод повышения четкости и уменьшения шума на изображениях. Давайте посмотрим на шаги, необходимые для применения фильтра Винера Гаусса к изображению в Python.

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

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

import aspose.pycore as aspycore
from aspose.imaging import Image, RasterImage
from aspose.imaging.imagefilters.filteroptions import GaussWienerFilterOptions
import os


if 'TEMPLATE_DIR' in os.environ:
	templates_folder = os.environ['TEMPLATE_DIR']
else:
	templates_folder = r"C:\Users\USER\Downloads\templates"

delete_output = 'SAVE_OUTPUT' not in os.environ
data_dir = templates_folder
# Загрузите изображение
with Image.load(os.path.join(data_dir, "template.jpg")) as image:
	# Вставьте изображение в RasterImage
	if aspycore.is_assignable(image, RasterImage):
		raster_image = aspycore.as_of(image, RasterImage)
		# Создайте экземпляр класса GaussWienerFilterOptions и установите размер радиуса и значение сглаживания.
		options = GaussWienerFilterOptions(12, 3)
		options.grayscale = True
		# Примените фильтр MedianFilterOptions к объекту RasterImage и сохраните полученное изображение.
		raster_image.filter(image.bounds, options)
		image.save(os.path.join(data_dir, "result.jpg"))

if delete_output:
	os.remove(os.path.join(data_dir, "result.jpg"))

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

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

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

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

Фильтр Motion Wiener для изображения в Python

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

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

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

import aspose.pycore as aspycore
from aspose.imaging import Image, RasterImage
from aspose.imaging.imagefilters.filteroptions import MotionWienerFilterOptions
import os


if 'TEMPLATE_DIR' in os.environ:
	templates_folder = os.environ['TEMPLATE_DIR']
else:
	templates_folder = r"C:\Users\USER\Downloads\templates"

delete_output = 'SAVE_OUTPUT' not in os.environ
data_dir = templates_folder
# Загрузите изображение
with Image.load(os.path.join(data_dir, "template.gif")) as image:
	# Вставьте изображение в RasterImage
	if aspycore.is_assignable(image, RasterImage):
		raster_image = aspycore.as_of(image, RasterImage)
		# Создайте экземпляр класса MotionWienerFilterOptions и установите длину, значение сглаживания и угол.
		options = MotionWienerFilterOptions(50, 9, 90)
		options.grayscale = True
		# Примените фильтр MedianFilterOptions к объекту RasterImage и сохраните полученное изображение.
		raster_image.filter(image.bounds, options)
		image.save(os.path.join(data_dir, "result.gif"))

if delete_output:
	os.remove(os.path.join(data_dir, "result.gif"))
Применение фильтра Motion Weiner к изображению в Python

Бесплатная библиотека фильтров изображений Python

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

Бесплатное онлайн-приложение для редактирования изображений

Используйте наш бесплатный веб-инструмент для редактирования изображений, чтобы редактировать свои изображения в Интернете. Этот редактор изображений использует Aspose.Imaging for Python и не требует создания учетной записи.

Заключение

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

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

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