Применение медианного и Винеровского фильтров
Применение медианного и Винеровского фильтров
Медианный фильтр - это нелинейная цифровая фильтрационная техника, часто используемая для удаления шума. Такое уменьшение шума является типичным предварительным этапом обработки для улучшения результатов последующей обработки. Фильтр Винера - это оптимальный линейный стационарный фильтр среднеквадратичной ошибки (MSE) для изображений, загрязненных аддитивным шумом и размытием. С помощью Aspose.PSD для 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 для Java для выполнения фильтров коррекции на изображении. API Aspose.PSD предоставляет эффективные и простые в использовании методы для достижения этой цели. Для фильтрации в Java Aspose.PSD были представлены классы BilateralSmoothingFilterOptions и SharpenFilterOptions. Класс BilateralSmoothingFilterOptions требует целого числа в качестве размера. Шаги выполнения изменения размера следующие:
- Загрузить изображение с помощью метода фабрики Load, предоставленного классом Image.
- Преобразовать изображение в 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"); | |
} |
Использование алгоритма порога Брэдли
Пороговая обработка изображения используется в графических приложениях. Цель порогования изображения - классифицировать пиксели как “темные” или “светлые”. API Aspose.PSD позволяет использовать пороговую обработку Брэдли при преобразовании изображений. В следующем фрагменте кода показано, как определить пороговое значение, а затем вызвать алгоритм порога Брэдли.
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()); | |
} |