在 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 类的实例并使用半径大小和平滑值对其进行初始化。
  • (可选)要获取灰度图像,请将 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"))

下面是使用灰度选项应用高斯维纳滤波器之前和之后的图像。

将高斯韦纳滤波器应用于图像灰度化

以下是应用高斯维纳滤波器(未进行灰度化)之前和之后的图像。

将高斯韦纳滤色片应用于图像

Python 中图像的运动维纳滤波器

运动维纳滤波器用于减少运动模糊引起的模糊或退化。这种模糊的发生是由于相机和物体之间的相对运动。以下是在 Python 中将运动维纳滤波器应用于图像的步骤。

  • 首先,使用 Image.load() 方法加载图像。
  • 然后,将图像转换为 RasterImage 类型。
  • 创建 MotionWienerFilterOptions 类的实例并使用长度、平滑值和角度对其进行初始化。
  • 使用 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"))
在 Python 中将 Motion Weiner 滤波器应用于图像

免费的 Python 图像过滤器库

您可以获得免费的临时许可证并将中值和维纳滤波器应用于图像,而不受评估限制。

免费在线图像编辑应用程序

使用我们的免费的基于网络的图像编辑工具 在线编辑您的图像。该图像编辑器利用 Aspose.Imaging for Python,不会要求您创建帐户。

结论

在本文中,您学习了如何在 Python 中将中值滤波器和维纳滤波器应用于图像。这些步骤和代码示例演示了如何应用不同类型的滤波器以编程方式对图像进行去噪。此外,我们还介绍了如何使用运动维纳滤波器减少图像中移动物体的噪声。最后,我们为您提供了一个完全免费的在线图像编辑应用程序,您无需注册即可使用它。

您可以使用 文档 探索有关 Python 图像处理库的更多信息。此外,您还可以通过我们的论坛与我们分享您的疑问。

也可以看看