在 Java 中对图像应用中值和维纳滤波器

previous blog post 中,我们演示了如何为图像添加模糊效果。今天,我们将向您展示如何应用中值和维纳滤波器,它们通常用于对图像进行去噪和平滑处理。因此,让我们看看如何在 Java 中以编程方式将中值和维纳过滤器应用于图像。

用于应用中值和维纳图像过滤器的 Java API - 免费下载

要对图像应用中值和维纳滤波器,我们将使用 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 中将中值滤波器应用于图像的步骤。

以下代码示例展示了如何将中值滤波器应用于 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

将 Gauss Wiener 滤波器应用于 Java 中的图像

Gauss wiener 是另一种常用的图像分级方法,通过最小化加性噪声和模糊。以下是将 gauss wiener 过滤器应用于 Java 中的图像的步骤。

以下代码示例展示了如何将 gauss wiener 过滤器应用于 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 wiener 过滤器之前和之后的图像。

将 Gauss Weiner 滤波器应用于图像灰度

下图是在没有灰度化的情况下应用 gauss wiener 滤波器之前和之后的图像。

将 Gauss Weiner 滤色器应用于图像

将 Motion Wiener 滤波器应用于 Java 中的图像

维纳运动滤波器用于消除由于移动物体而产生的图像模糊。以下是在 Java 中将运动维纳过滤器应用于图像的步骤。

以下代码示例展示了如何将运动维纳滤镜应用于 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(true);

// 将 MotionWienerFilterOptions 过滤器应用于 RasterImage 对象。
rasterImage.filter(image.getBounds(), options);

// 保存生成的图像
image.save("Jac_motion_weiner.jpg");
将 Motion Weiner 过滤器应用于 Java 中的图像

Java Median and Wiener Image Filtering API - 获取免费许可证

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

结论

在本文中,您学习了如何将中值和维纳滤波器应用于 Java 中的图像。此外,我们还介绍了如何减少图像中移动物体的噪声。您可以在 Java 应用程序中轻松使用这些功能来集成图像编辑功能。

阅读更多

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

也可以看看