Прилагане на медианни и Винер филтри
Прилагане на медианни и Винер филтри
Медианныят филтър е нелинеен цифров филтриращ метод, често използван за премахване на шум. Такова намаляване на шума е типична предварителна обработка, предназначена да подобри резултатите от по-късната обработка. Винер филтърът е средно квадратично грешково оптимален стационарен линеен филтър за изображения, деградирани от добавяне на шум и размазване. Чрез 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 изисква цяло число за размер. Стъпките за извършване на преоразмеряване са толкова прости, колкото посоченото по-долу:
- Заредете изображение, използвайки метода на фабриката Load, изложен от класа Image.
- Преобразувайте изображението в RasterImage.
- Създайте инстанции на класовете BilateralSmoothingFilterOptions и SharpenFilterOptions.
- Извика на метода Filter на RasterImage, като посочите правоъгълника като граници на изображението и инстанцията на класа BilateralSmoothingFilterOptions.
- Извика на метода Filter на RasterImage, като посочите правоъгълника като граници на изображението и инстанция на класа 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"); | |
} |
Използване на Алгоритъма за Прага на Брадли
Прагът за изображение се използва в графични приложения. Целта на прага на изображението е да класифицира пикселите като “тъмни” или “светли”. 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()); | |
} |