应用中值滤波器和维纳滤波器
应用中值滤波器和维纳滤波器
中值滤波器是一种非线性数字滤波技术,通常用于去除噪声。这种噪声减少是用于改善后续处理结果的典型预处理步骤。维纳滤波器是针对受到附加噪声和模糊影响的图像而言的均方误差(MSE)最佳稳态线性滤波器。使用Aspose.PSD for Java API,开发人员可以对图像应用中值滤波器进行去噪,并可以对图像应用高斯维纳滤波器。本文演示了如何将中值滤波器和高斯维纳滤波器应用于图像。
应用中值滤波器
Aspose.PSD提供了MedianFilterOptions类,用于在RasterImage上应用滤波器。下面提供的代码片段演示了如何将中值滤波器应用于光栅图像。
String dataDir = Utils.getDataDir(ApplyMedianAndWienerFilters.class) + "Conversion/"; | |
String sourceFile = dataDir + "sample.psd"; | |
String destName = dataDir + "median_test_denoise_out.gif"; | |
try (Image image = Image.load(sourceFile); | |
// Cast the image into RasterImage | |
RasterImage rasterImage = (RasterImage) image) { | |
if (rasterImage == null) { | |
return; | |
} | |
// Create an instance of MedianFilterOptions class and set the size, Apply MedianFilterOptions filter to RasterImage object and Save the resultant image | |
MedianFilterOptions options = new MedianFilterOptions(4); | |
rasterImage.filter(image.getBounds(), options); | |
image.save(destName, new GifOptions()); | |
} |
应用高斯维纳滤波器
Aspose.PSD提供了GaussWienerFilterOptions类,用于在RasterImage上应用滤波器。下面提供的代码片段演示了如何将高斯维纳滤波器应用于光栅图像。
String dataDir = Utils.getDataDir(ApplyGausWienerFilters.class) + "Conversion/"; | |
String sourceFile = dataDir + "sample.psd"; | |
String destName = dataDir + "gauss_wiener_out.gif"; | |
try (Image image = Image.load(sourceFile); | |
RasterImage rasterImage = (RasterImage) image) { | |
if (rasterImage == null) { | |
return; | |
} | |
// Create an instance of GaussWienerFilterOptions class and set the radius size and smooth value. | |
GaussWienerFilterOptions options = new GaussWienerFilterOptions(12, 3); | |
options.setGrayscale(true); | |
// Apply MedianFilterOptions filter to RasterImage object and Save the resultant image | |
rasterImage.filter(image.getBounds(), options); | |
image.save(destName, new GifOptions()); | |
} |
应用有色图像的高斯维纳滤波器
Aspose.PSD还为彩色图像提供了GaussWienerFilterOptions。下面提供的代码片段演示了如何将高斯维纳滤波器应用于彩色图像。
String dataDir = Utils.getDataDir(ApplyGausWienerFiltersForColorImage.class) + "Conversion/"; | |
String sourceFile = dataDir + "sample.psd"; | |
String destName = dataDir + "gauss_wiener_color_out.gif"; | |
try (Image image = Image.load(sourceFile); | |
// Cast the image into RasterImage | |
RasterImage rasterImage = (RasterImage) image) { | |
if (rasterImage == null) { | |
return; | |
} | |
// Create an instance of GaussWienerFilterOptions class and set the radius size and smooth value. | |
GaussWienerFilterOptions options = new GaussWienerFilterOptions(5, 1.5); | |
options.setBrightness(1); | |
// Apply MedianFilterOptions filter to RasterImage object and Save the resultant image | |
rasterImage.filter(image.getBounds(), options); | |
image.save(destName, new GifOptions()); | |
} |
应用运动维纳滤波器
Aspose.PSD提供了MotionWienerFilterOptions类,用于在RasterImage上应用滤波器。下面提供的代码片段演示了如何将运动维纳滤波器应用于光栅图像。
String dataDir = Utils.getDataDir(ApplyMotionWienerFilters.class) + "Conversion/"; | |
String sourceFile = dataDir + "sample.psd"; | |
String destName = dataDir + "motion_filter_out.gif"; | |
try (Image image = Image.load(sourceFile); | |
// Cast the image into RasterImage | |
RasterImage rasterImage = (RasterImage) image) { | |
if (rasterImage == null) { | |
return; | |
} | |
// Create an instance of MotionWienerFilterOptions class and set the length, smooth value and angle. | |
MotionWienerFilterOptions options = new MotionWienerFilterOptions(50, 9, 90); | |
options.setGrayscale(true); | |
// Apply MedianFilterOptions filter to RasterImage object and Save the resultant image | |
rasterImage.filter(image.getBounds(), options); | |
image.save(destName, new GifOptions()); | |
} |
对图像应用校正滤波器
本文演示了使用Aspose.PSD for Java对图像执行校正滤波器的用法。Aspose.PSD API提供了高效且易于使用的方法来实现这一目标。Aspose.PSD for Java为滤波提供了BilateralSmoothingFilterOptions和SharpenFilterOptions类。BilateralSmoothingFilterOptions类需要一个整数作为大小。执行调整尺寸的步骤如下:
- 使用Image类公开的Load工厂方法加载图像。
- 将图像转换为RasterImage。
- 创建BilateralSmoothingFilterOptions和SharpenFilterOptions类的实例。
- 调用RasterImage.Filter方法,同时指定矩形作为图像边界和BilateralSmoothingFilterOptions类实例。
- 调用RasterImage.Filter方法,同时指定矩形作为图像边界和SharpenFilterOptions类实例。
- 调整对比度
- 设置亮度
- 保存结果。
以下代码片段显示了如何应用校正滤波器。
try (Image image = Image.load(dataDir + "sample.psd"); | |
// Convert the image into RasterImage. | |
RasterImage rasterImage = (RasterImage) image) { | |
if (rasterImage == null) { | |
return; | |
} | |
// Get Bounds[rectangle] of image. | |
Rectangle rect = image.getBounds(); | |
// Create an instance of BilateralSmoothingFilterOptions class with size | |
// parameter. | |
BilateralSmoothingFilterOptions bilateralOptions = new BilateralSmoothingFilterOptions(3); | |
// Create an instance of SharpenFilterOptions class. | |
SharpenFilterOptions sharpenOptions = new SharpenFilterOptions(); | |
// Supply the filters to raster image. | |
rasterImage.filter(rect, bilateralOptions); | |
rasterImage.filter(rect, sharpenOptions); | |
// Adjust the contrast accordingly. | |
rasterImage.adjustContrast(-10); | |
// Set brightness using Binarize Bradley | |
rasterImage.binarizeBradley(80); | |
// Save the results to output path. | |
rasterImage.save(dataDir + "a1_out.jpg"); | |
} |
使用Bradley阈值算法
图像阈值化在图形应用程序中有所应用。图像阈值化的目标是将像素分类为“暗”或“亮”。Aspose.PSD API允许您在转换图像时使用Bradley阈值化。以下代码片段演示了如何定义阈值并调用Bradley的阈值算法。
String dataDir = Utils.getDataDir(Bradleythreshold.class) + "Conversion/"; | |
String sourceFile = dataDir + "sample.psd"; | |
String destName = dataDir + "binarized_out.png"; | |
// Load an image | |
try (PsdImage image = (PsdImage) Image.load(sourceFile)) { | |
// Define threshold value, Call BinarizeBradley method and pass the threshold value as parameter and Save the output image | |
double threshold = 0.15; | |
image.binarizeBradley(threshold); | |
image.save(destName, new PngOptions()); | |
} |