Aplicar filtros de mediana e Wiener a imagens em Python

Em vários casos, você precisa reduzir o ruído das imagens para melhorar sua qualidade visual. Isso é útil quando você deseja melhorar a clareza geral de suas imagens. Além disso, a redução de ruído é usada para pré-processar imagens antes de análises adicionais, como reconhecimento, segmentação e assim por diante. Os filtros de mediana e wiener são comumente usados para reduzir o ruído e suavizar as imagens. Então, vamos dar uma olhada em como aplicar filtros de mediana e wiener em imagens em Python.

Biblioteca Python para aplicar filtros de imagem de mediana e Wiener

Para aplicar os filtros de mediana e wiener em imagens, usaremos Aspose.Imaging for Python - uma poderosa biblioteca de processamento de imagens que permite manipular imagens sem esforço. Para usar a biblioteca, você pode baixar ou instalá-la usando o seguinte comando.

> pip install aspose-imaging-python-net 

Aplicar filtro mediano a uma imagem em Python

O filtro mediano é um método de redução de ruído comumente usado que usa uma técnica de filtragem digital não linear. A seguir estão as etapas para aplicar um filtro mediano a uma imagem em Python.

  • Primeiro, carregue a imagem usando o método Image.load().
  • Em seguida, converta a imagem para o tipo RasterImage.
  • Crie uma instância da classe MedianFilterOptions e inicialize-a com o tamanho do retângulo.
  • Aplique o filtro mediano usando o método RasterImage.filter(Rectangle, MedianFilterOptions).
  • Finalmente, salve a imagem filtrada usando o método RasterImage.save().

O exemplo de código a seguir mostra como aplicar um filtro mediano a uma imagem em 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
# Carregue a imagem com ruído 
with Image.load(os.path.join(data_dir, "template.gif")) as image:
	# Transmita a imagem para RasterImage
	if aspycore.is_assignable(image, RasterImage):
		raster_image = aspycore.as_of(image, RasterImage)
		# Crie uma instância da classe MedianFilterOptions e defina o tamanho, aplique o filtro MedianFilterOptions ao objeto RasterImage e salve a imagem resultante
		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"))

Abaixo está a imagem antes e depois de aplicar o filtro de mediana.

Aplicar filtro mediano à imagem Python

Aplicar filtro Gauss Wiener a uma imagem em Python

Gauss wiener é outro método comumente usado para aumentar a clareza e reduzir o ruído nas imagens. Vamos dar uma olhada nas etapas necessárias para aplicar o filtro Gauss wiener a uma imagem em Python.

  • Primeiro, carregue a imagem usando o método Image.load().
  • Em seguida, converta a imagem para o tipo RasterImage.
  • Crie uma instância da classe GaussWienerFilterOptions e inicialize-a com o tamanho do raio e valor suave.
  • (Opcional) Para obter uma imagem em tons de cinza, defina a propriedade GaussWienerFilterOptions.grayscale como true.
  • Aplique o filtro Gauss Wiener usando o método RasterImage.filter(Rectangle, GaussWienerFilterOptions).
  • Finalmente, salve a imagem resultante usando o método RasterImage.save().

O exemplo de código a seguir mostra como aplicar um filtro Gauss wiener a uma imagem em 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
# Carregar a imagem
with Image.load(os.path.join(data_dir, "template.jpg")) as image:
	# Transmita a imagem para RasterImage
	if aspycore.is_assignable(image, RasterImage):
		raster_image = aspycore.as_of(image, RasterImage)
		# Crie uma instância da classe GaussWienerFilterOptions e defina o tamanho do raio e o valor suave.
		options = GaussWienerFilterOptions(12, 3)
		options.grayscale = True
		# Aplique o filtro MedianFilterOptions ao objeto RasterImage e salve a imagem resultante
		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"))

Abaixo está a imagem antes e depois de aplicar o filtro Gauss wiener com a opção de tons de cinza.

Aplique o filtro Gauss Weiner à escala de cinza da imagem

A seguir está a imagem antes e depois de aplicar o filtro Gauss wiener sem escala de cinza.

Aplicar filtro de cores Gauss Weiner à imagem

Filtro Motion Wiener para uma imagem em Python

O filtro Motion Wiener é usado para reduzir o desfoque ou a degradação causada pelo desfoque de movimento. Esse tipo de desfoque acontece devido ao movimento relativo entre a câmera e o objeto. A seguir estão as etapas para aplicar o filtro motion wiener a uma imagem em Python.

  • Primeiro, carregue a imagem usando o método Image.load().
  • Em seguida, converta a imagem para o tipo RasterImage.
  • Crie uma instância da classe MotionWienerFilterOptions e inicialize-a com comprimento, valor suave e ângulo.
  • Aplique o filtro de movimento wiener usando o método RasterImage.filter(Rectangle, MotionWienerFilterOptions).
  • Finalmente, salve a imagem resultante usando o método RasterImage.save().

O exemplo de código a seguir mostra como aplicar um filtro de movimento a uma imagem em 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
# Carregar a imagem
with Image.load(os.path.join(data_dir, "template.gif")) as image:
	# Transmita a imagem para RasterImage
	if aspycore.is_assignable(image, RasterImage):
		raster_image = aspycore.as_of(image, RasterImage)
		# Crie uma instância da classe MotionWienerFilterOptions e defina o comprimento, o valor de suavização e o ângulo.
		options = MotionWienerFilterOptions(50, 9, 90)
		options.grayscale = True
		# Aplique o filtro MedianFilterOptions ao objeto RasterImage e salve a imagem resultante
		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"))
Aplicar filtro Motion Weiner à imagem em Python

Biblioteca gratuita de filtros de imagem Python

Você pode obter uma licença temporária gratuita e aplicar filtros de mediana e wiener às imagens sem limitações de avaliação.

Aplicativo gratuito de edição de imagens on-line

Use nossa ferramenta gratuita de edição de imagens baseada na web para editar suas imagens online. Este editor de imagem utiliza Aspose.Imaging para Python e não pede para você criar uma conta.

Conclusão

Neste artigo, você aprendeu como aplicar filtros de mediana e wiener a imagens em Python. As etapas e os exemplos de código demonstraram como aplicar diferentes tipos de filtros para reduzir o ruído de imagens programaticamente. Além disso, abordamos como reduzir o ruído de objetos em movimento em uma imagem usando um filtro de movimento. Por fim, fornecemos a você um aplicativo de edição de imagens on-line totalmente gratuito e você pode usá-lo sem se inscrever.

Você pode explorar mais sobre a biblioteca de processamento de imagem Python usando documentação. Além disso, você pode compartilhar suas dúvidas conosco através do nosso fórum.

Veja também