Прилагане на медианни и Винер филтри

Прилагане на медианни и Винер филтри

Медианныят филтър е нелинеен цифров филтриращ метод, често използван за премахване на шум. Такова намаляване на шума е типична предварителна обработка, предназначена да подобри резултатите от по-късната обработка. Винер филтърът е средно квадратично грешково оптимален стационарен линеен филтър за изображения, деградирани от добавяне на шум и размазване. Чрез 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 за извършване на корекционни филтри върху изображение. Aspose.PSD APIs предоставят ефективни и лесни за използване методи за постигане на тази цел. Aspose.PSD за Java експонира класовете BilateralSmoothingFilterOptions и SharpenFilterOptions за филтрация. Класът BilateralSmoothingFilterOptions изисква цяло число за размер. Стъпките за извършване на преоразмеряване са толкова прости, колкото посоченото по-долу:

  1. Заредете изображение, използвайки метода на фабриката Load, изложен от класа Image.
  2. Преобразувайте изображението в RasterImage.
  3. Създайте инстанции на класовете BilateralSmoothingFilterOptions и SharpenFilterOptions.
  4. Извика на метода Filter на RasterImage, като посочите правоъгълника като граници на изображението и инстанцията на класа BilateralSmoothingFilterOptions.
  5. Извика на метода Filter на RasterImage, като посочите правоъгълника като граници на изображението и инстанция на класа SharpenFilterOptions.
  6. Настройте контраста.
  7. Задайте яркостта.
  8. Запазете резултатите.

Следният кодов откъс ви показва как да приложите корекционен филтър.

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");
}

Използване на Алгоритъма за Прага на Брадли

Прагът за изображение се използва в графични приложения. Целта на прага на изображението е да класифицира пикселите като “тъмни” или “светли”. Aspose.PSD API ви позволява да използвате прага на Брадли, докато преобразувате изображения. Следният кодов откъс ви показва как да дефинирате стойността на прага и след това да извикате алгоритъма за прага на Брадли.

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());
}