Zastosuj filtry Mediana i Wiener do obrazów w Python

W różnych przypadkach konieczne jest odszumienie obrazów, aby poprawić ich jakość wizualną. Jest to przydatne, gdy chcesz poprawić ogólną przejrzystość obrazów. Odszumianie służy również do wstępnego przetwarzania obrazów przed dalszą analizą, taką jak rozpoznawanie, segmentacja i tak dalej. Filtry medianowe i filtry Wienera są powszechnie używane do odszumiania i wygładzania obrazów. Przyjrzyjmy się więc, jak zastosować filtry mediany i Wienera do obrazów w Python.

Biblioteka Python do stosowania filtrów obrazu Mediana i Wienera

Aby zastosować filtry mediany i Wienera na obrazach, użyjemy Aspose.Imaging for Python — potężnej biblioteki do przetwarzania obrazów, która pozwala bez wysiłku manipulować obrazami. Aby skorzystać z biblioteki, możesz pobrać lub zainstalować ją za pomocą następującego polecenia.

> pip install aspose-imaging-python-net 

Zastosuj filtr mediany do obrazu w Python

Filtr medianowy jest powszechnie stosowaną metodą odszumiania, która wykorzystuje nieliniową technikę filtrowania cyfrowego. Poniżej przedstawiono kroki, aby zastosować filtr mediany do obrazu w Python.

  • Najpierw załaduj obraz za pomocą metody Image.load().
  • Następnie rzutuj obraz na typ RasterImage.
  • Utwórz instancję klasy MedianFilterOptions i zainicjuj ją rozmiarem prostokąta.
  • Zastosuj filtr mediany przy użyciu metody RasterImage.filter(Rectangle, MedianFilterOptions).
  • Na koniec zapisz przefiltrowany obraz za pomocą metody RasterImage.save().

Poniższy przykładowy kod pokazuje, jak zastosować filtr mediany do obrazu w języku 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
# Załaduj zaszumiony obraz 
with Image.load(os.path.join(data_dir, "template.gif")) as image:
	# Prześlij obraz do RasterImage
	if aspycore.is_assignable(image, RasterImage):
		raster_image = aspycore.as_of(image, RasterImage)
		# Utwórz instancję klasy MedianFilterOptions i ustaw rozmiar, zastosuj filtr MedianFilterOptions do obiektu RasterImage i zapisz wynikowy obraz
		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"))

Poniżej znajduje się obraz przed i po zastosowaniu filtra medianowego.

Zastosuj filtr mediany do Python obrazu

Zastosuj filtr Wienera Gaussa do obrazu w Python

Gauss Wiener to kolejna powszechnie stosowana metoda zwiększania wyrazistości i redukcji szumów na obrazach. Rzućmy okiem na kroki wymagane do zastosowania filtra Wienera Gaussa do obrazu w Python.

  • Najpierw załaduj obraz za pomocą metody Image.load().
  • Następnie rzutuj obraz na typ RasterImage.
  • Utwórz instancję klasy GaussWienerFilterOptions i zainicjuj ją rozmiarem promienia i wartością wygładzania.
  • (Opcjonalnie) Aby uzyskać obraz w skali szarości, ustaw właściwość GaussWienerFilterOptions.grayscale na wartość true.
  • Zastosuj filtr Wienera Gaussa za pomocą metody RasterImage.filter(Rectangle, GaussWienerFilterOptions).
  • Na koniec zapisz wynikowy obraz za pomocą metody RasterImage.save().

Poniższy przykładowy kod pokazuje, jak zastosować filtr Wienera Gaussa do obrazu w języku 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
# Załaduj obraz
with Image.load(os.path.join(data_dir, "template.jpg")) as image:
	# Prześlij obraz do RasterImage
	if aspycore.is_assignable(image, RasterImage):
		raster_image = aspycore.as_of(image, RasterImage)
		# Utwórz instancję klasy GaussWienerFilterOptions i ustaw rozmiar promienia oraz wartość wygładzania.
		options = GaussWienerFilterOptions(12, 3)
		options.grayscale = True
		# Zastosuj filtr MedianFilterOptions do obiektu RasterImage i zapisz wynikowy obraz
		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"))

Poniżej znajduje się obraz przed i po zastosowaniu filtra Wienera Gaussa z opcją skali szarości.

Zastosuj filtr Gaussa Weinera do skalowania szarości obrazu

Poniżej przedstawiono obraz przed i po zastosowaniu filtra Wienera Gaussa bez skali szarości.

Zastosuj filtr kolorów Gaussa Weinera do obrazu

Motion Wiener Filter dla obrazu w Python

Filtr wienera ruchu służy do zmniejszenia rozmycia lub degradacji spowodowanej rozmyciem ruchu. Ten rodzaj rozmycia występuje z powodu względnego ruchu między aparatem a obiektem. Poniżej przedstawiono kroki, aby zastosować filtr wienera ruchu do obrazu w Python.

  • Najpierw załaduj obraz za pomocą metody Image.load().
  • Następnie rzutuj obraz na typ RasterImage.
  • Utwórz instancję klasy MotionWienerFilterOptions i zainicjuj ją długością, wartością wygładzenia i kątem.
  • Zastosuj filtr ruchu Wienera przy użyciu metody RasterImage.filter(Rectangle, MotionWienerFilterOptions).
  • Na koniec zapisz wynikowy obraz za pomocą metody RasterImage.save().

Poniższy przykładowy kod pokazuje, jak zastosować filtr wiener ruchu do obrazu w języku 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
# Załaduj obraz
with Image.load(os.path.join(data_dir, "template.gif")) as image:
	# Prześlij obraz do RasterImage
	if aspycore.is_assignable(image, RasterImage):
		raster_image = aspycore.as_of(image, RasterImage)
		# Utwórz instancję klasy MotionWienerFilterOptions i ustaw długość, wartość wygładzania oraz kąt.
		options = MotionWienerFilterOptions(50, 9, 90)
		options.grayscale = True
		# Zastosuj filtr MedianFilterOptions do obiektu RasterImage i zapisz wynikowy obraz
		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"))
Zastosuj filtr Motion Weiner do obrazu w Python

Bezpłatna biblioteka filtrów obrazów Python

Możesz uzyskać bezpłatną tymczasową licencję i stosować filtry mediany i Wienera do obrazów bez ograniczeń oceny.

Bezpłatna aplikacja do edycji obrazów online

Skorzystaj z naszego bezpłatnego internetowego narzędzia do edycji obrazów, aby edytować swoje obrazy online. Ten edytor obrazów wykorzystuje Aspose.Imaging for Python i nie prosi o utworzenie konta.

Wniosek

W tym artykule nauczyłeś się, jak stosować filtry mediany i Wienera do obrazów w Python. Kroki i przykłady kodu pokazały, jak zastosować różne typy filtrów w celu programistycznego odszumiania obrazów. Ponadto omówiliśmy, jak zredukować szum poruszających się obiektów na obrazie za pomocą filtra ruchu Wienera. Wreszcie, udostępniliśmy Ci aplikację do edycji obrazów online, która jest całkowicie bezpłatna i możesz z niej korzystać bez rejestracji.

Możesz dowiedzieć się więcej o bibliotece przetwarzania obrazów w Python, korzystając z documentation. Możesz także podzielić się z nami swoimi pytaniami za pośrednictwem naszego forum.

Zobacz też